Version in base suite: 1.4.17-1+deb13u1
Base version: survex_1.4.17-1+deb13u1
Target version: survex_1.4.22-1~bpo13+1
Base file: /srv/ftp-master.debian.org/ftp/pool/main/s/survex/survex_1.4.17-1+deb13u1.dsc
Target file: /srv/ftp-master.debian.org/policy/pool/main/s/survex/survex_1.4.22-1~bpo13+1.dsc
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual.pdf |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/aven.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cavern.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cmap.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cmdline.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/compass.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/datafile.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/diffpos.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/dump3d.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/environment.pickle |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/extend.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/future.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/genhowto.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/getstart.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/img.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/index.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/intro.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/maillist.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/sorterr.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/survex.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/survexport.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/svxhowto.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/walls.doctree |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/_static/forkme_right_darkblue_121621.png |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/objects.inv |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/bg.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ca.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/cs.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/de.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/de_CH.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/el.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/en.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/en_US.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/es.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/fr.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/hu.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/3d.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/Aven.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/err.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/plt.ico |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/plt.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/pos.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/svx.iconset.zip |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/id.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/it.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pl.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pt.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pt_BR.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ro.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ru.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/sk.msg |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/unifont.pixelfont |binary
/srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/zh_CN.msg |binary
survex-1.4.22/COPYING | 44
survex-1.4.22/INSTALL | 9
survex-1.4.22/Makefile.am | 2
survex-1.4.22/Makefile.in | 47
survex-1.4.22/NEWS | 368
survex-1.4.22/OLDNEWS | 12
survex-1.4.22/aclocal.m4 | 91
survex-1.4.22/compile | 35
survex-1.4.22/config.guess | 111
survex-1.4.22/config.h.in | 48
survex-1.4.22/config.sub | 942 +-
survex-1.4.22/configure | 2360 +++---
survex-1.4.22/configure.ac | 54
survex-1.4.22/debian/changelog | 45
survex-1.4.22/debian/control | 4
survex-1.4.22/debian/patches/fix-enter-in-search-control.patch | 21
survex-1.4.22/debian/patches/fix-find-stations-search-box-width.patch | 23
survex-1.4.22/debian/patches/series | 2
survex-1.4.22/debian/watch | 11
survex-1.4.22/depcomp | 8
survex-1.4.22/doc/HACKING.htm | 14
survex-1.4.22/doc/Makefile.in | 5
survex-1.4.22/doc/NEWS.htm | 375
survex-1.4.22/doc/OLDNEWS.htm | 12
survex-1.4.22/doc/aven.1 | 21
survex-1.4.22/doc/aven.rst | 11
survex-1.4.22/doc/cavern.1 | 17
survex-1.4.22/doc/cavern.rst | 5
survex-1.4.22/doc/cmdline.rst | 6
survex-1.4.22/doc/compass.rst | 144
survex-1.4.22/doc/datafile.rst | 264
survex-1.4.22/doc/diffpos.1 | 10
survex-1.4.22/doc/dump3d.1 | 10
survex-1.4.22/doc/extend.1 | 10
survex-1.4.22/doc/getstart.rst | 47
survex-1.4.22/doc/index.htm | 6
survex-1.4.22/doc/intro.rst | 9
survex-1.4.22/doc/manual/.buildinfo | 2
survex-1.4.22/doc/manual/_static/alabaster.css | 115
survex-1.4.22/doc/manual/_static/base-stemmer.js | 476 +
survex-1.4.22/doc/manual/_static/basic.css | 8
survex-1.4.22/doc/manual/_static/doctools.js | 11
survex-1.4.22/doc/manual/_static/documentation_options.js | 2
survex-1.4.22/doc/manual/_static/english-stemmer.js | 1066 ++
survex-1.4.22/doc/manual/_static/github-banner.svg | 5
survex-1.4.22/doc/manual/_static/language_data.js | 193
survex-1.4.22/doc/manual/_static/pygments.css | 124
survex-1.4.22/doc/manual/_static/searchtools.js | 181
survex-1.4.22/doc/manual/_static/sphinx_highlight.js | 67
survex-1.4.22/doc/manual/aven.htm | 49
survex-1.4.22/doc/manual/cavern.htm | 43
survex-1.4.22/doc/manual/cmap.htm | 38
survex-1.4.22/doc/manual/cmdline.htm | 60
survex-1.4.22/doc/manual/compass.htm | 172
survex-1.4.22/doc/manual/datafile.htm | 339
survex-1.4.22/doc/manual/diffpos.htm | 38
survex-1.4.22/doc/manual/dump3d.htm | 38
survex-1.4.22/doc/manual/extend.htm | 38
survex-1.4.22/doc/manual/future.htm | 38
survex-1.4.22/doc/manual/genhowto.htm | 38
survex-1.4.22/doc/manual/genindex.htm | 38
survex-1.4.22/doc/manual/getstart.htm | 81
survex-1.4.22/doc/manual/img.htm | 38
survex-1.4.22/doc/manual/index.htm | 40
survex-1.4.22/doc/manual/intro.htm | 51
survex-1.4.22/doc/manual/maillist.htm | 38
survex-1.4.22/doc/manual/search.htm | 17
survex-1.4.22/doc/manual/searchindex.js | 2
survex-1.4.22/doc/manual/sorterr.htm | 38
survex-1.4.22/doc/manual/survex.htm | 38
survex-1.4.22/doc/manual/survexport.htm | 38
survex-1.4.22/doc/manual/svxhowto.htm | 38
survex-1.4.22/doc/manual/walls.htm | 150
survex-1.4.22/doc/sorterr.1 | 10
survex-1.4.22/doc/survex.7 | 10
survex-1.4.22/doc/survexport.1 | 10
survex-1.4.22/doc/walls.rst | 124
survex-1.4.22/install-sh | 6
survex-1.4.22/lib/ChineseSimplified.isl | 252
survex-1.4.22/lib/ChineseTraditional.isl | 6
survex-1.4.22/lib/EnglishBritish.isl | 35
survex-1.4.22/lib/Greek.isl | 802 +-
survex-1.4.22/lib/Indonesian.isl | 11
survex-1.4.22/lib/Makefile.am | 2
survex-1.4.22/lib/Makefile.in | 7
survex-1.4.22/lib/bg.po | 155
survex-1.4.22/lib/ca.po | 165
survex-1.4.22/lib/cs.po | 3932 ++++++++++
survex-1.4.22/lib/de.po | 164
survex-1.4.22/lib/de_CH.po | 164
survex-1.4.22/lib/el.po | 149
survex-1.4.22/lib/en_US.po | 165
survex-1.4.22/lib/es.po | 164
survex-1.4.22/lib/extract-msgs.pl | 10
survex-1.4.22/lib/fr.po | 178
survex-1.4.22/lib/hu.po | 153
survex-1.4.22/lib/icons/Makefile.in | 5
survex-1.4.22/lib/id.po | 164
survex-1.4.22/lib/images/Makefile.in | 5
survex-1.4.22/lib/it.po | 164
survex-1.4.22/lib/pl.po | 258
survex-1.4.22/lib/pt.po | 163
survex-1.4.22/lib/pt_BR.po | 163
survex-1.4.22/lib/ro.po | 163
survex-1.4.22/lib/ru.po | 176
survex-1.4.22/lib/sk.po | 164
survex-1.4.22/lib/survex.lang | 2
survex-1.4.22/lib/survex.pot | 147
survex-1.4.22/lib/zh_CN.po | 150
survex-1.4.22/missing | 8
survex-1.4.22/src/Makefile.am | 13
survex-1.4.22/src/Makefile.in | 20
survex-1.4.22/src/aboutdlg.cc | 5
survex-1.4.22/src/aboutdlg.h | 6
survex-1.4.22/src/aven.cc | 9
survex-1.4.22/src/aven.h | 10
survex-1.4.22/src/aven.rc | 1
survex-1.4.22/src/avenprcore.cc | 10
survex-1.4.22/src/avenprcore.h | 6
survex-1.4.22/src/aventreectrl.cc | 8
survex-1.4.22/src/aventreectrl.h | 7
survex-1.4.22/src/cavern.c | 18
survex-1.4.22/src/cavern.h | 98
survex-1.4.22/src/cavernlog.cc | 18
survex-1.4.22/src/cavernlog.h | 6
survex-1.4.22/src/cmdline.c | 6
survex-1.4.22/src/cmdline.h | 4
survex-1.4.22/src/commands.c | 466 -
survex-1.4.22/src/commands.h | 13
survex-1.4.22/src/datain.c | 932 +-
survex-1.4.22/src/datain.h | 10
survex-1.4.22/src/date.c | 4
survex-1.4.22/src/date.h | 4
survex-1.4.22/src/debug.h | 4
survex-1.4.22/src/diffpos.c | 4
survex-1.4.22/src/dump3d.c | 4
survex-1.4.22/src/export.cc | 312
survex-1.4.22/src/export.h | 9
survex-1.4.22/src/export3d.cc | 18
survex-1.4.22/src/export3d.h | 7
survex-1.4.22/src/exportfilter.h | 22
survex-1.4.22/src/extend.c | 12
survex-1.4.22/src/filelist.h | 4
survex-1.4.22/src/filename.c | 18
survex-1.4.22/src/filename.h | 4
survex-1.4.22/src/gdalexport.cc | 8
survex-1.4.22/src/gdalexport.h | 4
survex-1.4.22/src/gdtconvert | 4
survex-1.4.22/src/getopt.c | 41
survex-1.4.22/src/getopt.h | 5
survex-1.4.22/src/getopt1.c | 23
survex-1.4.22/src/gettexttomsg.pl | 4
survex-1.4.22/src/gfxcore.cc | 129
survex-1.4.22/src/gfxcore.h | 10
survex-1.4.22/src/gla-gl.cc | 80
survex-1.4.22/src/gla.h | 56
survex-1.4.22/src/glbitmapfont.cc | 6
survex-1.4.22/src/glbitmapfont.h | 6
survex-1.4.22/src/gllogerror.h | 6
survex-1.4.22/src/gpx.cc | 12
survex-1.4.22/src/gpx.h | 4
survex-1.4.22/src/guicontrol.cc | 4
survex-1.4.22/src/guicontrol.h | 6
survex-1.4.22/src/hash.c | 4
survex-1.4.22/src/hash.h | 4
survex-1.4.22/src/hpgl.cc | 4
survex-1.4.22/src/hpgl.h | 4
survex-1.4.22/src/img.c | 30
survex-1.4.22/src/img.h | 4
survex-1.4.22/src/img_for_survex.c | 4
survex-1.4.22/src/img_for_survex.h | 4
survex-1.4.22/src/imgtest.c | 4
survex-1.4.22/src/json.cc | 4
survex-1.4.22/src/json.h | 4
survex-1.4.22/src/kml.cc | 33
survex-1.4.22/src/kml.h | 7
survex-1.4.22/src/labelinfo.h | 6
survex-1.4.22/src/listpos.c | 8
survex-1.4.22/src/listpos.h | 8
survex-1.4.22/src/log.cc | 4
survex-1.4.22/src/log.h | 6
survex-1.4.22/src/mainfrm.cc | 54
survex-1.4.22/src/mainfrm.h | 7
survex-1.4.22/src/matrix.c | 21
survex-1.4.22/src/matrix.h | 4
survex-1.4.22/src/message.c | 7
survex-1.4.22/src/message.h | 4
survex-1.4.22/src/model.cc | 4
survex-1.4.22/src/model.h | 6
survex-1.4.22/src/moviemaker-legacy.cc | 631 -
survex-1.4.22/src/moviemaker.cc | 16
survex-1.4.22/src/moviemaker.h | 4
survex-1.4.22/src/namecmp.c | 4
survex-1.4.22/src/namecmp.h | 4
survex-1.4.22/src/namecompare.cc | 4
survex-1.4.22/src/namecompare.h | 6
survex-1.4.22/src/netartic.c | 65
survex-1.4.22/src/netartic.h | 4
survex-1.4.22/src/netbits.c | 20
survex-1.4.22/src/netbits.h | 4
survex-1.4.22/src/netskel.c | 36
survex-1.4.22/src/netskel.h | 4
survex-1.4.22/src/network.c | 53
survex-1.4.22/src/network.h | 4
survex-1.4.22/src/osalloc.h | 4
survex-1.4.22/src/out.h | 10
survex-1.4.22/src/pos.cc | 37
survex-1.4.22/src/pos.h | 8
survex-1.4.22/src/printing.cc | 16
survex-1.4.22/src/printing.h | 7
survex-1.4.22/src/readval.c | 32
survex-1.4.22/src/readval.h | 17
survex-1.4.22/src/sorterr.c | 4
survex-1.4.22/src/str.c | 4
survex-1.4.22/src/str.h | 4
survex-1.4.22/src/survexport.cc | 86
survex-1.4.22/src/thgeomag.c | 4
survex-1.4.22/src/thgeomag.h | 4
survex-1.4.22/src/useful.h | 4
survex-1.4.22/src/validate.c | 4
survex-1.4.22/src/validate.h | 4
survex-1.4.22/src/vector3.cc | 4
survex-1.4.22/src/vector3.h | 4
survex-1.4.22/src/wrapaven.c | 26
survex-1.4.22/src/wrapsurvexport.c | 4
survex-1.4.22/src/wx.h | 46
survex-1.4.22/src/z_getopt.c | 41
survex-1.4.22/survex.iss.in | 9
survex-1.4.22/survex.spec | 56
survex-1.4.22/survex.spec.in | 52
survex-1.4.22/test-driver | 8
survex-1.4.22/tests/3dexport.dump | 4
survex-1.4.22/tests/3dtopos.tst | 11
survex-1.4.22/tests/Makefile.am | 14
survex-1.4.22/tests/Makefile.in | 139
survex-1.4.22/tests/aven.tst | 17
survex-1.4.22/tests/baddatacylpolar.out | 19
survex-1.4.22/tests/baddatacylpolar.svx | 14
survex-1.4.22/tests/baddatanormal.out | 54
survex-1.4.22/tests/baddatanormal.svx | 30
survex-1.4.22/tests/baddatanosurv.out | 14
survex-1.4.22/tests/baddatanosurv.svx | 12
survex-1.4.22/tests/badinc5.mak | 6
survex-1.4.22/tests/badinc5.out | 4
survex-1.4.22/tests/badmak.mak | 18
survex-1.4.22/tests/badmak.out | 9
survex-1.4.22/tests/badomit.out | 29
survex-1.4.22/tests/badomit.srv | 4
survex-1.4.22/tests/badopts.out | 9
survex-1.4.22/tests/badopts.srv | 3
survex-1.4.22/tests/badreadings.out | 74
survex-1.4.22/tests/badreadings.srv | 15
survex-1.4.22/tests/cavern.tst | 81
survex-1.4.22/tests/cmd_cartesian_bad.out | 8
survex-1.4.22/tests/cmd_cartesian_bad.svx | 4
survex-1.4.22/tests/cmd_dummy.svx | 10
survex-1.4.22/tests/cmd_entrance_bad.out | 3
survex-1.4.22/tests/cmd_entrance_bad.svx | 2
survex-1.4.22/tests/cmd_fix.out | 6
survex-1.4.22/tests/cmd_fix_bad.out | 8
survex-1.4.22/tests/cmd_fix_bad2.out | 4
survex-1.4.22/tests/cmd_instruments.svx | 14
survex-1.4.22/tests/cmd_instruments_bad.out | 46
survex-1.4.22/tests/cmd_instruments_bad.svx | 15
survex-1.4.22/tests/cmd_set.out | 27
survex-1.4.22/tests/cmd_set.pos | 1
survex-1.4.22/tests/cmd_set.svx | 11
survex-1.4.22/tests/cmd_team.svx | 1
survex-1.4.22/tests/compare.tst | 45
survex-1.4.22/tests/csbad.out | 3
survex-1.4.22/tests/diffpos.tst | 24
survex-1.4.22/tests/doubleinc.out | 6
survex-1.4.22/tests/dump3d.tst | 15
survex-1.4.22/tests/equatenosuchstn.out | 2
survex-1.4.22/tests/exporterr1b.out | 4
survex-1.4.22/tests/extend.tst | 18
survex-1.4.22/tests/fixfeet.mak | 2
survex-1.4.22/tests/flags.out | 2
survex-1.4.22/tests/folder.mak | 2
survex-1.4.22/tests/hanging_cpt.svx | 8
survex-1.4.22/tests/hpglexport.hpgl | 4
survex-1.4.22/tests/hpglexportanon.hpgl | 18
survex-1.4.22/tests/hpglexportanon.svx | 20
survex-1.4.22/tests/imgtest.tst | 12
survex-1.4.22/tests/kmlexport.kml | 2
survex-1.4.22/tests/kmlexportanon.kml | 47
survex-1.4.22/tests/kmlexportanon.svx | 20
survex-1.4.22/tests/lrud.out | 2
survex-1.4.22/tests/mixedeols.out | 7
survex-1.4.22/tests/mixedeols.svx | 5
survex-1.4.22/tests/multinosurv.dump | 7
survex-1.4.22/tests/multinosurv.svx | 7
survex-1.4.22/tests/nomeasure.out | 2
survex-1.4.22/tests/nosurv.svx | 2
survex-1.4.22/tests/nosurvey2.out | 2
survex-1.4.22/tests/nosurveyhanging.out | 2
survex-1.4.22/tests/nosurveyhanging2.out | 2
survex-1.4.22/tests/noteam.out | 2
survex-1.4.22/tests/omitclino.pos | 1
survex-1.4.22/tests/omitclino.svx | 3
survex-1.4.22/tests/passage.svx | 16
survex-1.4.22/tests/pltexport.plt | 8
survex-1.4.22/tests/pltexport.svx | 3
survex-1.4.22/tests/reenterlots.out | 10
survex-1.4.22/tests/reenterwarn.out | 2
survex-1.4.22/tests/singlefixerr.out | 23
survex-1.4.22/tests/smoke.tst | 18
survex-1.4.22/tests/stationnotes.out | 23
survex-1.4.22/tests/stationnotes.pos | 12
survex-1.4.22/tests/stationnotes.svx | 57
survex-1.4.22/tests/surveytypo.out | 6
survex-1.4.22/tests/surveytypo.svx | 2
survex-1.4.22/tests/unknowndirective.out | 113
survex-1.4.22/tests/unknowndirective.srv | 36
survex-1.4.22/tests/utm.mak | 4
survex-1.4.22/tests/walls.dump | 42
survex-1.4.22/tests/walls.out | 75
survex-1.4.22/tests/walls.srv | 33
survex-1.4.22/tests/wallsdecl.dump | 2
survex-1.4.22/tests/wallsdiving.dump | 20
survex-1.4.22/tests/wallsdiving.out | 32
survex-1.4.22/tests/wallsdiving.srv | 15
survex-1.4.22/vim/Makefile.in | 5
survex-1.4.22/vim/compiler/survex.vim | 4
survex-1.4.22/vim/ftplugin/survex.vim | 4
survex-1.4.22/vim/syntax/survex-err.vim | 4
survex-1.4.22/vim/syntax/survex.vim | 11
380 files changed, 16670 insertions(+), 6412 deletions(-)
dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp0mz2rhms/survex_1.4.17-1+deb13u1.dsc: no acceptable signature found
dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp0mz2rhms/survex_1.4.22-1~bpo13+1.dsc: no acceptable signature found
diff -Nru survex-1.4.17/COPYING survex-1.4.22/COPYING
--- survex-1.4.17/COPYING 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/COPYING 2026-03-21 21:06:18.000000000 +0000
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@
PROGRAMS), 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 Programs
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,17 +303,15 @@
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 St, Fifth Floor, Boston, MA 02110-1301 USA
-
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see .
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -330,11 +328,11 @@
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
- , 1 April 1989
- Ty Coon, President of Vice
+ , 1 April 1989
+ Moe Ghoul, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
diff -Nru survex-1.4.17/INSTALL survex-1.4.22/INSTALL
--- survex-1.4.17/INSTALL 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/INSTALL 2026-05-03 19:23:23.000000000 +0000
@@ -20,13 +20,15 @@
but typically installing the development package will automatically install
the corresponding runtime package too.
-* The main dependency is wxWidgets 3.0 or later - if there's a suitable
+* The main dependency is wxWidgets 3.2 or later - if there's a suitable
wxWidgets package for your platform, then just use that.
Otherwise download the source code from https://wxwidgets.org/ and
follow their build instructions. IMPORTANT: You must enable OpenGL
support by adding --with-opengl to the configure command line.
+ The last release to support wxWidgets 3.0 was Survex 1.4.17.
+
* You'll also need a working C and C++ compiler (with support for C99 and
C++11), and also the OpenGL development libraries if these aren't pulled in
by installing wxWidgets.
@@ -37,8 +39,9 @@
* Optionally, GDAL is used to support reading geodata files. If not available
this feature is disabled.
-* Optionally, FFMPEG is used if available to implement Aven's movie export
- feature. If not available this feature is disabled.
+* Optionally, FFmpeg is used if available to implement Aven's movie export
+ feature. You need libavcodec >= 57, which seems to correspond to FFmpeg
+ >= 3.2.
Then at a shell prompt, unpack the source code, cd into the directory, and
enter the following commands:
diff -Nru survex-1.4.17/Makefile.am survex-1.4.22/Makefile.am
--- survex-1.4.17/Makefile.am 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/Makefile.am 2026-05-03 23:52:57.000000000 +0000
@@ -9,7 +9,7 @@
DIST_SUBDIRS = $(SUBDIRS) vim
EXTRA_DIST = TODO OLDNEWS\
- desc.txt desc-aven.txt survex.spec
+ desc.txt desc-aven.txt
AUTHORS: doc/AUTHORS.htm
w3m -dump doc/AUTHORS.htm > AUTHORS
diff -Nru survex-1.4.17/Makefile.in survex-1.4.22/Makefile.in
--- survex-1.4.17/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -101,7 +101,7 @@
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = survex.iss survex.spec
+CONFIG_CLEAN_FILES = survex.iss
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -157,9 +157,9 @@
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(srcdir)/survex.iss.in $(srcdir)/survex.spec.in AUTHORS \
- COPYING ChangeLog INSTALL NEWS README TODO compile \
- config.guess config.sub depcomp install-sh missing
+ $(srcdir)/survex.iss.in AUTHORS COPYING ChangeLog INSTALL NEWS \
+ README TODO compile config.guess config.sub depcomp install-sh \
+ missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -346,7 +346,7 @@
# want to distribute the files there.
DIST_SUBDIRS = $(SUBDIRS) vim
EXTRA_DIST = TODO OLDNEWS\
- desc.txt desc-aven.txt survex.spec
+ desc.txt desc-aven.txt
RUN_EXE = DISPLAY= wine
PROJ_PREFIX = /usr/i686-w64-mingw32
@@ -404,8 +404,6 @@
-rm -f config.h stamp-h1
survex.iss: $(top_builddir)/config.status $(srcdir)/survex.iss.in
cd $(top_builddir) && $(SHELL) ./config.status $@
-survex.spec: $(top_builddir)/config.status $(srcdir)/survex.spec.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
@@ -512,6 +510,7 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
@@ -587,6 +586,10 @@
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
+dist-bzip3: distdir
+ tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3
+ $(am__post_remove_distdir)
+
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
@@ -631,6 +634,8 @@
eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.bz3*) \
+ bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
@@ -818,18 +823,18 @@
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
- dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
- dist-zstd distcheck distclean distclean-generic distclean-hdr \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
+ dist-bzip3 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip dist-zstd distcheck distclean distclean-generic \
+ distclean-hdr distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-am uninstall uninstall-am
.PRECIOUS: Makefile
diff -Nru survex-1.4.17/NEWS survex-1.4.22/NEWS
--- survex-1.4.17/NEWS 2025-03-19 23:08:55.000000000 +0000
+++ survex-1.4.22/NEWS 2026-06-23 21:21:03.000000000 +0000
@@ -1,9 +1,367 @@
+Changes in 1.4.22 (2026-06-23):
+
+* cavern:
+
+ + Add more explicit support for station notes with new reading types `note`
+ (for a quoted or single-word note) and `noteall` (for a note which lasts
+ for the rest of the line).
+
+ + Allow omitting any/all dimensions in passage data. Dimensions not in
+ the style are handled like dimensions explicitly marked as omitted.
+ This may be helpful in cases where only some dimensions have been
+ measured, but probably more usefully it allows using `*data passage
+ note` or `*data passage noteall` to record station descriptions in
+ a survey where splays were used instead of recording LRUD. Suggested by
+ Andrew Atkinson.
+
+ + "ignoreall" as the final reading in style "nosurvey" was getting
+ ignored - e.g. in:
+
+ *data nosurvey station ignoreall
+
+ + Report a clearer error for a reading after `ignoreall`:
+
+ Reading “...” not allowed after reading “ignoreall”
+
+ Previously we either reported:
+
+ Too few readings for data style “...”
+
+ or:
+
+ End of line not blank
+
+ + Report `NEWLINE can't be the last reading` when the readings list ends
+ `ignoreall newline` (we were reporting the less clear `Too few readings for
+ data style "..."`), e.g.:
+
+ *data cylpolar station depth ignoreall newline
+
+ + Fix reported context for `NEWLINE can't be the last reading` error to
+ indicate the whole `NEWLINE` token.
+
+* Manual:
+
+ + Document Walls `#SYMBOL` handling.
+
+ + Fix typos.
+
+* Test suite:
+
+ + Add test coverage for `ignore`/`ignoreall` in `*data passage`.
+
+ + Add test coverage for `*data normal` error cases.
+
+ + Improve test coverage for `*data cylpolar` and `*data nosurvey` error
+ cases.
+
+* (Microsoft Windows version): aven: Fix the extra blank window which opened
+ under aven's window in recent releases. Reported by Juan Corrin. Patch
+ from Philip Schuchardt. Fixes #146.
+
+Changes in 1.4.21 (2026-05-20):
+
+* cavern:
+
+ + Fix missing reports of unconnected survey stations. We aim to report at
+ least one station in every unconnected piece of survey. 1.4.10 added code
+ to handle when a piece had been simplified to only anonymous stations, but
+ this was buggy and was only checking the first entry in the removed
+ traverse list. We now check the full list, and if we somehow fail to find
+ a neighbouring named station, we now report the anonymous station (we give
+ the filename and line number which is enough context by itself). Reported
+ by Paweł Gogolak.
+
+ + `*entrance` now also suppresses unused fixed point warnings when it appears
+ before the `*fix` (previously this only worked for `*entrance` after
+ `*fix`).
+
+ + `*fix` with SDs now sets the "fixed" flag on the station in the .3d file.
+
+ + Pick better 3d file separator for Walls data (previously cavern would pick
+ `.` for the separator in a pure Walls dataset, even if it was used in
+ station names). Walls uses `:` as a prefix separator, so now cavern takes
+ into account which characters are allowed in Walls station names when
+ picking the separator to use in the .3d file. For a pure Walls dataset, it
+ will pick `:`, so Walls station names in the .3d file should match the
+ names as shown in Walls. If a dataset mixes data in Walls format with
+ Survex and/or Compass data, then it's possible `:` is used in a Survex or
+ Compass station name - if so a different separator will be chosen.
+
+ + The Walls manual says to represent underwater data using the combination of
+ `TAPE=SS` with `ORDER=DA` or `ORDER=AD`, so we now map this to Survex's
+ diving style. Issue highlighted by a dataset from Darek Lubomski.
+
+ + In Walls data, downgrade the "Unknown command" error to a warning for some
+ invalid directives which Walls quietly accepts. Issue highlighted by a
+ dataset from Darek Lubomski.
+
+ + In Walls data, `#note` and `#flags` are meant to suppress unused fixed
+ point warnings, but only did if they came after the `#fix`. Also `#flags`
+ without any flags didn't suppress the warning but now does.
+
+ + In Walls data, the word `fix` in `#flags` no longer sets the "fixed" flag
+ in the .3d file - we now only set it for stations used in `#fix`. This
+ seems a more logical approach, since `#flags` is just free-form text which
+ Walls itself doesn't ascribe particular semantics to. (The word `entrance`
+ in `#flags` still sets the "entrance" flag since Walls lacks a way to
+ explicitly mark entrances.)
+
+ + Check value after `TAPE=` in Walls data and give an error if it's not
+ valid.
+
+ + In Walls data, we now reject multi-component readings with a decimal point
+ in anything but the final component. Some examples of invalid readings
+ which now give an error with cavern are `12.5i3`. `12.5:29`, `12.5:29:30`
+ and `12:29.5:30`.
+
+* aven/survexport:
+
+ + Allow exporting/not exporting anonymous stations. The default is chosen as
+ most appropriate for each export format.
+
+ + Fix memory leak in PLT export.
+
+ + Fix memory leak and speed up SVG export.
+
+* (Microsoft Windows version): aven: Try to fix the extra blank window which
+ opens under aven's window in recent releases. Reported by Juan Corrin.
+
+* (Microsoft Windows version): Try to ensure output files are fully written to
+ disk before we close them. Should fix #147, reported by Philip Schuchardt.
+
+* Documentation:
+
+ + Clarify purpose of `*infer exports`. Highlighted by Philip Sargent.
+
+ + Clarify `*infer plumbs` works for any angle units, not just degrees.
+
+ + Say "directive" instead of "command" in Walls docs since this is the
+ terminology Walls uses.
+
+ + Document Walls filename case mismatch issue. Issue highlighted by a
+ dataset from Darek Lubomski.
+
+ + Document that the last official release of Walls uses an old IGRF version.
+
+ + Improve section on submitting documentation changes.
+
+ + Minor improvements to wording.
+
+ + HACKING.htm: autoconf 2.59 is the current minimum.
+
+* Test suite: Add test coverage for Walls compass/clino in mils.
+
+* Minor improvements to French translation.
+
+* Merge updates to Polish translation from Paweł Gogolak.
+
+* Merge updates to Russian translation from Vasily Vl. Suhachev.
+
+* (Linux version): survex.spec: We no longer provide this. It doesn't work
+ with current Fedora because some dependencies have been renamed, which
+ suggests nobody is regularly using it, which isn't a surprise as there's
+ now a Fedora package of Survex. Reported by Bill Gee.
+
+* Fix warnings about old-style parameter lists in the imported getopt code.
+
+* Require at least automake 1.14 to bootstrap the source tree from git. This
+ was released in 2013 so should be available everywhere now.
+
+Changes in 1.4.20 (2026-03-04):
+
+* aven: The viewing volume now includes the vertical extent of terrain which
+ fixes problems with the terrain being clipped when there's an extreme
+ vertical difference between the terrain and the cave. Hopefully fixes #148,
+ reported by Chris Curry.
+
+* aven: Improve handling of the scale when reloading an updated version of the
+ .3d file already being viewed.
+
+* aven: Add missing shortcuts to Orientation menu and "Reverse Direction" menu
+ item. Reported by echarlie's friend.
+
+* aven: Where possible use L for "Elevation" menu accelerator, which matches
+ the shortcut key.
+
+* cavern: Improve handling of Walls percentage gradient. Support explicit
+ percentage override ('p' suffix) and fix handling of overriding percentage
+ gradient to specify a plumb. Reported by echarlie on #survex.
+
+* cavern: Support d:m:s for Walls bearings and gradients. Reported by echarlie
+ on #survex.
+
+* cavern: Add `gps` as alias for `position` team role. See:
+ https://github.com/therion/therion/issues/709
+
+* cavern: Warn for no blank after token in *cartesian (another case related to
+ #135).
+
+* manual: Document N, S, E and W shortcut keys for aven.
+
+* manual: Mark up codes and tokens in tables which avoids them getting
+ word-wrapped and hyphenated. It also means they now get rendered in the
+ tables the same way they are referred to in the text.
+
+* manual: Separate each block of *instrument examples.
+
+* manual: Consistently document versions where features were deprecated.
+
+* Eliminate out-of-date postal address from licensing information. Direct
+ people who somehow didn't receive the licence text to a copy on the FSF
+ website instead.
+
+Changes in 1.4.19 (2025-12-17):
+
+* aven/survexport: Rework PLT export to use 2 character escapes for spaces
+ and other characters which aren't valid in Compass station names. We were
+ using 3 character escapes, but that's unhelpful since Compass has a 12
+ character station name limit.
+
+* cavern: The syntax of *instrument commands is now checked and a warning
+ issued for problems. The information in the command is still not yet used.
+
+* cavern: Improve description of --quiet option. Reported by Wookey.
+
+* (Microsoft Windows version): The installer now always updates DLLs it
+ installs rather than skipping DLLs which declare the same version number.
+ This avoids problems when DLLs change in an upwardly but not downwardly
+ compatible way but keep the same version number. It also means downgrading
+ now gives an install more like installing the older version from scratch
+ would. Our DLLs are all private and installed into our own install directory
+ so there are no concerns with breaking other installed software. Fixes #145.
+ Reported by Footleg and Juan Corrin.
+
+* Fill in some missing Czech translations.
+
+* Update unofficial Inno Setup translations for the installer.
+
+* We now require at least FFmpeg >= 3.2 to build Survex. This version was
+ released in 2016 so should be easily available everywhere now.
+
+* (Microsoft Windows version): Drop workaround for wx-config --rescomp not
+ working as this has now been fixed in the mingw package of wxWidgets.
+
+* Test suite:
+
+ + Add test coverage for `*data normal` without `clino`.
+
+Changes in 1.4.18 (2025-11-04):
+
+* aven: Fix "Enter" in search control to zoom to results. This was broken
+ by the switch to wxSearchCtrl in 1.4.17.
+
+* aven: Fix "Find stations" search box width with wxWidgets >= 3.2.7. Patch
+ https://github.com/ojwb/survex/pull/15 from Thomas Holder.
+
+* aven: (Microsoft Windows version): Fix sizing of indicators (scalebar,
+ compass, clino, colour key) on HiDPI monitors. Fixes #144, reported by Juan
+ Corrin.
+
+* aven/survexport: Set UTM zone and datum in exported Compass PLT.
+
+* cavern: Avoid duplicate errors/warnings with unconnected data. Since 1.4.10,
+ unconnected data is only a warning but that resulted in us running some
+ checks on the survey tree twice, which could result in duplicate
+ errors/warnings.
+
+* cavern: Fix parsing of hex digits in *set. Hex digits a-f were incorrectly
+ being handled as 0-5, so 0x0a was byte 0 not byte 10.
+
+* cavern: We now track the column as well as file:line where a station or
+ survey name was used, so diagnostics which use these locations now report
+ a column number too.
+
+* cavern: Show context if proj can't convert coords. We only do this for .svx
+ files currently as it is more complex for Compass and Walls data.
+
+* cavern: Fix reported column for error for `-` for Walls tape field.
+ In this context, Walls requires 2 or more `-` to indicate an omitted field.
+
+* cavern: Compass MAK file parsing improvements:
+
+ + Comments are now skipped. Previously a commented-out MAK file command
+ would still be interpreted by cavern, which was incorrect.
+
+ + Whitespace handling has been adjusted to more closely match Compass.
+
+ + Unknown commands are now warned about. Compass seems to quietly ignore
+ unknown commands, but it seems helpful for cavern to report them as it
+ will help identify any bugs in Survex's parsing of MAK files, and any
+ new or undocumented MAK file commands which we don't support. It can also
+ help detect typos in data entry.
+
+ + We now skip to the closing `;` for unknown commands and commands we
+ ignore as not relevant to us, whereas previously we'd just skip the
+ initial character which gives the type of command and then look for
+ another command. This doesn't seem to make any difference in practice as
+ none of these commands appear to be able to contain text which could be
+ interpreted as a different valid Compass MAK file command.
+
+* (Microsoft Windows version): The toolchain we use to build this version
+ seems to have changed in an unhelpful way. We've got the build working
+ again, but when aven is launched a black window opens first, then the
+ aven window opens over the top. The black window stays around until
+ aven is closed. This extra window doesn't really get in the way of using
+ aven, but it's not supposed to be there. It doesn't seem to be due to a
+ change in the Survex code as the 1.2.17 build doesn't do this, but a
+ rebuild of 1.2.17 with just the minimum of build system changes does.
+ If you have suitable skills help fixing this would be much appreciated.
+
+* (Microsoft Windows version): Use unlocked file I/O if available, like we
+ already do for Unix. Unlocked file I/O can be much faster in some cases (we
+ don't need the locking as we don't do multithreaded file I/O).
+
+* (Microsoft Windows version): Fix compiler warning in wrapaven.c.
+
+* (Microsoft Windows version): Work around wx-config --rescomp no longer
+ working. The mingw package of wxWidgets has started to return an empty
+ string here. We don't support building with MSVC, so hardcoding `windres`
+ here isn't really a problem in practice.
+
+* Manual: Document that *set eol default includes x1A (Ctrl-Z) to provide
+ compatibility with old DOS text files (it always has done but was missing
+ from the documentation).
+
+* Merge updates to Russian translation.
+
+* Add the start of a Czech translation.
+
+* Update unofficial Inno Setup translations for the installer.
+
+* Drop support for wxWidgets < 3.2. It is starting to become hard to keep
+ everything working with 3.0.0 and the time and effort seems better directed
+ to other things. The last 3.0.x release was 3.0.5.1, released 2020-05-02.
+ 3.2.0 was released 2022-07-06 and it seems everywhere with wxWidgets packages
+ upgraded to 3.2.x some time ago.
+
+* Test suite:
+
+ + cavern.tst: Test more mixed line ending cases.
+
+ + Turn off tests involving aven and survexport on mingw, as we can no longer
+ seem to run these programs during the build. Rebuilding the last commit
+ that worked now fails, so this is not due to a change in the Survex code.
+ There is no error message, but bash shows exit code 127 which means it
+ failed to run the command.
+
+ + Improve handling of VERBOSE in tests. Previously VERBOSE showed output
+ from all testcases, even ones which passed. Now we only show output from
+ testcases which fail for VERBOSE=1. Other non-empty values of VERBOSE
+ continue to show all output for cavern.tst and smoke.tst, but have the same
+ effect as VERBOSE=1 for other tests.
+
+ + compare.tst: Fix to actually work, support --help, and allow comparing
+ cavern runs which fail. This script is not run as part of the automated
+ tests but assists manually comparing two versions of cavern on the same
+ data which can be helpful for debugging and during development.
+
Changes in 1.4.17 (2025-03-20):
* aven: Add support for exaggerating Z. You can now set a Z scale factor
from 0.1 to 10.0 via a new widget on the toolbar. Fixes #49.
-* aven: The cavern log window now choses foreground and background colours
+* aven: The cavern log window now chooses foreground and background colours
based on the desktop's light mode/dark mode setting. Previously it
used the default window background colour but always used black text, which
made it hard to read with a dark desktop theme. (The wxWidgets API to detect
@@ -72,7 +430,7 @@
* Simplify handling of errors loading the messages file. The error
messages for this case are now stored as separate ASCII strings in
the executables which reduces the startup overhead a little as we
- no longer need to scan them and potentially reencode them.
+ no longer need to scan them and potentially re-encode them.
* img library: The img struct's filename_opened member was always NULL when
used outside of Survex (and set but never actually used inside of Survex)
@@ -675,7 +1033,7 @@
it can be read from the filing system and is geo-referenced vector data -
see https://gdal.org/drivers/vector/index.html for a list. Currently the
dialog to select a file defaults to showing GPX, KML, GeoJSON and shape
- files - set the filter to "All Files" to chose other formats.
+ files - set the filter to "All Files" to choose other formats.
+ Reimplement display of cavern output. The old version turned the log into
HTML and displayed it using wxHtmlWindow, but that adds a lot of overhead
@@ -3667,7 +4025,7 @@
to abort on others. This is now fixed, and there's a check in place to
help avoid similar issues in future. (ticket#34)
- + Always use metres or feet for the depth colour key, and chose a consistent
+ + Always use metres or feet for the depth colour key, and choose a consistent
precision by looking at the depth range. (ticket#30)
+ Show the depth units below the colour bar rather than after every value.
@@ -4609,7 +4967,7 @@
* aven: Make pressing "Return" in the tree control expand/collapse a subtree.
-* aven: Speed up intialisation by delaying creation of OpenGL lists until
+* aven: Speed up initialisation by delaying creation of OpenGL lists until
they're needed.
* aven: Added Mark Shinwell's bounding box with shadow of the survey.
diff -Nru survex-1.4.17/OLDNEWS survex-1.4.22/OLDNEWS
--- survex-1.4.17/OLDNEWS 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/OLDNEWS 2026-06-20 21:58:35.000000000 +0000
@@ -589,7 +589,7 @@
* aven: added hourglass for "find" operation.
-* aven: reenabled loading of files by drag-and-drop (accidentally disabled
+* aven: re-enabled loading of files by drag-and-drop (accidentally disabled
in 1.0.4 and 1.0.5).
* aven: improved handling of flat surveys (e.g. output of extend, surveys
@@ -793,7 +793,7 @@
* Updated manual (notably added documentation for interleaved data styles).
-* German and Brazillian Portuguese translations updated.
+* German and Brazilian Portuguese translations updated.
Changes in 0.99-prerelease8:
@@ -1087,7 +1087,7 @@
* Expanded testsuite further.
-* French, Brazillian Portuguese, and German translations brought
+* French, Brazilian Portuguese, and German translations brought
almost completely up-to-date.
* (Unix version): Lots of little improvements to debian packages
@@ -1552,7 +1552,7 @@
* printer drivers: put "http://www.survex.com/" on printouts in case someone
who gets a printout wants to know more about Survex.
-* cavern: added easting, northing, altitude added as prefered aliases for
+* cavern: added easting, northing, altitude added as preferred aliases for
dx, dy, dz.
* cavern: bug fix: "*prefix \" or "*begin \" would cause an internal error.
@@ -1914,7 +1914,7 @@
* xcaverot: Fixed poor handling of keypresses when rotating
-* xcaverot: Reenabled buttons and made plan/elev button work properly
+* xcaverot: Re-enabled buttons and made plan/elev button work properly
* aven: New experimental gtk-based xcaverot replacement
@@ -1980,7 +1980,7 @@
check before resorting to the default. LANG is a standard way to
specify the language for GNU applications - SURVEXLANG is still
useful as a way to specify an alternate language if Survex doesn't
- support your prefered language.
+ support your preferred language.
* Cured superfluous copy of svxdocs in doc/svxdocs in source distribution
diff -Nru survex-1.4.17/aclocal.m4 survex-1.4.22/aclocal.m4
--- survex-1.4.17/aclocal.m4 2025-03-20 00:15:17.000000000 +0000
+++ survex-1.4.22/aclocal.m4 2026-06-23 21:22:44.000000000 +0000
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.17 -*- Autoconf -*-
+# generated automatically by aclocal 1.18.1 -*- Autoconf -*-
-# Copyright (C) 1996-2024 Free Software Foundation, Inc.
+# Copyright (C) 1996-2025 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,14 +14,14 @@
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],,
-[m4_warning([this file was generated for autoconf 2.72.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.73],,
+[m4_warning([this file was generated for autoconf 2.73.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*-
-# serial 12 (pkg-config-0.29.2)
+# serial 13 (pkgconf)
dnl Copyright © 2004 Scott James Remnant .
dnl Copyright © 2012-2015 Dan Nicholson
@@ -37,9 +37,7 @@
dnl General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-dnl 02111-1307, USA.
+dnl along with this program; if not, see .
dnl
dnl As a special exception to the GNU General Public License, if you
dnl distribute this file as part of a program that contains a
@@ -68,8 +66,8 @@
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
-dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
-dnl ----------------------------------
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION], [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------
dnl Since: 0.16
dnl
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
@@ -77,6 +75,12 @@
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
dnl used since that's the first version where most current features of
dnl pkg-config existed.
+dnl
+dnl If pkg-config is not found or older than specified, it will result
+dnl in an empty PKG_CONFIG variable. To avoid widespread issues with
+dnl scripts not checking it, ACTION-IF-NOT-FOUND defaults to aborting.
+dnl You can specify [PKG_CONFIG=false] as an action instead, which would
+dnl result in pkg-config tests failing, but no bogus error messages.
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
@@ -97,6 +101,9 @@
AC_MSG_RESULT([no])
PKG_CONFIG=""
fi
+fi
+if test -z "$PKG_CONFIG"; then
+ m4_default([$2], [AC_MSG_ERROR([pkg-config not found])])
fi[]dnl
])dnl PKG_PROG_PKG_CONFIG
@@ -364,7 +371,7 @@
[AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
])dnl PKG_HAVE_DEFINE_WITH_MODULES
-# Copyright (C) 2002-2024 Free Software Foundation, Inc.
+# Copyright (C) 2002-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -376,10 +383,10 @@
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.17'
+[am__api_version='1.18'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.17], [],
+m4_if([$1], [1.18.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -395,14 +402,14 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.17])dnl
+[AM_AUTOMAKE_VERSION([1.18.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -454,7 +461,7 @@
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2024 Free Software Foundation, Inc.
+# Copyright (C) 1997-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -485,7 +492,7 @@
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2024 Free Software Foundation, Inc.
+# Copyright (C) 1999-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -676,7 +683,7 @@
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2024 Free Software Foundation, Inc.
+# Copyright (C) 1999-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -744,7 +751,7 @@
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2024 Free Software Foundation, Inc.
+# Copyright (C) 1996-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -844,8 +851,9 @@
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([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])],
+ [_AM_PROG_TAR([ustar])])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES([CC])],
@@ -921,7 +929,7 @@
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -942,7 +950,7 @@
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2024 Free Software Foundation, Inc.
+# Copyright (C) 2003-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -963,7 +971,7 @@
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1006,7 +1014,7 @@
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2024 Free Software Foundation, Inc.
+# Copyright (C) 1997-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1040,7 +1048,7 @@
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1069,7 +1077,7 @@
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2024 Free Software Foundation, Inc.
+# Copyright (C) 1999-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1101,7 +1109,10 @@
break
fi
done
- rm -f core conftest*
+ # aligned with autoconf, so not including core; see bug#72225.
+ rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \
+ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \
+ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM
unset am_i])
if test "$am_cv_prog_cc_c_o" != yes; then
# Losing compiler, so override with the script.
@@ -1116,7 +1127,7 @@
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+# Copyright (C) 2022-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1132,7 +1143,7 @@
AC_SUBST(am__rm_f_notfound)
])
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1151,7 +1162,7 @@
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2024 Free Software Foundation, Inc.
+# Copyright (C) 1996-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1320,10 +1331,12 @@
'
case `pwd` in
*[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_RESULT([no])
AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_RESULT([no])
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
@@ -1376,7 +1389,7 @@
rm -f conftest.file
])
-# Copyright (C) 2009-2024 Free Software Foundation, Inc.
+# Copyright (C) 2009-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1445,9 +1458,13 @@
# empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
[AC_REQUIRE([_AM_SILENT_RULES])
-AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])])
+AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline
+dnl We intentionally force a newline after the assignment, since a) nothing
+dnl good can come of more text following, and b) that was the behavior
+dnl before 1.17. See https://bugs.gnu.org/72267.
+])
-# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1475,7 +1492,7 @@
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2024 Free Software Foundation, Inc.
+# Copyright (C) 2006-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1494,7 +1511,7 @@
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2024 Free Software Foundation, Inc.
+# Copyright (C) 2004-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1629,7 +1646,7 @@
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
-# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+# Copyright (C) 2022-2025 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff -Nru survex-1.4.17/compile survex-1.4.22/compile
--- survex-1.4.17/compile 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/compile 2026-06-23 21:22:45.000000000 +0000
@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2025-06-18.21; # UTC
-# Copyright (C) 1999-2024 Free Software Foundation, Inc.
+# Copyright (C) 1999-2025 Free Software Foundation, Inc.
# Written by Tom Tromey .
#
# This program is free software; you can redistribute it and/or modify
@@ -37,11 +37,11 @@
file_conv=
-# func_file_conv build_file lazy
+# func_file_conv build_file unneeded_conversions
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
+# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no
+# conversion will take place.
func_file_conv ()
{
file=$1
@@ -51,9 +51,20 @@
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
- file_conv=mingw
+ if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then
+ # MSYS2 environment.
+ file_conv=cygwin
+ else
+ # Original MinGW environment.
+ file_conv=mingw
+ fi
;;
- CYGWIN* | MSYS*)
+ MSYS*)
+ # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell.
+ file_conv=cygwin
+ ;;
+ CYGWIN*)
+ # Cygwin environment.
file_conv=cygwin
;;
*)
@@ -63,12 +74,14 @@
fi
case $file_conv/,$2, in
*,$file_conv,*)
+ # This is the optimization mentioned above:
+ # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert.
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
- cygwin/* | msys/*)
- file=`cygpath -m "$file" || echo "$file"`
+ cygwin/*)
+ file=`cygpath -w "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
@@ -343,9 +356,9 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru survex-1.4.17/config.guess survex-1.4.22/config.guess
--- survex-1.4.17/config.guess 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/config.guess 2026-06-23 21:22:45.000000000 +0000
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2022 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2022-01-09'
+timestamp='2024-07-27'
# 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
@@ -47,7 +47,7 @@
usage="\
Usage: $0 [OPTION]
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
@@ -60,13 +60,13 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -102,8 +102,8 @@
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
@@ -123,7 +123,7 @@
dummy=$tmp/dummy
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
,,) echo "int x;" > "$dummy.c"
- for driver in cc gcc c89 c99 ; do
+ for driver in cc gcc c17 c99 c89 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD=$driver
break
@@ -155,6 +155,9 @@
set_cc_for_build
cat <<-EOF > "$dummy.c"
+ #if defined(__ANDROID__)
+ LIBC=android
+ #else
#include
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -162,6 +165,8 @@
LIBC=dietlibc
#elif defined(__GLIBC__)
LIBC=gnu
+ #elif defined(__LLVM_LIBC__)
+ LIBC=llvm
#else
#include
/* First heuristic to detect musl libc. */
@@ -169,6 +174,7 @@
LIBC=musl
#endif
#endif
+ #endif
EOF
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
eval "$cc_set_libc"
@@ -459,7 +465,7 @@
UNAME_RELEASE=`uname -v`
;;
esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
+ # Japanese Language versions have a version number like '4.1.3-JL'.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
GUESS=sparc-sun-sunos$SUN_REL
;;
@@ -628,7 +634,8 @@
sed 's/^ //' << EOF > "$dummy.c"
#include
- main()
+ int
+ main ()
{
if (!__power_pc())
exit(1);
@@ -712,7 +719,8 @@
#include
#include
- int main ()
+ int
+ main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
@@ -904,7 +912,7 @@
fi
;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +974,37 @@
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
;;
+ x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+ ;;
+ *:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+ ;;
*:Minix:*:*)
GUESS=$UNAME_MACHINE-unknown-minix
;;
aarch64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ set_cc_for_build
+ CPU=$UNAME_MACHINE
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __ARM_EABI__
+ #ifdef __ARM_PCS_VFP
+ ABI=eabihf
+ #else
+ ABI=eabi
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+ esac
+ fi
+ GUESS=$CPU-unknown-linux-$LIBCABI
;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
@@ -1036,7 +1070,16 @@
k1om:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
- loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ kvx:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ kvx:cos:*:*)
+ GUESS=$UNAME_MACHINE-unknown-cos
+ ;;
+ kvx:mbr:*:*)
+ GUESS=$UNAME_MACHINE-unknown-mbr
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
m32r*:Linux:*:*)
@@ -1151,16 +1194,27 @@
;;
x86_64:Linux:*:*)
set_cc_for_build
+ CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_X32 >/dev/null
- then
- LIBCABI=${LIBC}x32
- fi
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __i386__
+ ABI=x86
+ #else
+ #ifdef __ILP32__
+ ABI=x32
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ x86) CPU=i686 ;;
+ x32) LIBCABI=${LIBC}x32 ;;
+ esac
fi
- GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ GUESS=$CPU-pc-linux-$LIBCABI
;;
xtensa*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
@@ -1180,7 +1234,7 @@
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
;;
i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
+ # If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
GUESS=$UNAME_MACHINE-pc-os2-emx
;;
@@ -1321,7 +1375,7 @@
GUESS=ns32k-sni-sysv
fi
;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says
GUESS=i586-unisys-sysv4
;;
@@ -1367,8 +1421,11 @@
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
GUESS=i586-pc-haiku
;;
- x86_64:Haiku:*:*)
- GUESS=x86_64-unknown-haiku
+ ppc:Haiku:*:*) # Haiku running on Apple PowerPC
+ GUESS=powerpc-apple-haiku
+ ;;
+ *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
+ GUESS=$UNAME_MACHINE-unknown-haiku
;;
SX-4:SUPER-UX:*:*)
GUESS=sx4-nec-superux$UNAME_RELEASE
@@ -1540,6 +1597,9 @@
*:Unleashed:*:*)
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
;;
+ *:Ironclad:*:*)
+ GUESS=$UNAME_MACHINE-unknown-ironclad
+ ;;
esac
# Do we have a guess based on uname results?
@@ -1563,6 +1623,7 @@
#endif
#endif
#endif
+int
main ()
{
#if defined (sony)
diff -Nru survex-1.4.17/config.h.in survex-1.4.22/config.h.in
--- survex-1.4.17/config.h.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/config.h.in 2026-06-23 21:22:45.000000000 +0000
@@ -163,6 +163,21 @@
/* Define to 1 if you have the 'unsetenv' function. */
#undef HAVE_UNSETENV
+/* Define to 1 if you have the '_fread_nolock' function. */
+#undef HAVE__FREAD_NOLOCK
+
+/* Define to 1 if you have the '_fwrite_nolock' function. */
+#undef HAVE__FWRITE_NOLOCK
+
+/* Define to 1 if you have the '_getc_nolock' function. */
+#undef HAVE__GETC_NOLOCK
+
+/* Define to 1 if you have the '_putchar_nolock' function. */
+#undef HAVE__PUTCHAR_NOLOCK
+
+/* Define to 1 if you have the '_putc_nolock' function. */
+#undef HAVE__PUTC_NOLOCK
+
/* Define to 1 if you have the '_vfprintf_p' function. */
#undef HAVE__VFPRINTF_P
@@ -249,6 +264,8 @@
#ifdef HAVE_FREAD_UNLOCKED
# define FREAD(P, S, N, F) fread_unlocked(P, S, N, F)
+#elif defined HAVE__FREAD_NOLOCK
+# define FREAD(P, S, N, F) _fread_nolock(P, S, N, F)
#else
# define FREAD(P, S, N, F) fread(P, S, N, F)
#endif
@@ -260,24 +277,32 @@
*/
#ifdef HAVE_FWRITE_UNLOCKED
# define FWRITE_(P, S, N, F) fwrite_unlocked(P, S, N, F)
+#elif defined HAVE__FWRITE_NOLOCK
+# define FWRITE_(P, S, N, F) _fwrite_nolock(P, S, N, F)
#else
# define FWRITE_(P, S, N, F) fwrite(P, S, N, F)
#endif
#ifdef HAVE_GETC_UNLOCKED
# define GETC(F) getc_unlocked(F)
+#elif defined HAVE__GETC_NOLOCK
+# define GETC(F) _getc_nolock(F)
#else
# define GETC(F) getc(F)
#endif
#ifdef HAVE_PUTC_UNLOCKED
# define PUTC(C, F) putc_unlocked(C, F)
+#elif defined HAVE__PUTC_NOLOCK
+# define PUTC(C, F) _putc_nolock(C, F)
#else
# define PUTC(C, F) putc(C, F)
#endif
#ifdef HAVE_PUTC_UNLOCKED
# define PUTCHAR(C) putchar_unlocked(C)
+#elif defined HAVE__PUTCHAR_NOLOCK
+# define PUTCHAR(C) _putchar_nolock(C)
#else
# define PUTCHAR(C) putchar(C)
#endif
@@ -287,5 +312,28 @@
* avoid every C file which uses these needing to include .
*/
# include
+
+/* C23 made static_assert() available by default - let's emulate that. */
+# if __STDC_VERSION__ >= 202311L
+// Available by default.
+# elif __STDC_VERSION__ >= 201112L
+# include
+# elif defined __COUNTER__
+// As a fallback for < C11, use a typedef for an array type where the size
+// is negative if the assertion fails. Prior to C11 redefining a typedef was
+// not allowed so we need to generate unique typedef names (within a single
+// compilation). __COUNTER__ provides an way to do this - it is a non-standard
+// extension, but supported by at least GCC, clang and MSVC.
+//
+// Using the standardised __LINE__ instead of __COUNTER__ here would fail if
+// two headers (or a header and the source file) happen to use static_assert()
+// on the same line number.
+# define STATICASSERTTYPEDEFNAME(N) staticassert_##N
+# define static_assert(CONDITION, MESSAGE) \
+ typedef int STATICASSERTTYPEDEFNAME(__COUNTER__)[(CONDITION) ? 1 : -1]
+# else
+// We don't check static_assert for pre-C11 compilers without __COUNTER__.
+# define static_assert(...)
+# endif
#endif
diff -Nru survex-1.4.17/config.sub survex-1.4.22/config.sub
--- survex-1.4.17/config.sub 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/config.sub 2026-06-23 21:22:45.000000000 +0000
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2022 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
-# shellcheck disable=SC2006,SC2268 # see below for rationale
+# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
-timestamp='2022-01-03'
+timestamp='2024-05-27'
# 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
@@ -76,13 +76,13 @@
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -120,7 +120,6 @@
esac
# Split fields of configuration type
-# shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <&2
+ echo "Invalid configuration '$1': more than four components" >&2
exit 1
;;
*-*-*-*)
@@ -142,10 +141,21 @@
# parts
maybe_os=$field2-$field3
case $maybe_os in
- nto-qnx* | linux-* | uclinux-uclibc* \
- | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
- | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
- | storm-chaos* | os2-emx* | rtmk-nova*)
+ cloudabi*-eabi* \
+ | kfreebsd*-gnu* \
+ | knetbsd*-gnu* \
+ | kopensolaris*-gnu* \
+ | linux-* \
+ | managarm-* \
+ | netbsd*-eabi* \
+ | netbsd*-gnu* \
+ | nto-qnx* \
+ | os2-emx* \
+ | rtmk-nova* \
+ | storm-chaos* \
+ | uclinux-gnu* \
+ | uclinux-uclibc* \
+ | windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
@@ -160,8 +170,12 @@
esac
;;
*-*)
- # A lone config we happen to match not fitting any pattern
case $field1-$field2 in
+ # Shorthands that happen to contain a single dash
+ convex-c[12] | convex-c3[248])
+ basic_machine=$field2-convex
+ basic_os=
+ ;;
decstation-3100)
basic_machine=mips-dec
basic_os=
@@ -169,28 +183,88 @@
*-*)
# Second component is usually, but not always the OS
case $field2 in
- # Prevent following clause from handling this valid os
+ # Do not treat sunos as a manufacturer
sun*os*)
basic_machine=$field1
basic_os=$field2
;;
- zephyr*)
- basic_machine=$field1-unknown
- basic_os=$field2
- ;;
# Manufacturers
- dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
- | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
- | unicom* | ibm* | next | hp | isi* | apollo | altos* \
- | convergent* | ncr* | news | 32* | 3600* | 3100* \
- | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
- | ultra | tti* | harris | dolphin | highlevel | gould \
- | cbm | ns | masscomp | apple | axis | knuth | cray \
- | microblaze* | sim | cisco \
- | oki | wec | wrs | winbond)
+ 3100* \
+ | 32* \
+ | 3300* \
+ | 3600* \
+ | 7300* \
+ | acorn \
+ | altos* \
+ | apollo \
+ | apple \
+ | atari \
+ | att* \
+ | axis \
+ | be \
+ | bull \
+ | cbm \
+ | ccur \
+ | cisco \
+ | commodore \
+ | convergent* \
+ | convex* \
+ | cray \
+ | crds \
+ | dec* \
+ | delta* \
+ | dg \
+ | digital \
+ | dolphin \
+ | encore* \
+ | gould \
+ | harris \
+ | highlevel \
+ | hitachi* \
+ | hp \
+ | ibm* \
+ | intergraph \
+ | isi* \
+ | knuth \
+ | masscomp \
+ | microblaze* \
+ | mips* \
+ | motorola* \
+ | ncr* \
+ | news \
+ | next \
+ | ns \
+ | oki \
+ | omron* \
+ | pc533* \
+ | rebel \
+ | rom68k \
+ | rombug \
+ | semi \
+ | sequent* \
+ | siemens \
+ | sgi* \
+ | siemens \
+ | sim \
+ | sni \
+ | sony* \
+ | stratus \
+ | sun \
+ | sun[234]* \
+ | tektronix \
+ | tti* \
+ | ultra \
+ | unicom* \
+ | wec \
+ | winbond \
+ | wrs)
basic_machine=$field1-$field2
basic_os=
;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
*)
basic_machine=$field1
basic_os=$field2
@@ -271,26 +345,6 @@
basic_machine=arm-unknown
basic_os=cegcc
;;
- convex-c1)
- basic_machine=c1-convex
- basic_os=bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- basic_os=bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- basic_os=bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- basic_os=bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- basic_os=bsd
- ;;
cray)
basic_machine=j90-cray
basic_os=unicos
@@ -713,15 +767,26 @@
vendor=dec
basic_os=tops20
;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
+ delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
cpu=m68k
vendor=motorola
;;
- dpx2*)
+ # This used to be dpx2*, but that gets the RS6000-based
+ # DPX/20 and the x86-based DPX/2-100 wrong. See
+ # https://oldskool.silicium.org/stations/bull_dpx20.htm
+ # https://www.feb-patrimoine.com/english/bull_dpx2.htm
+ # https://www.feb-patrimoine.com/english/unix_and_bull.htm
+ dpx2 | dpx2[23]00 | dpx2[23]xx)
cpu=m68k
vendor=bull
- basic_os=sysv3
+ ;;
+ dpx2100 | dpx21xx)
+ cpu=i386
+ vendor=bull
+ ;;
+ dpx20)
+ cpu=rs6000
+ vendor=bull
;;
encore | umax | mmax)
cpu=ns32k
@@ -836,18 +901,6 @@
next | m*-next)
cpu=m68k
vendor=next
- case $basic_os in
- openstep*)
- ;;
- nextstep*)
- ;;
- ns2*)
- basic_os=nextstep2
- ;;
- *)
- basic_os=nextstep3
- ;;
- esac
;;
np1)
cpu=np1
@@ -936,14 +989,13 @@
;;
*-*)
- # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read cpu vendor <&2
+ echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
exit 1
;;
esac
@@ -1306,11 +1491,12 @@
# Decode manufacturer-specific aliases for certain operating systems.
-if test x$basic_os != x
+if test x"$basic_os" != x
then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
# set os.
+obj=
case $basic_os in
gnu/linux*)
kernel=linux
@@ -1325,7 +1511,6 @@
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
;;
*-*)
- # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read kernel os <&2
+ fi
+ ;;
*)
- echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+case $obj in
+ aout* | coff* | elf* | pe*)
+ ;;
+ '')
+ # empty is fine
+ ;;
+ *)
+ echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+ # The "javascript-unknown-ghcjs" triple is used by GHC; we
+ # accept it here in order to tolerate that, but reject any
+ # variations.
+ javascript-ghcjs)
+ ;;
+ javascript-* | *-ghcjs)
+ echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
-case $kernel-$os in
- linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
- | linux-musl* | linux-relibc* | linux-uclibc* )
+case $kernel-$os-$obj in
+ linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+ | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+ | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
+ ;;
+ uclinux-uclibc*- | uclinux-gnu*- )
+ ;;
+ managarm-mlibc*- | managarm-kernel*- )
;;
- uclinux-uclibc* )
+ windows*-msvc*-)
;;
- -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+ -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+ | -uclibc*- )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
- echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
exit 1
;;
- kfreebsd*-gnu* | kopensolaris*-gnu*)
+ -kernel*- )
+ echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+ exit 1
;;
- vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ *-kernel*- )
+ echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+ exit 1
;;
- nto-qnx*)
+ *-msvc*- )
+ echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+ exit 1
;;
- os2-emx)
+ kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
+ ;;
+ vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+ ;;
+ nto-qnx*-)
;;
- *-eabi* | *-gnueabi*)
+ os2-emx-)
;;
- -*)
+ rtmk-nova-)
+ ;;
+ *-eabi*- | *-gnueabi*-)
+ ;;
+ none--*)
+ # None (no kernel, i.e. freestanding / bare metal),
+ # can be paired with an machine code file format
+ ;;
+ -*-)
# Blank kernel with real OS is always fine.
;;
- *-*)
- echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ --*)
+ # Blank kernel and OS with real machine code file format is always fine.
+ ;;
+ *-*-*)
+ echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1
;;
esac
@@ -1809,7 +2273,7 @@
*-riscix*)
vendor=acorn
;;
- *-sunos*)
+ *-sunos* | *-solaris*)
vendor=sun
;;
*-cnk* | *-aix*)
@@ -1879,7 +2343,7 @@
;;
esac
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:
diff -Nru survex-1.4.17/configure survex-1.4.22/configure
--- survex-1.4.17/configure 2025-03-20 00:15:17.000000000 +0000
+++ survex-1.4.22/configure 2026-06-23 21:22:45.000000000 +0000
@@ -1,11 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for survex 1.4.17.
+# Generated by GNU Autoconf 2.73 for survex 1.4.22.
#
# Report bugs to .
#
#
-# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
+# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation,
# Inc.
#
#
@@ -22,7 +22,7 @@
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
+ # contradicts POSIX and common usage. Disable this.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else case e in #(
@@ -109,7 +109,7 @@
as_myself=$0
fi
if test ! -f "$as_myself"; then
- printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
@@ -131,10 +131,13 @@
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+case $# in # ((
+ 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;;
+ *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;;
+esac
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed 'exec'.
-printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
# We don't want this to propagate to other subprocesses.
@@ -145,7 +148,7 @@
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
+ # contradicts POSIX and common usage. Disable this.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else case e in #(
@@ -255,22 +258,25 @@
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+case $# in # ((
+ 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;;
+ *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;;
+esac
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed 'exec'.
-printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
if test x$as_have_required = xno
then :
- printf "%s\n" "$0: This script requires a shell more modern than all"
- printf "%s\n" "$0: the shells that I found on your system."
+ printf '%s\n' "$0: This script requires a shell more modern than all"
+ printf '%s\n' "$0: the shells that I found on your system."
if test ${ZSH_VERSION+y} ; then
- printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
+ printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later."
else
- printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
+ printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and
$0: https://trac.survex.com/ about your system, including
$0: any error possibly output before this message. Then
$0: install a modern shell, or manually run the script
@@ -331,7 +337,7 @@
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -340,7 +346,7 @@
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$as_dir" |
+printf '%s\n' X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -423,9 +429,9 @@
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- printf "%s\n" "$as_me: error: $2" >&2
+ printf '%s\n' "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -452,7 +458,7 @@
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X/"$0" |
+printf '%s\n' X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -498,7 +504,7 @@
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -512,29 +518,6 @@
exit
}
-
-# Determine whether it's possible to make 'echo' print without a newline.
-# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
-# for compatibility with existing Makefiles.
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-# For backward compatibility with old third-party macros, we provide
-# the shell variables $as_echo and $as_echo_n. New code should use
-# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
-as_echo='printf %s\n'
-as_echo_n='printf %s'
-
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -593,6 +576,7 @@
# Initializations.
#
ac_default_prefix=/usr/local
+ac_clean_CONFIG_STATUS=
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
@@ -604,8 +588,8 @@
# Identity of this package.
PACKAGE_NAME='survex'
PACKAGE_TARNAME='survex'
-PACKAGE_VERSION='1.4.17'
-PACKAGE_STRING='survex 1.4.17'
+PACKAGE_VERSION='1.4.22'
+PACKAGE_STRING='survex 1.4.22'
PACKAGE_BUGREPORT='https://trac.survex.com/'
PACKAGE_URL=''
@@ -642,7 +626,7 @@
#endif"
ac_header_c_list=
-enable_year2038=no
+: ${enable_year2038:=no}
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
@@ -744,13 +728,13 @@
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
+ECHO_T
+ECHO_N
+ECHO_C
target_alias
host_alias
build_alias
LIBS
-ECHO_T
-ECHO_N
-ECHO_C
DEFS
mandir
localedir
@@ -934,7 +918,7 @@
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -960,7 +944,7 @@
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1173,7 +1157,7 @@
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1189,7 +1173,7 @@
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1233,9 +1217,9 @@
*)
# FIXME: should be removed in autoconf 3.0.
- printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1243,7 +1227,7 @@
done
if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'`
as_fn_error $? "missing argument to $ac_option"
fi
@@ -1251,7 +1235,7 @@
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1315,7 +1299,7 @@
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$as_myself" |
+printf '%s\n' X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1372,7 +1356,7 @@
# 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 survex 1.4.17 to adapt to many kinds of systems.
+'configure' configures survex 1.4.22 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1443,7 +1427,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of survex 1.4.17:";;
+ short | recursive ) echo "Configuration of survex 1.4.22:";;
esac
cat <<\_ACEOF
@@ -1517,9 +1501,9 @@
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1556,7 +1540,7 @@
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1565,10 +1549,10 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-survex configure 1.4.17
-generated by GNU Autoconf 2.72
+survex configure 1.4.22
+generated by GNU Autoconf 2.73
-Copyright (C) 2023 Free Software Foundation, Inc.
+Copyright (C) 2026 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1592,7 +1576,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1600,7 +1584,7 @@
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -1608,7 +1592,7 @@
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1 ;;
@@ -1631,7 +1615,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1639,7 +1623,7 @@
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -1647,7 +1631,7 @@
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1 ;;
@@ -1671,7 +1655,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1679,7 +1663,7 @@
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
@@ -1687,7 +1671,7 @@
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1 ;;
@@ -1710,7 +1694,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1718,7 +1702,7 @@
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
test ! -s conftest.err
@@ -1726,7 +1710,7 @@
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1 ;;
@@ -1750,7 +1734,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1758,7 +1742,7 @@
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -1769,7 +1753,7 @@
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1 ;;
@@ -1798,26 +1782,26 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then :
ac_retval=0
else case e in #(
- e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5
- printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5
+ printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status ;;
@@ -1836,7 +1820,7 @@
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
@@ -1858,8 +1842,8 @@
esac
fi
eval ac_res=\$$3
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf '%s\n' "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -2065,7 +2049,7 @@
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
@@ -2117,8 +2101,8 @@
esac
fi
eval ac_res=\$$3
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf '%s\n' "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
@@ -2131,7 +2115,7 @@
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
printf %s "checking whether $as_decl_name is declared... " >&6; }
if eval test \${$3+y}
then :
@@ -2171,8 +2155,8 @@
esac
fi
eval ac_res=\$$3
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf '%s\n' "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_check_decl
@@ -2181,7 +2165,7 @@
do
case $ac_arg in
*\'*)
- ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append ac_configure_args_raw " '$ac_arg'"
done
@@ -2193,15 +2177,15 @@
ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
ac_unsafe_a="$ac_unsafe_z#~"
ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
- ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+ ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
esac
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by survex $as_me 1.4.17, which was
-generated by GNU Autoconf 2.72. Invocation command line was
+It was created by survex $as_me 1.4.22, which was
+generated by GNU Autoconf 2.73. Invocation command line was
$ $0$ac_configure_args_raw
@@ -2241,7 +2225,7 @@
*/) ;;
*) as_dir=$as_dir/ ;;
esac
- printf "%s\n" "PATH: $as_dir"
+ printf '%s\n' "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -2276,7 +2260,7 @@
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2305,31 +2289,22 @@
{ ac_configure_args0=; unset ac_configure_args0;}
{ ac_configure_args1=; unset ac_configure_args1;}
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Sanitize IFS.
- IFS=" "" $as_nl"
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- printf "%s\n" "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
+# Dump the cache to stdout. It can be in a pipe (this is a requirement).
+ac_cache_dump ()
+{
+ # The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2338,67 +2313,95 @@
esac ;;
esac
done
+
(set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
*${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
sort
)
- echo
+}
- printf "%s\n" "## ----------------- ##
+# Print debugging info to stdout.
+ac_dump_debugging_info ()
+{
+ echo
+
+ printf '%s\n' "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ ac_cache_dump
+ echo
+
+ printf '%s\n' "## ----------------- ##
## Output variables. ##
## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;;
+ esac
+ printf '%s\n' "$ac_var='$ac_val'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ printf '%s\n' "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
echo
- for ac_var in $ac_subst_vars
+ for ac_var in $ac_subst_files
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;;
esac
- printf "%s\n" "$ac_var='\''$ac_val'\''"
+ printf '%s\n' "$ac_var='$ac_val'"
done | sort
echo
+ fi
- if test -n "$ac_subst_files"; then
- printf "%s\n" "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- printf "%s\n" "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- printf "%s\n" "## ----------- ##
+ if test -s confdefs.h; then
+ printf '%s\n' "## ----------- ##
## confdefs.h. ##
## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- printf "%s\n" "$as_me: caught signal $ac_signal"
- printf "%s\n" "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ printf '%s\n' "$as_me: caught signal $ac_signal"
+ printf '%s\n' "$as_me: exit $exit_status"
+}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.
+ac_exit_trap ()
+{
+ exit_status=
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
+ # Save into config.log some information that might help in debugging.
+ ac_dump_debugging_info >&5
+ eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
-' 0
+}
+
+trap 'ac_exit_trap $?' 0
for ac_signal in 1 2 13 15; do
trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
done
@@ -2407,21 +2410,21 @@
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-printf "%s\n" "/* confdefs.h */" > confdefs.h
+printf '%s\n' "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
@@ -2443,12 +2446,12 @@
ac_site_file=./$ac_site_file ;;
esac
if test -f "$ac_site_file" && test -r "$ac_site_file"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See 'config.log' for more details" "$LINENO" 5; }
fi
@@ -2458,27 +2461,120 @@
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf '%s\n' "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf '%s\n' "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+# Test code for whether the C compiler supports C23 (global declarations)
+ac_c_conftest_c23_globals='
+/* Does the compiler advertise conformance to C17 or earlier?
+ Although GCC 14 does not do that, even with -std=gnu23,
+ it is close enough, and defines __STDC_VERSION == 202000L. */
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L
+# error "Compiler advertises conformance to C17 or earlier"
+#endif
+
+// Check alignas.
+char alignas (double) c23_aligned_as_double;
+char alignas (0) c23_no_special_alignment;
+extern char c23_aligned_as_int;
+char alignas (0) alignas (int) c23_aligned_as_int;
+
+// Check alignof.
+enum
+{
+ c23_int_alignment = alignof (int),
+ c23_int_array_alignment = alignof (int[100]),
+ c23_char_alignment = alignof (char)
+};
+static_assert (0 < -alignof (int), "alignof is signed");
+
+int function_with_unnamed_parameter (int) { return 0; }
+
+void c23_noreturn ();
+
+/* Test parsing of string and char UTF-8 literals (including hex escapes).
+ The parens pacify GCC 15. */
+bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\'');
+
+bool check_that_bool_works = true | false | !nullptr;
+#if !true
+# error "true does not work in #if"
+#endif
+#if false
+#elifdef __STDC_VERSION__
+#else
+# error "#elifdef does not work"
+#endif
+
+#ifndef __has_c_attribute
+# error "__has_c_attribute not defined"
+#endif
+
+#ifndef __has_include
+# error "__has_include not defined"
+#endif
+
+#define LPAREN() (
+#define FORTY_TWO(x) 42
+#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x))
+static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42);
+
+static_assert (0b101010 == 42);
+static_assert (0B101010 == 42);
+static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559);
+static_assert (0.500'\''000'\''000 == 0.5);
+
+enum unsignedish : unsigned int { uione = 1 };
+static_assert (0 < -uione);
+
+#include
+constexpr nullptr_t null_pointer = nullptr;
+
+static typeof (1 + 1L) two () { return 2; }
+static long int three () { return 3; }
+'
+
+# Test code for whether the C compiler supports C23 (body of main).
+ac_c_conftest_c23_main='
+ {
+ label_before_declaration:
+ int arr[10] = {};
+ if (arr[0])
+ goto label_before_declaration;
+ if (!arr[0])
+ goto label_at_end_of_block;
+ label_at_end_of_block:
+ }
+ ok |= !null_pointer;
+ ok |= two != three;
+'
+
+# Test code for whether the C compiler supports C23 (complete).
+ac_c_conftest_c23_program="${ac_c_conftest_c23_globals}
+
+int
+main (int, char **)
+{
+ int ok = 0;
+ ${ac_c_conftest_c23_main}
+ return ok;
+}
+"
+
# Test code for whether the C compiler supports C89 (global declarations)
ac_c_conftest_c89_globals='
-/* Does the compiler advertise C89 conformance?
- Do not test the value of __STDC__, because some compilers set it to 0
- while being otherwise adequately conformant. */
-#if !defined __STDC__
-# error "Compiler does not advertise C89 conformance"
-#endif
+/* Do not test the value of __STDC__, because some compilers define it to 0
+ or do not define it, while otherwise adequately conforming. */
#include
#include
@@ -2558,7 +2654,8 @@
// Check varargs macros. These examples are taken from C99 6.10.3.5.
// dprintf is used instead of fprintf to avoid needing to declare
-// FILE and stderr.
+// FILE and stderr, and "aND" is used instead of "and" to work around
+// GCC bug 40564 which is irrelevant here.
#define debug(...) dprintf (2, __VA_ARGS__)
#define showlist(...) puts (#__VA_ARGS__)
#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
@@ -2569,7 +2666,7 @@
int y = 5678;
debug ("Flag");
debug ("X = %d\n", x);
- showlist (The first, second, and third items.);
+ showlist (The first, second, aND third items.);
report (x>y, "x is %d but y is %d", x, y);
}
@@ -2657,15 +2754,15 @@
// Check restrict.
if (test_restrict ("String literal") == 0)
success = true;
- char *restrict newvar = "Another string";
+ const char *restrict newvar = "Another string";
// Check varargs.
success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
test_varargs_macros ();
// Check flexible array members.
- struct incomplete_array *ia =
- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ static struct incomplete_array *volatile incomplete_array_pointer;
+ struct incomplete_array *ia = incomplete_array_pointer;
ia->datasize = 10;
for (int i = 0; i < ia->datasize; ++i)
ia->data[i] = i * 1.234;
@@ -2681,13 +2778,12 @@
ni.number = 58;
- int dynamic_array[ni.number];
- dynamic_array[0] = argv[0][0];
- dynamic_array[ni.number - 1] = 543;
+ // Do not test for VLAs, as some otherwise-conforming compilers lack them.
+ // C code should instead use __STDC_NO_VLA__; see Autoconf manual.
// work around unused variable warnings
ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
- || dynamic_array[ni.number - 1] != 543);
+ || ni.number != 58);
'
# Test code for whether the C compiler supports C11 (global declarations)
@@ -2796,222 +2892,6 @@
}
"
-# Test code for whether the C++ compiler supports C++98 (global declarations)
-ac_cxx_conftest_cxx98_globals='
-// Does the compiler advertise C++98 conformance?
-#if !defined __cplusplus || __cplusplus < 199711L
-# error "Compiler does not advertise C++98 conformance"
-#endif
-
-// These inclusions are to reject old compilers that
-// lack the unsuffixed header files.
-#include
-#include
-
-// and are *not* freestanding headers in C++98.
-extern void assert (int);
-namespace std {
- extern int strcmp (const char *, const char *);
-}
-
-// Namespaces, exceptions, and templates were all added after "C++ 2.0".
-using std::exception;
-using std::strcmp;
-
-namespace {
-
-void test_exception_syntax()
-{
- try {
- throw "test";
- } catch (const char *s) {
- // Extra parentheses suppress a warning when building autoconf itself,
- // due to lint rules shared with more typical C programs.
- assert (!(strcmp) (s, "test"));
- }
-}
-
-template struct test_template
-{
- T const val;
- explicit test_template(T t) : val(t) {}
- template T add(U u) { return static_cast(u) + val; }
-};
-
-} // anonymous namespace
-'
-
-# Test code for whether the C++ compiler supports C++98 (body of main)
-ac_cxx_conftest_cxx98_main='
- assert (argc);
- assert (! argv[0]);
-{
- test_exception_syntax ();
- test_template tt (2.0);
- assert (tt.add (4) == 6.0);
- assert (true && !false);
-}
-'
-
-# Test code for whether the C++ compiler supports C++11 (global declarations)
-ac_cxx_conftest_cxx11_globals='
-// Does the compiler advertise C++ 2011 conformance?
-#if !defined __cplusplus || __cplusplus < 201103L
-# error "Compiler does not advertise C++11 conformance"
-#endif
-
-namespace cxx11test
-{
- constexpr int get_val() { return 20; }
-
- struct testinit
- {
- int i;
- double d;
- };
-
- class delegate
- {
- public:
- delegate(int n) : n(n) {}
- delegate(): delegate(2354) {}
-
- virtual int getval() { return this->n; };
- protected:
- int n;
- };
-
- class overridden : public delegate
- {
- public:
- overridden(int n): delegate(n) {}
- virtual int getval() override final { return this->n * 2; }
- };
-
- class nocopy
- {
- public:
- nocopy(int i): i(i) {}
- nocopy() = default;
- nocopy(const nocopy&) = delete;
- nocopy & operator=(const nocopy&) = delete;
- private:
- int i;
- };
-
- // for testing lambda expressions
- template Ret eval(Fn f, Ret v)
- {
- return f(v);
- }
-
- // for testing variadic templates and trailing return types
- template auto sum(V first) -> V
- {
- return first;
- }
- template auto sum(V first, Args... rest) -> V
- {
- return first + sum(rest...);
- }
-}
-'
-
-# Test code for whether the C++ compiler supports C++11 (body of main)
-ac_cxx_conftest_cxx11_main='
-{
- // Test auto and decltype
- auto a1 = 6538;
- auto a2 = 48573953.4;
- auto a3 = "String literal";
-
- int total = 0;
- for (auto i = a3; *i; ++i) { total += *i; }
-
- decltype(a2) a4 = 34895.034;
-}
-{
- // Test constexpr
- short sa[cxx11test::get_val()] = { 0 };
-}
-{
- // Test initializer lists
- cxx11test::testinit il = { 4323, 435234.23544 };
-}
-{
- // Test range-based for
- int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3,
- 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
- for (auto &x : array) { x += 23; }
-}
-{
- // Test lambda expressions
- using cxx11test::eval;
- assert (eval ([](int x) { return x*2; }, 21) == 42);
- double d = 2.0;
- assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0);
- assert (d == 5.0);
- assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0);
- assert (d == 5.0);
-}
-{
- // Test use of variadic templates
- using cxx11test::sum;
- auto a = sum(1);
- auto b = sum(1, 2);
- auto c = sum(1.0, 2.0, 3.0);
-}
-{
- // Test constructor delegation
- cxx11test::delegate d1;
- cxx11test::delegate d2();
- cxx11test::delegate d3(45);
-}
-{
- // Test override and final
- cxx11test::overridden o1(55464);
-}
-{
- // Test nullptr
- char *c = nullptr;
-}
-{
- // Test template brackets
- test_template<::test_template> v(test_template(12));
-}
-{
- // Unicode literals
- char const *utf8 = u8"UTF-8 string \u2500";
- char16_t const *utf16 = u"UTF-8 string \u2500";
- char32_t const *utf32 = U"UTF-32 string \u2500";
-}
-'
-
-# Test code for whether the C compiler supports C++11 (complete).
-ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals}
-${ac_cxx_conftest_cxx11_globals}
-
-int
-main (int argc, char **argv)
-{
- int ok = 0;
- ${ac_cxx_conftest_cxx98_main}
- ${ac_cxx_conftest_cxx11_main}
- return ok;
-}
-"
-
-# Test code for whether the C compiler supports C++98 (complete).
-ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals}
-int
-main (int argc, char **argv)
-{
- int ok = 0;
- ${ac_cxx_conftest_cxx98_main}
- return ok;
-}
-"
-
as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
@@ -3035,7 +2915,7 @@
# $ac_aux_dir_candidates and give up.
ac_missing_aux_files=""
ac_first_candidate=:
-printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in $ac_aux_dir_candidates
@@ -3048,7 +2928,7 @@
esac
as_found=:
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
ac_aux_dir_found=yes
ac_install_sh=
for ac_aux in $ac_aux_files
@@ -3059,13 +2939,13 @@
if test x"$ac_aux" = x"install-sh"
then
if test -f "${as_dir}install-sh"; then
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
ac_install_sh="${as_dir}install-sh -c"
elif test -f "${as_dir}install.sh"; then
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
ac_install_sh="${as_dir}install.sh -c"
elif test -f "${as_dir}shtool"; then
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
ac_install_sh="${as_dir}shtool install -c"
else
ac_aux_dir_found=no
@@ -3077,7 +2957,7 @@
fi
else
if test -f "${as_dir}${ac_aux}"; then
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
else
ac_aux_dir_found=no
if $ac_first_candidate; then
@@ -3130,38 +3010,44 @@
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
-printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
-printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
# differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
+ ac_old_val_w=
+ for ac_val in x $ac_old_val; do
+ ac_old_val_w="$ac_old_val_w $ac_val"
+ done
+ ac_new_val_w=
+ for ac_val in x $ac_new_val; do
+ ac_new_val_w="$ac_new_val_w $ac_val"
+ done
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
-printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
-printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5
-printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5
-printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5
+printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5
+printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -3171,10 +3057,10 @@
fi
done
if $ac_cache_corrupted; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;}
as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
and start over" "$LINENO" 5
fi
@@ -3182,6 +3068,23 @@
## Main body of script. ##
## -------------------- ##
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3189,7 +3092,7 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.17'
+am__api_version='1.18'
@@ -3207,7 +3110,7 @@
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
if test ${ac_cv_path_install+y}
@@ -3230,8 +3133,8 @@
?:[\\/]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
+ # OSF/1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF/1 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
@@ -3281,8 +3184,8 @@
INSTALL=$ac_install_sh
fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-printf "%s\n" "$INSTALL" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf '%s\n' "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
@@ -3292,7 +3195,7 @@
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5
printf %s "checking whether sleep supports fractional seconds... " >&6; }
if test ${am_cv_sleep_fractional_seconds+y}
then :
@@ -3308,10 +3211,10 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5
-printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5
+printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; }
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5
printf %s "checking filesystem timestamp resolution... " >&6; }
if test ${am_cv_filesystem_timestamp_resolution+y}
then :
@@ -3363,9 +3266,9 @@
# 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".
- printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "ls -t produces unexpected output.
Make sure there is not a broken ls alias in your environment.
See 'config.log' for more details" "$LINENO" 5; }
@@ -3446,12 +3349,12 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5
-printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5
+printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; }
# This check should not be cached, as it may vary across builds of
# different projects.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
printf %s "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
@@ -3459,10 +3362,14 @@
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
@@ -3492,8 +3399,8 @@
am_has_slept=yes
done
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5
-printf "%s\n" "$am_build_env_is_sane" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5
+printf '%s\n' "$am_build_env_is_sane" >&6; }
if test "$am_build_env_is_sane" = no; then
as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
@@ -3522,7 +3429,7 @@
# Double any \ or $.
# By default was 's,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"`
+program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"`
# Expand $ac_aux_dir to an absolute path.
@@ -3537,8 +3444,8 @@
am_missing_run="$MISSING "
else
am_missing_run=
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh+set}" != xset; then
@@ -3558,7 +3465,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_STRIP+y}
then :
@@ -3579,7 +3486,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3591,11 +3498,11 @@
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-printf "%s\n" "$STRIP" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf '%s\n' "$STRIP" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -3604,7 +3511,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_STRIP+y}
then :
@@ -3625,7 +3532,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3637,11 +3544,11 @@
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-printf "%s\n" "$ac_ct_STRIP" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf '%s\n' "$ac_ct_STRIP" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
@@ -3649,8 +3556,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
@@ -3663,7 +3570,7 @@
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
if test ${ac_cv_path_mkdir+y}
@@ -3706,14 +3613,14 @@
MKDIR_P='mkdir -p'
fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-printf "%s\n" "$MKDIR_P" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf '%s\n' "$MKDIR_P" >&6; }
-for ac_prog in gawk mawk nawk awk
+for ac_prog in gawk mawk nawk awk 'busybox awk'
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_AWK+y}
then :
@@ -3734,7 +3641,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3746,21 +3653,21 @@
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-printf "%s\n" "$AWK" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf '%s\n' "$AWK" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
test -n "$AWK" && break
done
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
-ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
if eval test \${ac_cv_prog_make_${ac_make}_set+y}
then :
printf %s "(cached) " >&6
@@ -3768,7 +3675,7 @@
e) cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
+ @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
@@ -3781,12 +3688,12 @@
esac
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
SET_MAKE=
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
@@ -3807,13 +3714,13 @@
fi
am_make=${MAKE-make}
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
printf %s "checking whether $am_make supports nested variables... " >&6; }
if test ${am_cv_make_support_nested_variables+y}
then :
printf %s "(cached) " >&6
else case e in #(
- e) if printf "%s\n" 'TRUE=$(BAR$(V))
+ e) if printf '%s\n' 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
@@ -3826,8 +3733,8 @@
fi ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+printf '%s\n' "$am_cv_make_support_nested_variables" >&6; }
AM_BACKSLASH='\'
am__rm_f_notfound=
@@ -3840,7 +3747,7 @@
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5
printf %s "checking xargs -n works... " >&6; }
if test ${am_cv_xargs_n_works+y}
then :
@@ -3856,8 +3763,8 @@
fi ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5
-printf "%s\n" "$am_cv_xargs_n_works" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5
+printf '%s\n' "$am_cv_xargs_n_works" >&6; }
if test "$am_cv_xargs_n_works" = yes
then :
am__xargs_n='xargs -n'
@@ -3889,13 +3796,13 @@
# Define the identity of the package.
PACKAGE='survex'
- VERSION='1.4.17'
+ VERSION='1.4.22'
-printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
+printf '%s\n' "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
-printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h
+printf '%s\n' "#define VERSION \"$VERSION\"" >>confdefs.h
# Some tools Automake needs.
@@ -3927,9 +3834,133 @@
# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar pax cpio none'
+_am_tools='gnutar plaintar pax cpio none'
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5
+printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; }
+ if test x$am_uid = xunknown; then
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5
+printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;}
+ elif test $am_uid -le $am_max_uid; then
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
+ else
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
+ _am_tools=none
+ fi
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5
+printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; }
+ if test x$gm_gid = xunknown; then
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5
+printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;}
+ elif test $am_gid -le $am_max_gid; then
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
+ else
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
+ _am_tools=none
+ fi
+
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+printf %s "checking how to create a ustar tar archive... " >&6; }
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -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 ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -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_ustar}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar &5
+ ($am__untar &5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ { echo "$as_me:$LINENO: cat conftest.dir/file" >&5
+ (cat conftest.dir/file) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ if test ${am_cv_prog_tar_ustar+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) am_cv_prog_tar_ustar=$_am_tool ;;
+esac
+fi
+
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+printf '%s\n' "$am_cv_prog_tar_ustar" >&6; }
@@ -3961,14 +3992,14 @@
-COPYRIGHT_MSG="Copyright (C) 1990-2025 Olly Betts"
+COPYRIGHT_MSG="Copyright (C) 1990-2026 Olly Betts"
AVEN_COPYRIGHT_MSG="Copyright (C) 1999-2003,2005,2006 Mark R. Shinwell"
-printf "%s\n" "#define COPYRIGHT_MSG \"$COPYRIGHT_MSG\"" >>confdefs.h
+printf '%s\n' "#define COPYRIGHT_MSG \"$COPYRIGHT_MSG\"" >>confdefs.h
-printf "%s\n" "#define AVEN_COPYRIGHT_MSG \"$AVEN_COPYRIGHT_MSG\"" >>confdefs.h
+printf '%s\n' "#define AVEN_COPYRIGHT_MSG \"$AVEN_COPYRIGHT_MSG\"" >>confdefs.h
@@ -3978,21 +4009,21 @@
AVEN_COPYRIGHT_MSG_UTF8=`echo "$AVEN_COPYRIGHT_MSG"|sed 's/(C)/©/'`
-printf "%s\n" "#define COPYRIGHT_MSG_UTF8 \"$COPYRIGHT_MSG_UTF8\"" >>confdefs.h
+printf '%s\n' "#define COPYRIGHT_MSG_UTF8 \"$COPYRIGHT_MSG_UTF8\"" >>confdefs.h
-printf "%s\n" "#define AVEN_COPYRIGHT_MSG_UTF8 \"$AVEN_COPYRIGHT_MSG_UTF8\"" >>confdefs.h
+printf '%s\n' "#define AVEN_COPYRIGHT_MSG_UTF8 \"$AVEN_COPYRIGHT_MSG_UTF8\"" >>confdefs.h
PRETTYPACKAGE=`echo "$PACKAGE"|cut -b1|tr a-z A-Z``echo "$PACKAGE"|cut -b2-`
-printf "%s\n" "#define PRETTYPACKAGE \"$PRETTYPACKAGE\"" >>confdefs.h
+printf '%s\n' "#define PRETTYPACKAGE \"$PRETTYPACKAGE\"" >>confdefs.h
COMMAVERSION=`echo "$VERSION"|tr '.' ','`
-printf "%s\n" "#define COMMAVERSION $COMMAVERSION" >>confdefs.h
+printf '%s\n' "#define COMMAVERSION $COMMAVERSION" >>confdefs.h
@@ -4023,7 +4054,7 @@
$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
printf %s "checking build system type... " >&6; }
if test ${ac_cv_build+y}
then :
@@ -4039,8 +4070,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-printf "%s\n" "$ac_cv_build" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf '%s\n' "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -4056,10 +4087,10 @@
# except with old shells:
build_os=$*
IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
printf %s "checking host system type... " >&6; }
if test ${ac_cv_host+y}
then :
@@ -4074,8 +4105,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-printf "%s\n" "$ac_cv_host" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf '%s\n' "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -4091,7 +4122,10 @@
# except with old shells:
host_os=$*
IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
@@ -4112,7 +4146,7 @@
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
@@ -4133,7 +4167,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4145,11 +4179,11 @@
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-printf "%s\n" "$CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf '%s\n' "$CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4158,7 +4192,7 @@
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
@@ -4179,7 +4213,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4191,11 +4225,11 @@
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-printf "%s\n" "$ac_ct_CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf '%s\n' "$ac_ct_CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -4203,8 +4237,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -4217,7 +4251,7 @@
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
@@ -4238,7 +4272,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4250,11 +4284,11 @@
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-printf "%s\n" "$CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf '%s\n' "$CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4263,7 +4297,7 @@
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
@@ -4289,7 +4323,7 @@
continue
fi
ac_cv_prog_CC="cc"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4313,11 +4347,11 @@
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-printf "%s\n" "$CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf '%s\n' "$CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4328,7 +4362,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
@@ -4349,7 +4383,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4361,11 +4395,11 @@
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-printf "%s\n" "$CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf '%s\n' "$CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4378,7 +4412,7 @@
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
@@ -4399,7 +4433,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4411,11 +4445,11 @@
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-printf "%s\n" "$ac_ct_CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf '%s\n' "$ac_ct_CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4427,8 +4461,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -4440,7 +4474,7 @@
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
set dummy ${ac_tool_prefix}clang; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
@@ -4461,7 +4495,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}clang"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4473,11 +4507,11 @@
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-printf "%s\n" "$CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf '%s\n' "$CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -4486,7 +4520,7 @@
ac_ct_CC=$CC
# Extract the first word of "clang", so it can be a program name with args.
set dummy clang; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
@@ -4507,7 +4541,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="clang"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4519,11 +4553,11 @@
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-printf "%s\n" "$ac_ct_CC" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf '%s\n' "$ac_ct_CC" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -4531,8 +4565,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -4544,13 +4578,13 @@
fi
-test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See 'config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion -version; do
@@ -4560,7 +4594,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -4570,7 +4604,7 @@
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -4590,9 +4624,9 @@
# 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.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
printf %s "checking whether the C compiler works... " >&6; }
-ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -4613,10 +4647,10 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then :
# Autoconf-2.13 could set the ac_cv_exeext variable to 'no'.
@@ -4657,29 +4691,29 @@
fi
if test -z "$ac_file"
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-printf "%s\n" "$as_me: failed program was:" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
+printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See 'config.log' for more details" "$LINENO" 5; }
else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; } ;;
+ e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; } ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
printf %s "checking for C compiler default output file name... " >&6; }
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-printf "%s\n" "$ac_file" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf '%s\n' "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
@@ -4687,10 +4721,10 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then :
# If both 'conftest.exe' and 'conftest' are 'present' (well, observable)
@@ -4707,15 +4741,15 @@
esac
done
else case e in #(
- e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See 'config.log' for more details" "$LINENO" 5; } ;;
esac
fi
rm -f conftest conftest$ac_cv_exeext
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-printf "%s\n" "$ac_cv_exeext" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf '%s\n' "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -4738,7 +4772,7 @@
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
@@ -4747,10 +4781,10 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -4758,31 +4792,31 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use '--host'.
See 'config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-printf "%s\n" "$cross_compiling" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf '%s\n' "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext \
conftest.o conftest.obj conftest.out
ac_clean_files=$ac_clean_files_save
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
printf %s "checking for suffix of object files... " >&6; }
if test ${ac_cv_objext+y}
then :
@@ -4806,10 +4840,10 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then :
for ac_file in conftest.o conftest.obj conftest.*; do
@@ -4821,11 +4855,11 @@
esac
done
else case e in #(
- e) printf "%s\n" "$as_me: failed program was:" >&5
+ e) printf '%s\n' "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See 'config.log' for more details" "$LINENO" 5; } ;;
esac
@@ -4833,11 +4867,11 @@
rm -f conftest.$ac_cv_objext conftest.$ac_ext ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-printf "%s\n" "$ac_cv_objext" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf '%s\n' "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
printf %s "checking whether the compiler supports GNU C... " >&6; }
if test ${ac_cv_c_compiler_gnu+y}
then :
@@ -4869,8 +4903,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; }
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test $ac_compiler_gnu = yes; then
@@ -4880,7 +4914,7 @@
fi
ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
printf %s "checking whether $CC accepts -g... " >&6; }
if test ${ac_cv_prog_cc_g+y}
then :
@@ -4948,8 +4982,8 @@
ac_c_werror_flag=$ac_save_c_werror_flag ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf '%s\n' "$ac_cv_prog_cc_g" >&6; }
if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
@@ -4968,7 +5002,56 @@
ac_prog_cc_stdc=no
if test x$ac_prog_cc_stdc = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5
+printf %s "checking for $CC option to enable C23 features... " >&6; }
+if test ${ac_cv_prog_cc_c23+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) ac_cv_prog_cc_c23=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c23_program
+_ACEOF
+for ac_arg in '' -std=gnu23
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c23=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c23" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC ;;
+esac
+fi
+
+if test "x$ac_cv_prog_cc_c23" = xno
+then :
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf '%s\n' "unsupported" >&6; }
+else case e in #(
+ e) if test "x$ac_cv_prog_cc_c23" = x
+then :
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf '%s\n' "none needed" >&6; }
+else case e in #(
+ e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5
+printf '%s\n' "$ac_cv_prog_cc_c23" >&6; }
+ CC="$CC $ac_cv_prog_cc_c23" ;;
+esac
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23
+ ac_prog_cc_stdc=c23 ;;
+esac
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
printf %s "checking for $CC option to enable C11 features... " >&6; }
if test ${ac_cv_prog_cc_c11+y}
then :
@@ -4980,7 +5063,7 @@
/* end confdefs.h. */
$ac_c_conftest_c11_program
_ACEOF
-for ac_arg in '' -std=gnu11
+for ac_arg in '' -std=gnu11 -std:c11
do
CC="$ac_save_CC $ac_arg"
if ac_fn_c_try_compile "$LINENO"
@@ -4997,16 +5080,16 @@
if test "x$ac_cv_prog_cc_c11" = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-printf "%s\n" "unsupported" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf '%s\n' "unsupported" >&6; }
else case e in #(
e) if test "x$ac_cv_prog_cc_c11" = x
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf '%s\n' "none needed" >&6; }
else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
-printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf '%s\n' "$ac_cv_prog_cc_c11" >&6; }
CC="$CC $ac_cv_prog_cc_c11" ;;
esac
fi
@@ -5017,7 +5100,7 @@
fi
if test x$ac_prog_cc_stdc = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
printf %s "checking for $CC option to enable C99 features... " >&6; }
if test ${ac_cv_prog_cc_c99+y}
then :
@@ -5046,16 +5129,16 @@
if test "x$ac_cv_prog_cc_c99" = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-printf "%s\n" "unsupported" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf '%s\n' "unsupported" >&6; }
else case e in #(
e) if test "x$ac_cv_prog_cc_c99" = x
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf '%s\n' "none needed" >&6; }
else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf '%s\n' "$ac_cv_prog_cc_c99" >&6; }
CC="$CC $ac_cv_prog_cc_c99" ;;
esac
fi
@@ -5066,7 +5149,7 @@
fi
if test x$ac_prog_cc_stdc = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
printf %s "checking for $CC option to enable C89 features... " >&6; }
if test ${ac_cv_prog_cc_c89+y}
then :
@@ -5095,16 +5178,16 @@
if test "x$ac_cv_prog_cc_c89" = xno
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-printf "%s\n" "unsupported" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf '%s\n' "unsupported" >&6; }
else case e in #(
e) if test "x$ac_cv_prog_cc_c89" = x
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf '%s\n' "none needed" >&6; }
else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf '%s\n' "$ac_cv_prog_cc_c89" >&6; }
CC="$CC $ac_cv_prog_cc_c89" ;;
esac
fi
@@ -5126,7 +5209,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
printf %s "checking whether $CC understands -c and -o together... " >&6; }
if test ${am_cv_prog_cc_c_o+y}
then :
@@ -5161,12 +5244,15 @@
break
fi
done
- rm -f core conftest*
+ # aligned with autoconf, so not including core; see bug#72225.
+ rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \
+ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \
+ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM
unset am_i ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-printf "%s\n" "$am_cv_prog_cc_c_o" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+printf '%s\n' "$am_cv_prog_cc_c_o" >&6; }
if test "$am_cv_prog_cc_c_o" != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
@@ -5185,7 +5271,7 @@
ac_config_commands="$ac_config_commands depfiles"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; }
cat > confinc.mk << 'END'
am__doit:
@@ -5222,8 +5308,8 @@
fi
done
rm -f confinc.* confmf.*
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
-printf "%s\n" "${_am_result}" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+printf '%s\n' "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
if test ${enable_dependency_tracking+y}
@@ -5248,7 +5334,7 @@
depcc="$CC" am_compiler_list=
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
printf %s "checking dependency style of $depcc... " >&6; }
if test ${am_cv_CC_dependencies_compiler_type+y}
then :
@@ -5361,8 +5447,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
if
@@ -5381,7 +5467,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
@@ -5452,8 +5538,8 @@
else
ac_cv_prog_CPP=$CPP
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-printf "%s\n" "$CPP" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf '%s\n' "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
@@ -5501,8 +5587,8 @@
then :
else case e in #(
- e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See 'config.log' for more details" "$LINENO" 5; } ;;
esac
@@ -5515,12 +5601,6 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -5535,7 +5615,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CXX+y}
then :
@@ -5556,7 +5636,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5568,11 +5648,11 @@
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-printf "%s\n" "$CXX" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf '%s\n' "$CXX" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -5585,7 +5665,7 @@
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CXX+y}
then :
@@ -5606,7 +5686,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5618,11 +5698,11 @@
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-printf "%s\n" "$ac_ct_CXX" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+printf '%s\n' "$ac_ct_CXX" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -5634,8 +5714,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
@@ -5645,7 +5725,7 @@
fi
fi
# Provide some information about the compiler.
-printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
@@ -5655,7 +5735,7 @@
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
+printf '%s\n' "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -5665,11 +5745,11 @@
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5
printf %s "checking whether the compiler supports GNU C++... " >&6; }
if test ${ac_cv_cxx_compiler_gnu+y}
then :
@@ -5701,8 +5781,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+printf '%s\n' "$ac_cv_cxx_compiler_gnu" >&6; }
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
if test $ac_compiler_gnu = yes; then
@@ -5712,7 +5792,7 @@
fi
ac_test_CXXFLAGS=${CXXFLAGS+y}
ac_save_CXXFLAGS=$CXXFLAGS
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
printf %s "checking whether $CXX accepts -g... " >&6; }
if test ${ac_cv_prog_cxx_g+y}
then :
@@ -5780,8 +5860,8 @@
ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-printf "%s\n" "$ac_cv_prog_cxx_g" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+printf '%s\n' "$ac_cv_prog_cxx_g" >&6; }
if test $ac_test_CXXFLAGS; then
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
@@ -5797,106 +5877,6 @@
CXXFLAGS=
fi
fi
-ac_prog_cxx_stdcxx=no
-if test x$ac_prog_cxx_stdcxx = xno
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
-printf %s "checking for $CXX option to enable C++11 features... " >&6; }
-if test ${ac_cv_prog_cxx_cxx11+y}
-then :
- printf %s "(cached) " >&6
-else case e in #(
- e) ac_cv_prog_cxx_cxx11=no
-ac_save_CXX=$CXX
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_cxx_conftest_cxx11_program
-_ACEOF
-for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA
-do
- CXX="$ac_save_CXX $ac_arg"
- if ac_fn_cxx_try_compile "$LINENO"
-then :
- ac_cv_prog_cxx_cxx11=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
- test "x$ac_cv_prog_cxx_cxx11" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CXX=$ac_save_CXX ;;
-esac
-fi
-
-if test "x$ac_cv_prog_cxx_cxx11" = xno
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-printf "%s\n" "unsupported" >&6; }
-else case e in #(
- e) if test "x$ac_cv_prog_cxx_cxx11" = x
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
-else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5
-printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; }
- CXX="$CXX $ac_cv_prog_cxx_cxx11" ;;
-esac
-fi
- ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
- ac_prog_cxx_stdcxx=cxx11 ;;
-esac
-fi
-fi
-if test x$ac_prog_cxx_stdcxx = xno
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
-printf %s "checking for $CXX option to enable C++98 features... " >&6; }
-if test ${ac_cv_prog_cxx_cxx98+y}
-then :
- printf %s "(cached) " >&6
-else case e in #(
- e) ac_cv_prog_cxx_cxx98=no
-ac_save_CXX=$CXX
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_cxx_conftest_cxx98_program
-_ACEOF
-for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA
-do
- CXX="$ac_save_CXX $ac_arg"
- if ac_fn_cxx_try_compile "$LINENO"
-then :
- ac_cv_prog_cxx_cxx98=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
- test "x$ac_cv_prog_cxx_cxx98" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CXX=$ac_save_CXX ;;
-esac
-fi
-
-if test "x$ac_cv_prog_cxx_cxx98" = xno
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-printf "%s\n" "unsupported" >&6; }
-else case e in #(
- e) if test "x$ac_cv_prog_cxx_cxx98" = x
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
-else case e in #(
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5
-printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; }
- CXX="$CXX $ac_cv_prog_cxx_cxx98" ;;
-esac
-fi
- ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98
- ac_prog_cxx_stdcxx=cxx98 ;;
-esac
-fi
-fi
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -5905,7 +5885,7 @@
depcc="$CXX" am_compiler_list=
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
printf %s "checking dependency style of $depcc... " >&6; }
if test ${am_cv_CXX_dependencies_compiler_type+y}
then :
@@ -6018,8 +5998,8 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+printf '%s\n' "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
if
@@ -6038,7 +6018,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
printf %s "checking how to run the C++ preprocessor... " >&6; }
if test -z "$CXXCPP"; then
if test ${ac_cv_prog_CXXCPP+y}
@@ -6105,8 +6085,8 @@
else
ac_cv_prog_CXXCPP=$CXXCPP
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-printf "%s\n" "$CXXCPP" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+printf '%s\n' "$CXXCPP" >&6; }
ac_preproc_ok=false
for ac_cxx_preproc_warn_flag in '' yes
do
@@ -6154,8 +6134,8 @@
then :
else case e in #(
- e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
See 'config.log' for more details" "$LINENO" 5; } ;;
esac
@@ -6176,7 +6156,7 @@
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_success=no
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
printf %s "checking whether $CXX supports C++11 features by default... " >&6; }
if test ${ax_cv_cxx_compile_cxx11+y}
then :
@@ -6244,16 +6224,16 @@
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-printf "%s\n" "$ax_cv_cxx_compile_cxx11" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
+printf '%s\n' "$ax_cv_cxx_compile_cxx11" >&6; }
if test x$ax_cv_cxx_compile_cxx11 = xyes; then
ac_success=yes
fi
if test x$ac_success = xno; then
for switch in -std=gnu++11 -std=gnu++0x; do
- cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+ cachevar=`printf '%s\n' "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"`
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; }
if eval test \${$cachevar+y}
then :
@@ -6325,8 +6305,8 @@
esac
fi
eval ac_res=\$$cachevar
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf '%s\n' "$ac_res" >&6; }
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
ac_success=yes
@@ -6337,8 +6317,8 @@
if test x$ac_success = xno; then
for switch in -std=c++11 -std=c++0x +std=c++11; do
- cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+ cachevar=`printf '%s\n' "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"`
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; }
if eval test \${$cachevar+y}
then :
@@ -6410,8 +6390,8 @@
esac
fi
eval ac_res=\$$cachevar
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf '%s\n' "$ac_res" >&6; }
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
ac_success=yes
@@ -6432,12 +6412,12 @@
else
if test x$ac_success = xno; then
HAVE_CXX11=0
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
-printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
+printf '%s\n' "$as_me: No compiler with C++11 support was found" >&6;}
else
HAVE_CXX11=1
-printf "%s\n" "#define HAVE_CXX11 1" >>confdefs.h
+printf '%s\n' "#define HAVE_CXX11 1" >>confdefs.h
fi
@@ -6445,8 +6425,6 @@
fi
-
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6471,7 +6449,7 @@
if test $ac_cache; then
ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
- printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ printf '%s\n' "#define $ac_item 1" >> confdefs.h
fi
ac_header= ac_cache=
elif test $ac_header; then
@@ -6491,10 +6469,10 @@
if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
then :
-printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+printf '%s\n' "#define STDC_HEADERS 1" >>confdefs.h
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
printf %s "checking whether byte ordering is bigendian... " >&6; }
if test ${ac_cv_c_bigendian+y}
then :
@@ -6716,17 +6694,17 @@
fi ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-printf "%s\n" "$ac_cv_c_bigendian" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+printf '%s\n' "$ac_cv_c_bigendian" >&6; }
case $ac_cv_c_bigendian in #(
yes)
- printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h
+ printf '%s\n' "#define WORDS_BIGENDIAN 1" >>confdefs.h
;; #(
no)
;; #(
universal)
-printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+printf '%s\n' "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
;; #(
*)
@@ -6739,7 +6717,7 @@
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
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_STRIP+y}
then :
@@ -6762,7 +6740,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_STRIP="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6775,11 +6753,11 @@
fi
STRIP=$ac_cv_path_STRIP
if test -n "$STRIP"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-printf "%s\n" "$STRIP" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf '%s\n' "$STRIP" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -6788,7 +6766,7 @@
ac_pt_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_ac_pt_STRIP+y}
then :
@@ -6811,7 +6789,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_STRIP="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6824,11 +6802,11 @@
fi
ac_pt_STRIP=$ac_cv_path_ac_pt_STRIP
if test -n "$ac_pt_STRIP"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_STRIP" >&5
-printf "%s\n" "$ac_pt_STRIP" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_STRIP" >&5
+printf '%s\n' "$ac_pt_STRIP" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
if test "x$ac_pt_STRIP" = x; then
@@ -6836,8 +6814,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_pt_STRIP
@@ -6847,7 +6825,7 @@
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5
printf %s "checking for sqrt in -lm... " >&6; }
if test ${ac_cv_lib_m_sqrt+y}
then :
@@ -6888,11 +6866,11 @@
LIBS=$ac_check_lib_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5
-printf "%s\n" "$ac_cv_lib_m_sqrt" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5
+printf '%s\n' "$ac_cv_lib_m_sqrt" >&6; }
if test "x$ac_cv_lib_m_sqrt" = xyes
then :
- printf "%s\n" "#define HAVE_LIBM 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_LIBM 1" >>confdefs.h
LIBS="-lm $LIBS"
@@ -6912,28 +6890,28 @@
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use SSE instructions on x86" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use SSE instructions on x86" >&5
printf %s "checking whether to use SSE instructions on x86... " >&6; }
case $host_cpu in
i*86)
if test "$enable_sse" = no ; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no - WARNING: Testsuite will probably fail" >&5
-printf "%s\n" "no - WARNING: Testsuite will probably fail" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no - WARNING: Testsuite will probably fail" >&5
+printf '%s\n' "no - WARNING: Testsuite will probably fail" >&6; }
else
test "$enable_sse" != yes || enable_sse=sse2
if test yes = "$GXX"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (configure with --disable-sse to disable)" >&5
-printf "%s\n" "yes (configure with --disable-sse to disable)" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes (configure with --disable-sse to disable)" >&5
+printf '%s\n' "yes (configure with --disable-sse to disable)" >&6; }
AM_CXXFLAGS="$AM_CXXFLAGS -mfpmath=sse -m$enable_sse -mtune=generic"
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: don't know how to for compiler $CXX" >&5
-printf "%s\n" "don't know how to for compiler $CXX" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: don't know how to for compiler $CXX" >&5
+printf '%s\n' "don't know how to for compiler $CXX" >&6; }
fi
fi
;;
*)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: non-x86 arch ($host_cpu)" >&5
-printf "%s\n" "non-x86 arch ($host_cpu)" >&6; } ;;
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: non-x86 arch ($host_cpu)" >&5
+printf '%s\n' "non-x86 arch ($host_cpu)" >&6; } ;;
esac
wx_libs="core,gl"
@@ -6973,11 +6951,11 @@
else
wxdef=__WXGTK__
fi
- for ac_prog in wx-config-3.0 wx-config-gtk3 wx-config
+ for ac_prog in wx-config-3.2 wx-config-gtk3 wx-config
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_WX_CONFIG+y}
then :
@@ -7000,7 +6978,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_WX_CONFIG="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7013,11 +6991,11 @@
fi
WX_CONFIG=$ac_cv_path_WX_CONFIG
if test -n "$WX_CONFIG"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG" >&5
-printf "%s\n" "$WX_CONFIG" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG" >&5
+printf '%s\n' "$WX_CONFIG" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -7046,7 +7024,7 @@
esac
WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XF86VidModeQueryVersion in -lXxf86vm" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for XF86VidModeQueryVersion in -lXxf86vm" >&5
printf %s "checking for XF86VidModeQueryVersion in -lXxf86vm... " >&6; }
if test ${ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion+y}
then :
@@ -7087,8 +7065,8 @@
LIBS=$ac_check_lib_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&5
-printf "%s\n" "$ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&5
+printf '%s\n' "$ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&6; }
if test "x$ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" = xyes
then :
WX_LIBS="$WX_LIBS -lXxf86vm"
@@ -7096,7 +7074,7 @@
save_LIBS=$LIBS
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing glPushMatrix" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing glPushMatrix" >&5
printf %s "checking for library containing glPushMatrix... " >&6; }
if test ${ac_cv_search_glPushMatrix+y}
then :
@@ -7154,8 +7132,8 @@
LIBS=$ac_func_search_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_glPushMatrix" >&5
-printf "%s\n" "$ac_cv_search_glPushMatrix" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_glPushMatrix" >&5
+printf '%s\n' "$ac_cv_search_glPushMatrix" >&6; }
ac_res=$ac_cv_search_glPushMatrix
if test "$ac_res" != no
then :
@@ -7163,7 +7141,7 @@
WX_LIBS="$WX_LIBS $ac_cv_search_glPushMatrix"
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gluProject" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing gluProject" >&5
printf %s "checking for library containing gluProject... " >&6; }
if test ${ac_cv_search_gluProject+y}
then :
@@ -7221,8 +7199,8 @@
LIBS=$ac_func_search_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gluProject" >&5
-printf "%s\n" "$ac_cv_search_gluProject" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gluProject" >&5
+printf '%s\n' "$ac_cv_search_gluProject" >&6; }
ac_res=$ac_cv_search_gluProject
if test "$ac_res" != no
then :
@@ -7237,14 +7215,14 @@
"
if test "x$ac_cv_header_GL_gl_h" = xyes
then :
- printf "%s\n" "#define HAVE_GL_GL_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_GL_GL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "OpenGL/gl.h" "ac_cv_header_OpenGL_gl_h" "
"
if test "x$ac_cv_header_OpenGL_gl_h" = xyes
then :
- printf "%s\n" "#define HAVE_OPENGL_GL_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_OPENGL_GL_H 1" >>confdefs.h
fi
@@ -7252,14 +7230,14 @@
"
if test "x$ac_cv_header_GL_glu_h" = xyes
then :
- printf "%s\n" "#define HAVE_GL_GLU_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_GL_GLU_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "OpenGL/glu.h" "ac_cv_header_OpenGL_glu_h" "
"
if test "x$ac_cv_header_OpenGL_glu_h" = xyes
then :
- printf "%s\n" "#define HAVE_OPENGL_GLU_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_OPENGL_GLU_H 1" >>confdefs.h
fi
@@ -7273,7 +7251,7 @@
"
if test "x$ac_cv_header_GL_glext_h" = xyes
then :
- printf "%s\n" "#define HAVE_GL_GLEXT_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_GL_GLEXT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "OpenGL/glext.h" "ac_cv_header_OpenGL_glext_h" "
@@ -7286,7 +7264,7 @@
"
if test "x$ac_cv_header_OpenGL_glext_h" = xyes
then :
- printf "%s\n" "#define HAVE_OPENGL_GLEXT_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_OPENGL_GLEXT_H 1" >>confdefs.h
fi
@@ -7308,7 +7286,7 @@
# 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.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wxChar" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of wxChar" >&5
printf %s "checking size of wxChar... " >&6; }
if test ${ac_cv_sizeof_wxChar+y}
then :
@@ -7322,25 +7300,18 @@
then :
else case e in #(
- e) if test "$ac_cv_type_wxChar" = yes; then
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (wxChar)
-See 'config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_wxChar=0
- fi ;;
+ e) ac_cv_sizeof_wxChar=0 ;;
esac
fi
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wxChar" >&5
-printf "%s\n" "$ac_cv_sizeof_wxChar" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wxChar" >&5
+printf '%s\n' "$ac_cv_sizeof_wxChar" >&6; }
-printf "%s\n" "#define SIZEOF_WXCHAR $ac_cv_sizeof_wxChar" >>confdefs.h
+printf '%s\n' "#define SIZEOF_WXCHAR $ac_cv_sizeof_wxChar" >>confdefs.h
CFLAGS=$save_CFLAGS
@@ -7356,7 +7327,7 @@
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_PKG_CONFIG+y}
then :
@@ -7379,7 +7350,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7392,11 +7363,11 @@
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-printf "%s\n" "$PKG_CONFIG" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf '%s\n' "$PKG_CONFIG" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -7405,7 +7376,7 @@
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
then :
@@ -7428,7 +7399,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7441,11 +7412,11 @@
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
@@ -7453,8 +7424,8 @@
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
@@ -7466,19 +7437,22 @@
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
PKG_CONFIG=""
fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
-printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test -z "$PKG_CONFIG"; then
+ as_fn_error $? "pkg-config not found" "$LINENO" 5
+fi
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5
+printf %s "checking for $CC options to detect undeclared functions... " >&6; }
if test ${ac_cv_c_undeclared_builtin_options+y}
then :
printf %s "(cached) " >&6
@@ -7546,12 +7520,12 @@
;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
-printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; }
case $ac_cv_c_undeclared_builtin_options in #(
'cannot detect') :
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "cannot make $CC report undeclared builtins
See 'config.log' for more details" "$LINENO" 5; } ;; #(
'none needed') :
@@ -7560,21 +7534,64 @@
ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
esac
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5
+printf %s "checking for $CC options to ignore future-version functions... " >&6; }
+if test ${ac_cv_c_future_darwin_options+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) ac_compile_saved="$ac_compile"
+ ac_compile="$ac_compile -Werror=unguarded-availability-new"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if ! (defined __APPLE__ && defined __MACH__)
+ #error "-Werror=unguarded-availability-new not needed here"
+ #endif
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new'
+else case e in #(
+ e) ac_cv_c_future_darwin_options='none needed' ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ ac_compile="$ac_compile_saved"
+ ;;
+esac
+fi
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5
+printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; }
+ case $ac_cv_c_future_darwin_options in #(
+ 'none needed') :
+ ac_c_future_darwin_options='' ;; #(
+ *) :
+ ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;;
+esac
+
pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libavcodec libavformat libswscale libavutil" >&5
-printf %s "checking for libavcodec libavformat libswscale libavutil... " >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libavcodec >= 57 libavformat libswscale libavutil" >&5
+printf %s "checking for libavcodec >= 57 libavformat libswscale libavutil... " >&6; }
if test -n "$FFMPEG_CFLAGS"; then
pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec libavformat libswscale libavutil\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libavcodec libavformat libswscale libavutil") 2>&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 57 libavformat libswscale libavutil\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libavcodec >= 57 libavformat libswscale libavutil") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec libavformat libswscale libavutil" 2>/dev/null`
+ pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 57 libavformat libswscale libavutil" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -7586,12 +7603,12 @@
pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec libavformat libswscale libavutil\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libavcodec libavformat libswscale libavutil") 2>&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 57 libavformat libswscale libavutil\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libavcodec >= 57 libavformat libswscale libavutil") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec libavformat libswscale libavutil" 2>/dev/null`
+ pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 57 libavformat libswscale libavutil" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -7603,8 +7620,8 @@
if test $pkg_failed = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -7612,9 +7629,9 @@
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec libavformat libswscale libavutil" 2>&1`
+ FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec >= 57 libavformat libswscale libavutil" 2>&1`
else
- FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec libavformat libswscale libavutil" 2>&1`
+ FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec >= 57 libavformat libswscale libavutil" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$FFMPEG_PKG_ERRORS" >&5
@@ -7622,18 +7639,18 @@
elif test $pkg_failed = untried; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
else
FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS
FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
-printf "%s\n" "#define WITH_FFMPEG 1" >>confdefs.h
+printf '%s\n' "#define WITH_FFMPEG 1" >>confdefs.h
save_CXXFLAGS=$CXXFLAGS
save_LIBS=$LIBS
@@ -7642,66 +7659,66 @@
ac_fn_c_check_func "$LINENO" "av_guess_format" "ac_cv_func_av_guess_format"
if test "x$ac_cv_func_av_guess_format" = xyes
then :
- printf "%s\n" "#define HAVE_AV_GUESS_FORMAT 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AV_GUESS_FORMAT 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avio_open" "ac_cv_func_avio_open"
if test "x$ac_cv_func_avio_open" = xyes
then :
- printf "%s\n" "#define HAVE_AVIO_OPEN 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVIO_OPEN 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avio_close" "ac_cv_func_avio_close"
if test "x$ac_cv_func_avio_close" = xyes
then :
- printf "%s\n" "#define HAVE_AVIO_CLOSE 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVIO_CLOSE 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avformat_write_header" "ac_cv_func_avformat_write_header"
if test "x$ac_cv_func_avformat_write_header" = xyes
then :
- printf "%s\n" "#define HAVE_AVFORMAT_WRITE_HEADER 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVFORMAT_WRITE_HEADER 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avcodec_encode_video2" "ac_cv_func_avcodec_encode_video2"
if test "x$ac_cv_func_avcodec_encode_video2" = xyes
then :
- printf "%s\n" "#define HAVE_AVCODEC_ENCODE_VIDEO2 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVCODEC_ENCODE_VIDEO2 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avcodec_free_frame" "ac_cv_func_avcodec_free_frame"
if test "x$ac_cv_func_avcodec_free_frame" = xyes
then :
- printf "%s\n" "#define HAVE_AVCODEC_FREE_FRAME 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVCODEC_FREE_FRAME 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avcodec_open2" "ac_cv_func_avcodec_open2"
if test "x$ac_cv_func_avcodec_open2" = xyes
then :
- printf "%s\n" "#define HAVE_AVCODEC_OPEN2 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVCODEC_OPEN2 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "avformat_new_stream" "ac_cv_func_avformat_new_stream"
if test "x$ac_cv_func_avformat_new_stream" = xyes
then :
- printf "%s\n" "#define HAVE_AVFORMAT_NEW_STREAM 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AVFORMAT_NEW_STREAM 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "av_frame_alloc" "ac_cv_func_av_frame_alloc"
if test "x$ac_cv_func_av_frame_alloc" = xyes
then :
- printf "%s\n" "#define HAVE_AV_FRAME_ALLOC 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AV_FRAME_ALLOC 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "av_frame_free" "ac_cv_func_av_frame_free"
if test "x$ac_cv_func_av_frame_free" = xyes
then :
- printf "%s\n" "#define HAVE_AV_FRAME_FREE 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_AV_FRAME_FREE 1" >>confdefs.h
fi
ac_fn_check_decl "$LINENO" "AVMEDIA_TYPE_VIDEO" "ac_cv_have_decl_AVMEDIA_TYPE_VIDEO" "#include
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
+" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS"
if test "x$ac_cv_have_decl_AVMEDIA_TYPE_VIDEO" = xyes
then :
ac_have_decl=1
@@ -7709,10 +7726,10 @@
e) ac_have_decl=0 ;;
esac
fi
-printf "%s\n" "#define HAVE_DECL_AVMEDIA_TYPE_VIDEO $ac_have_decl" >>confdefs.h
+printf '%s\n' "#define HAVE_DECL_AVMEDIA_TYPE_VIDEO $ac_have_decl" >>confdefs.h
ac_fn_check_decl "$LINENO" "AV_CODEC_ID_NONE" "ac_cv_have_decl_AV_CODEC_ID_NONE" "#include
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
+" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS"
if test "x$ac_cv_have_decl_AV_CODEC_ID_NONE" = xyes
then :
ac_have_decl=1
@@ -7720,10 +7737,10 @@
e) ac_have_decl=0 ;;
esac
fi
-printf "%s\n" "#define HAVE_DECL_AV_CODEC_ID_NONE $ac_have_decl" >>confdefs.h
+printf '%s\n' "#define HAVE_DECL_AV_CODEC_ID_NONE $ac_have_decl" >>confdefs.h
ac_fn_check_decl "$LINENO" "AV_PIX_FMT_RGB24" "ac_cv_have_decl_AV_PIX_FMT_RGB24" "#include
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
+" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS"
if test "x$ac_cv_have_decl_AV_PIX_FMT_RGB24" = xyes
then :
ac_have_decl=1
@@ -7731,10 +7748,10 @@
e) ac_have_decl=0 ;;
esac
fi
-printf "%s\n" "#define HAVE_DECL_AV_PIX_FMT_RGB24 $ac_have_decl" >>confdefs.h
+printf '%s\n' "#define HAVE_DECL_AV_PIX_FMT_RGB24 $ac_have_decl" >>confdefs.h
ac_fn_check_decl "$LINENO" "AV_PIX_FMT_YUV420P" "ac_cv_have_decl_AV_PIX_FMT_YUV420P" "#include
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
+" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS"
if test "x$ac_cv_have_decl_AV_PIX_FMT_YUV420P" = xyes
then :
ac_have_decl=1
@@ -7742,7 +7759,7 @@
e) ac_have_decl=0 ;;
esac
fi
-printf "%s\n" "#define HAVE_DECL_AV_PIX_FMT_YUV420P $ac_have_decl" >>confdefs.h
+printf '%s\n' "#define HAVE_DECL_AV_PIX_FMT_YUV420P $ac_have_decl" >>confdefs.h
CXXFLAGS=$save_CXXFLAGS
LIBS=$save_LIBS
@@ -7753,17 +7770,17 @@
pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for proj >= 6.2.0" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for proj >= 6.2.0" >&5
printf %s "checking for proj >= 6.2.0... " >&6; }
if test -n "$PROJ_CFLAGS"; then
pkg_cv_PROJ_CFLAGS="$PROJ_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"proj >= 6.2.0\""; } >&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"proj >= 6.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "proj >= 6.2.0") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_PROJ_CFLAGS=`$PKG_CONFIG --cflags "proj >= 6.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -7777,10 +7794,10 @@
pkg_cv_PROJ_LIBS="$PROJ_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"proj >= 6.2.0\""; } >&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"proj >= 6.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "proj >= 6.2.0") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_PROJ_LIBS=`$PKG_CONFIG --libs "proj >= 6.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -7794,8 +7811,8 @@
if test $pkg_failed = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -7811,7 +7828,7 @@
echo "$PROJ_PKG_ERRORS" >&5
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for proj_create_crs_to_crs_from_pj in -lproj" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for proj_create_crs_to_crs_from_pj in -lproj" >&5
printf %s "checking for proj_create_crs_to_crs_from_pj in -lproj... " >&6; }
if test ${ac_cv_lib_proj_proj_create_crs_to_crs_from_pj+y}
then :
@@ -7852,8 +7869,8 @@
LIBS=$ac_check_lib_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&5
-printf "%s\n" "$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&5
+printf '%s\n' "$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&6; }
if test "x$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" = xyes
then :
@@ -7869,10 +7886,10 @@
elif test $pkg_failed = untried; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for proj_create_crs_to_crs_from_pj in -lproj" >&5
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for proj_create_crs_to_crs_from_pj in -lproj" >&5
printf %s "checking for proj_create_crs_to_crs_from_pj in -lproj... " >&6; }
if test ${ac_cv_lib_proj_proj_create_crs_to_crs_from_pj+y}
then :
@@ -7913,8 +7930,8 @@
LIBS=$ac_check_lib_save_LIBS ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&5
-printf "%s\n" "$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&5
+printf '%s\n' "$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" >&6; }
if test "x$ac_cv_lib_proj_proj_create_crs_to_crs_from_pj" = xyes
then :
@@ -7932,8 +7949,8 @@
else
PROJ_CFLAGS=$pkg_cv_PROJ_CFLAGS
PROJ_LIBS=$pkg_cv_PROJ_LIBS
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
fi
@@ -7942,17 +7959,17 @@
pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdal >= 2.3" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdal >= 2.3" >&5
printf %s "checking for gdal >= 2.3... " >&6; }
if test -n "$GDAL_CFLAGS"; then
pkg_cv_GDAL_CFLAGS="$GDAL_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdal >= 2.3\""; } >&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdal >= 2.3\""; } >&5
($PKG_CONFIG --exists --print-errors "gdal >= 2.3") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_GDAL_CFLAGS=`$PKG_CONFIG --cflags "gdal >= 2.3" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -7966,10 +7983,10 @@
pkg_cv_GDAL_LIBS="$GDAL_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdal >= 2.3\""; } >&5
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdal >= 2.3\""; } >&5
($PKG_CONFIG --exists --print-errors "gdal >= 2.3") 2>&5
ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_GDAL_LIBS=`$PKG_CONFIG --libs "gdal >= 2.3" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -7983,8 +8000,8 @@
if test $pkg_failed = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -8003,29 +8020,29 @@
if test "$mswindows" = no ; then
as_fn_error $? "GDAL required for geodata handling" "$LINENO" 5
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GDAL required for geodata handling" >&5
-printf "%s\n" "$as_me: WARNING: GDAL required for geodata handling" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: GDAL required for geodata handling" >&5
+printf '%s\n' "$as_me: WARNING: GDAL required for geodata handling" >&2;}
fi
elif test $pkg_failed = untried; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
if test "$mswindows" = no ; then
as_fn_error $? "GDAL required for geodata handling" "$LINENO" 5
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: GDAL required for geodata handling" >&5
-printf "%s\n" "$as_me: WARNING: GDAL required for geodata handling" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: GDAL required for geodata handling" >&5
+printf '%s\n' "$as_me: WARNING: GDAL required for geodata handling" >&2;}
fi
else
GDAL_CFLAGS=$pkg_cv_GDAL_CFLAGS
GDAL_LIBS=$pkg_cv_GDAL_LIBS
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf '%s\n' "yes" >&6; }
-printf "%s\n" "#define HAVE_GDAL 1" >>confdefs.h
+printf '%s\n' "#define HAVE_GDAL 1" >>confdefs.h
fi
@@ -8036,7 +8053,7 @@
ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
if test "x$ac_cv_header_string_h" = xyes
then :
- printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_STRING_H 1" >>confdefs.h
fi
@@ -8044,25 +8061,25 @@
ac_fn_c_check_func "$LINENO" "popen" "ac_cv_func_popen"
if test "x$ac_cv_func_popen" = xyes
then :
- printf "%s\n" "#define HAVE_POPEN 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_POPEN 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
if test "x$ac_cv_func_hypot" = xyes
then :
- printf "%s\n" "#define HAVE_HYPOT 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_HYPOT 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
if test "x$ac_cv_func_mmap" = xyes
then :
- printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_MMAP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
if test "x$ac_cv_func_strdup" = xyes
then :
- printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_STRDUP 1" >>confdefs.h
fi
@@ -8070,44 +8087,75 @@
ac_fn_c_check_func "$LINENO" "getc_unlocked" "ac_cv_func_getc_unlocked"
if test "x$ac_cv_func_getc_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_GETC_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_GETC_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "putc_unlocked" "ac_cv_func_putc_unlocked"
if test "x$ac_cv_func_putc_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_PUTC_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_PUTC_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "putchar_unlocked" "ac_cv_func_putchar_unlocked"
if test "x$ac_cv_func_putchar_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_PUTCHAR_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_PUTCHAR_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "feof_unlocked" "ac_cv_func_feof_unlocked"
if test "x$ac_cv_func_feof_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_FEOF_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_FEOF_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "ferror_unlocked" "ac_cv_func_ferror_unlocked"
if test "x$ac_cv_func_ferror_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_FERROR_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_FERROR_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "fread_unlocked" "ac_cv_func_fread_unlocked"
if test "x$ac_cv_func_fread_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_FREAD_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_FREAD_UNLOCKED 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "fwrite_unlocked" "ac_cv_func_fwrite_unlocked"
if test "x$ac_cv_func_fwrite_unlocked" = xyes
then :
- printf "%s\n" "#define HAVE_FWRITE_UNLOCKED 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_FWRITE_UNLOCKED 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "_getc_nolock" "ac_cv_func__getc_nolock"
+if test "x$ac_cv_func__getc_nolock" = xyes
+then :
+ printf '%s\n' "#define HAVE__GETC_NOLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_putc_nolock" "ac_cv_func__putc_nolock"
+if test "x$ac_cv_func__putc_nolock" = xyes
+then :
+ printf '%s\n' "#define HAVE__PUTC_NOLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_putchar_nolock" "ac_cv_func__putchar_nolock"
+if test "x$ac_cv_func__putchar_nolock" = xyes
+then :
+ printf '%s\n' "#define HAVE__PUTCHAR_NOLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_fread_nolock" "ac_cv_func__fread_nolock"
+if test "x$ac_cv_func__fread_nolock" = xyes
+then :
+ printf '%s\n' "#define HAVE__FREAD_NOLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_fwrite_nolock" "ac_cv_func__fwrite_nolock"
+if test "x$ac_cv_func__fwrite_nolock" = xyes
+then :
+ printf '%s\n' "#define HAVE__FWRITE_NOLOCK 1" >>confdefs.h
fi
@@ -8115,13 +8163,13 @@
ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
if test "x$ac_cv_func_setenv" = xyes
then :
- printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_SETENV 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
if test "x$ac_cv_func_unsetenv" = xyes
then :
- printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_UNSETENV 1" >>confdefs.h
fi
@@ -8129,7 +8177,7 @@
ac_fn_c_check_func "$LINENO" "fmemopen" "ac_cv_func_fmemopen"
if test "x$ac_cv_func_fmemopen" = xyes
then :
- printf "%s\n" "#define HAVE_FMEMOPEN 1" >>confdefs.h
+ printf '%s\n' "#define HAVE_FMEMOPEN 1" >>confdefs.h
fi
@@ -8137,20 +8185,20 @@
ac_fn_c_check_func "$LINENO" "_vfprintf_p" "ac_cv_func__vfprintf_p"
if test "x$ac_cv_func__vfprintf_p" = xyes
then :
- printf "%s\n" "#define HAVE__VFPRINTF_P 1" >>confdefs.h
+ printf '%s\n' "#define HAVE__VFPRINTF_P 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "_vsprintf_p" "ac_cv_func__vsprintf_p"
if test "x$ac_cv_func__vsprintf_p" = xyes
then :
- printf "%s\n" "#define HAVE__VSPRINTF_P 1" >>confdefs.h
+ printf '%s\n' "#define HAVE__VSPRINTF_P 1" >>confdefs.h
fi
# Extract the first word of "sphinx-build", so it can be a program name with args.
set dummy sphinx-build; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_SPHINX_BUILD+y}
then :
@@ -8173,7 +8221,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_SPHINX_BUILD="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8187,11 +8235,11 @@
fi
SPHINX_BUILD=$ac_cv_path_SPHINX_BUILD
if test -n "$SPHINX_BUILD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SPHINX_BUILD" >&5
-printf "%s\n" "$SPHINX_BUILD" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $SPHINX_BUILD" >&5
+printf '%s\n' "$SPHINX_BUILD" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -8199,7 +8247,7 @@
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_MSGFMT+y}
then :
@@ -8222,7 +8270,7 @@
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_MSGFMT="$as_dir$ac_word$ac_exec_ext"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8236,11 +8284,11 @@
fi
MSGFMT=$ac_cv_path_MSGFMT
if test -n "$MSGFMT"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-printf "%s\n" "$MSGFMT" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+printf '%s\n' "$MSGFMT" >&6; }
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf '%s\n' "no" >&6; }
fi
@@ -8291,18 +8339,18 @@
fi
if test "$enable_largefile,$enable_year2038" != no,no
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5
-printf %s "checking for $CC option to enable large file support... " >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to support large files" >&5
+printf %s "checking for $CC option to support large files... " >&6; }
if test ${ac_cv_sys_largefile_opts+y}
then :
printf %s "(cached) " >&6
else case e in #(
- e) ac_save_CC="$CC"
+ e) ac_save_CPPFLAGS=$CPPFLAGS
ac_opt_found=no
- for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do
+ for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1"; do
if test x"$ac_opt" != x"none needed"
then :
- CC="$ac_save_CC $ac_opt"
+ CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8331,12 +8379,12 @@
if test x"$ac_opt" = x"none needed"
then :
# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
- CC="$CC -DFTYPE=ino_t"
+ CPPFLAGS="$CPPFLAGS -DFTYPE=ino_t"
if ac_fn_c_try_compile "$LINENO"
then :
else case e in #(
- e) CC="$CC -D_FILE_OFFSET_BITS=64"
+ e) CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64"
if ac_fn_c_try_compile "$LINENO"
then :
ac_opt='-D_FILE_OFFSET_BITS=64'
@@ -8352,13 +8400,13 @@
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test $ac_opt_found = no || break
done
- CC="$ac_save_CC"
+ CPPFLAGS=$ac_save_CPPFLAGS
test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5
-printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5
+printf '%s\n' "$ac_cv_sys_largefile_opts" >&6; }
ac_have_largefile=yes
case $ac_cv_sys_largefile_opts in #(
@@ -8370,22 +8418,20 @@
ac_have_largefile=no ;; #(
"-D_FILE_OFFSET_BITS=64") :
-printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+printf '%s\n' "#define _FILE_OFFSET_BITS 64" >>confdefs.h
;; #(
"-D_LARGE_FILES=1") :
-printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
+printf '%s\n' "#define _LARGE_FILES 1" >>confdefs.h
;; #(
- "-n32") :
- CC="$CC -n32" ;; #(
*) :
as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;;
esac
if test "$enable_year2038" != no
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5
-printf %s "checking for $CC option for timestamps after 2038... " >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to support timestamps after 2038" >&5
+printf %s "checking for $CC option to support timestamps after 2038... " >&6; }
if test ${ac_cv_sys_year2038_opts+y}
then :
printf %s "(cached) " >&6
@@ -8428,8 +8474,8 @@
test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;;
esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5
-printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; }
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5
+printf '%s\n' "$ac_cv_sys_year2038_opts" >&6; }
ac_have_year2038=yes
case $ac_cv_sys_year2038_opts in #(
@@ -8439,15 +8485,15 @@
ac_have_year2038=no ;; #(
"-D_TIME_BITS=64") :
-printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h
+printf '%s\n' "#define _TIME_BITS 64" >>confdefs.h
;; #(
"-D__MINGW_USE_VC2005_COMPAT") :
-printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h
+printf '%s\n' "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h
;; #(
"-U_USE_32_BIT_TIME_T"*) :
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It
will stop working after mid-January 2038. Remove
_USE_32BIT_TIME_T from the compiler flags.
@@ -8466,8 +8512,8 @@
enableval=$enable_profiling; case $enableval in
yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
AM_CFLAGS="$AM_CFLAGS -pg"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: building binaries to generate profiling information" >&5
-printf "%s\n" "building binaries to generate profiling information" >&6; };;
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: building binaries to generate profiling information" >&5
+printf '%s\n' "building binaries to generate profiling information" >&6; };;
no) ;;
*) as_fn_error $? "bad value $enableval for --enable-profiling" "$LINENO" 5 ;;
esac
@@ -8493,7 +8539,7 @@
DATADIR="$ac_define_dir"
-printf "%s\n" "#define DATADIR \"$ac_define_dir\"" >>confdefs.h
+printf '%s\n' "#define DATADIR \"$ac_define_dir\"" >>confdefs.h
test "$prefix_NONE" && prefix=NONE
test "$exec_prefix_NONE" && exec_prefix=NONE
@@ -8502,7 +8548,7 @@
-ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile lib/images/Makefile tests/Makefile vim/Makefile survex.iss doc/index.htm survex.spec lib/Info.plist"
+ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile lib/images/Makefile tests/Makefile vim/Makefile survex.iss doc/index.htm lib/Info.plist"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -8520,44 +8566,7 @@
_ACEOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}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"
- ;; #(
- *)
- # 'set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
+ac_cache_dump |
sed '
/^ac_cv_env_/b end
t clear
@@ -8569,8 +8578,8 @@
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf '%s\n' "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
@@ -8584,8 +8593,8 @@
fi
fi
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -8602,7 +8611,7 @@
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
+ ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -8613,14 +8622,14 @@
LTLIBOBJS=$ac_ltlibobjs
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
printf %s "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
-printf "%s\n" "done" >&6; }
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5
+printf '%s\n' "done" >&6; }
case $enable_silent_rules in # (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
@@ -8670,13 +8679,21 @@
: "${CONFIG_STATUS=./config.status}"
+case $CONFIG_STATUS in #(
+ -*) :
+ CONFIG_STATUS=./$CONFIG_STATUS ;; #(
+ */*) :
+ ;; #(
+ *) :
+ CONFIG_STATUS=./$CONFIG_STATUS ;;
+esac
+
ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
+ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"'
+{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
@@ -8690,7 +8707,7 @@
SHELL=\${CONFIG_SHELL-$SHELL}
export SHELL
_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
@@ -8702,7 +8719,7 @@
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
+ # contradicts POSIX and common usage. Disable this.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else case e in #(
@@ -8789,7 +8806,7 @@
as_myself=$0
fi
if test ! -f "$as_myself"; then
- printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
@@ -8805,9 +8822,9 @@
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- printf "%s\n" "$as_me: error: $2" >&2
+ printf '%s\n' "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -8902,7 +8919,7 @@
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X/"$0" |
+printf '%s\n' X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -8924,29 +8941,6 @@
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# Determine whether it's possible to make 'echo' print without a newline.
-# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
-# for compatibility with existing Makefiles.
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-# For backward compatibility with old third-party macros, we provide
-# the shell variables $as_echo and $as_echo_n. New code should use
-# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
-as_echo='printf %s\n'
-as_echo_n='printf %s'
-
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -8988,7 +8982,7 @@
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -8997,7 +8991,7 @@
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$as_dir" |
+printf '%s\n' X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9050,19 +9044,19 @@
exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
+## ------------------------------------- ##
+## Main body of "$CONFIG_STATUS" script. ##
+## ------------------------------------- ##
_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by survex $as_me 1.4.17, which was
-generated by GNU Autoconf 2.72. Invocation command line was
+This file was extended by survex $as_me 1.4.22, which was
+generated by GNU Autoconf 2.73. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -9084,7 +9078,7 @@
esac
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_headers="$ac_config_headers"
@@ -9092,7 +9086,7 @@
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
'$as_me' instantiates files and other configuration actions
from templates according to the current configuration. Unless the files
@@ -9124,16 +9118,16 @@
Report bugs to ."
_ACEOF
-ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
-ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-survex config.status 1.4.17
-configured by $0, generated by GNU Autoconf 2.72,
+survex config.status 1.4.22
+configured by $0, generated by GNU Autoconf 2.73,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2023 Free Software Foundation, Inc.
+Copyright (C) 2026 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -9142,10 +9136,14 @@
INSTALL='$INSTALL'
MKDIR_P='$MKDIR_P'
AWK='$AWK'
-test -n "\$AWK" || AWK=awk
+test -n "\$AWK" || {
+ awk '' >$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
@@ -9173,15 +9171,15 @@
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- printf "%s\n" "$ac_cs_version"; exit ;;
+ printf '%s\n' "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- printf "%s\n" "$ac_cs_config"; exit ;;
+ printf '%s\n' "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -9189,7 +9187,7 @@
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
@@ -9198,7 +9196,7 @@
as_fn_error $? "ambiguous option: '$1'
Try '$0 --help' for more information.";;
--help | --hel | -h )
- printf "%s\n" "$ac_cs_usage"; exit ;;
+ printf '%s\n' "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
@@ -9222,29 +9220,29 @@
fi
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
fi
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- printf "%s\n" "$ac_log"
+ printf '%s\n' "$ac_log"
} >&5
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
@@ -9252,7 +9250,7 @@
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
@@ -9270,7 +9268,6 @@
"vim/Makefile") CONFIG_FILES="$CONFIG_FILES vim/Makefile" ;;
"survex.iss") CONFIG_FILES="$CONFIG_FILES survex.iss" ;;
"doc/index.htm") CONFIG_FILES="$CONFIG_FILES doc/index.htm" ;;
- "survex.spec") CONFIG_FILES="$CONFIG_FILES survex.spec" ;;
"lib/Info.plist") CONFIG_FILES="$CONFIG_FILES lib/Info.plist" ;;
*) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
@@ -9357,9 +9354,9 @@
# Create commands to substitute file output variables.
{
- echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
- echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
- echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
+ echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' &&
+ printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
+ printf '%s\n' "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
echo "_ACAWK" &&
echo "_ACEOF"
} >conf$$files.sh &&
@@ -9373,13 +9370,13 @@
echo "_ACEOF"
} >conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
@@ -9390,7 +9387,7 @@
done
rm -f conf$$subs.sh
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
@@ -9435,9 +9432,9 @@
N
s/\n//
}
-' >>$CONFIG_STATUS || ac_write_fail=1
+' >>"$CONFIG_STATUS" || ac_write_fail=1
rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
_ACAWK
cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
@@ -9472,7 +9469,7 @@
\$ac_cs_awk_pipe_fini
_ACAWK
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
@@ -9504,7 +9501,7 @@
}'
fi
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
# Set up the scripts for CONFIG_HEADERS section.
@@ -9575,9 +9572,9 @@
b cont
' >$CONFIG_STATUS || ac_write_fail=1
+"/g' >>"$CONFIG_STATUS" || ac_write_fail=1
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
for (key in D) D_is_set[key] = 1
FS = ""
}
@@ -9595,8 +9592,12 @@
macro = mac2[1]
prefix = substr(line, 1, index(line, defundef) - 1)
if (D_is_set[macro]) {
+ suffix = P[macro] D[macro]
+ while (suffix ~ /[\t ]$/) {
+ suffix = substr(suffix, 1, length(suffix) - 1)
+ }
# Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
+ print prefix "define", macro suffix
next
} else {
# Replace #undef with comments. This is necessary, for example,
@@ -9611,7 +9612,7 @@
{ print }
_ACAWK
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
fi # test -n "$CONFIG_HEADERS"
@@ -9655,7 +9656,7 @@
esac ||
as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
@@ -9663,17 +9664,17 @@
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-printf "%s\n" "$as_me: creating $ac_file" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf '%s\n' "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`printf "%s\n" "$configure_input" |
+ ac_sed_conf_input=`printf '%s\n' "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
@@ -9690,7 +9691,7 @@
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$ac_file" |
+printf '%s\n' X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9714,9 +9715,9 @@
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -9761,7 +9762,7 @@
esac
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
@@ -9778,10 +9779,10 @@
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
@@ -9795,11 +9796,11 @@
# Neutralize VPATH when '$srcdir' = '.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1
ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s|@configure_input@|$ac_sed_conf_input|;t t
@@ -9828,9 +9829,9 @@
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
+printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -9846,20 +9847,20 @@
#
if test x"$ac_file" != x-; then
{
- printf "%s\n" "/* $configure_input */" >&1 \
+ printf '%s\n' "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf '%s\n' "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- printf "%s\n" "/* $configure_input */" >&1 \
+ printf '%s\n' "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
@@ -9879,7 +9880,7 @@
X"$_am_arg" : 'X\(//\)[^/]' \| \
X"$_am_arg" : 'X\(//\)$' \| \
X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$_am_arg" |
+printf '%s\n' X"$_am_arg" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9899,8 +9900,8 @@
s/.*/./; q'`/stamp-h$_am_stamp_count
;;
- :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
+ :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf '%s\n' "$as_me: executing $ac_file commands" >&6;}
;;
esac
@@ -9926,7 +9927,7 @@
for am_mf
do
# Strip MF so we end up with the name of the file.
- am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'`
+ am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile which includes
# dependency-tracking related rules and includes.
# Grep'ing the whole file directly is not great: AIX grep has a line
@@ -9938,7 +9939,7 @@
X"$am_mf" : 'X\(//\)[^/]' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X"$am_mf" |
+printf '%s\n' X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9960,7 +9961,7 @@
$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-printf "%s\n" X/"$am_mf" |
+printf '%s\n' X/"$am_mf" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -9985,8 +9986,8 @@
(exit $ac_status); } || am_rc=$?
done
if test $am_rc -ne 0; then
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+ { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE=\"gmake\" (or whatever is
@@ -10009,7 +10010,7 @@
as_fn_exit 0
_ACEOF
-ac_clean_files=$ac_clean_files_save
+ac_clean_CONFIG_STATUS=
test $ac_write_fail = 0 ||
as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
@@ -10025,19 +10026,26 @@
# need to make the FD available again.
if test "$no_create" != yes; then
ac_cs_success=:
+ case $CONFIG_STATUS in #(
+ -*) :
+ ac_no_opts=-- ;; #(
+ *) :
+ ac_no_opts= ;;
+esac
ac_config_status_args=
test "$silent" = yes &&
ac_config_status_args="$ac_config_status_args --quiet"
exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args ||
+ ac_cs_success=false
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
diff -Nru survex-1.4.17/configure.ac survex-1.4.22/configure.ac
--- survex-1.4.17/configure.ac 2025-03-19 23:09:02.000000000 +0000
+++ survex-1.4.22/configure.ac 2026-06-23 21:21:18.000000000 +0000
@@ -3,15 +3,15 @@
dnl Need autoconf 2.50 or later for AC_ARG_VAR. 2.59 has been around for
dnl long enough, that we might as well just require that.
AC_PREREQ(2.59)
-AC_INIT([survex], [1.4.17], [https://trac.survex.com/])
-AM_INIT_AUTOMAKE([1.5 gnu -Wall -Wportability -Werror])
+AC_INIT([survex], [1.4.22], [https://trac.survex.com/])
+AM_INIT_AUTOMAKE([1.14 gnu -Wall -Wportability -Werror])
RELEASE=1
AC_SUBST(RELEASE)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/aven.cc])
-COPYRIGHT_MSG="Copyright (C) 1990-2025 Olly Betts"
+COPYRIGHT_MSG="Copyright (C) 1990-2026 Olly Betts"
AVEN_COPYRIGHT_MSG="Copyright (C) 1999-2003,2005,2006 Mark R. Shinwell"
AC_DEFINE_UNQUOTED(COPYRIGHT_MSG, ["$COPYRIGHT_MSG"], [Copyright Message])
@@ -72,8 +72,6 @@
dnl Probe for any options needed to enable C++11 support.
AX_CXX_COMPILE_STDCXX_11
-AM_PROG_CC_C_O
-
AC_LANG([C])
AC_EXEEXT
@@ -157,10 +155,11 @@
wxdef=__WXGTK__
fi
dnl See if wx-config exists and is for the correct version.
- dnl Fedora install wx3's wx-config as wx-config-3.0, so look for that in
- dnl preference.
+ dnl Fedora seem to install as wx-config-3.2 with a symlink from wx-config, so
+ dnl look for the versioned name in preference.
+ dnl
dnl Arch Linux uses wx-config-gtk3.
- AC_PATH_PROGS(WX_CONFIG, [wx-config-3.0 wx-config-gtk3 wx-config])
+ AC_PATH_PROGS(WX_CONFIG, [wx-config-3.2 wx-config-gtk3 wx-config])
if test -n "$WX_CONFIG" ; then
if (exec >&5 2>&5;$WX_CONFIG --cflags "$wx_libs"|grep -e -D"$wxdef";exit $?) then
:
@@ -226,7 +225,7 @@
CFLAGS=$save_CFLAGS
dnl Check for FFmpeg libraries.
-PKG_CHECK_MODULES([FFMPEG], [libavcodec libavformat libswscale libavutil], [
+PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 57 libavformat libswscale libavutil], [
AC_DEFINE([WITH_FFMPEG], [1], [Use FFmpeg for movie export])
save_CXXFLAGS=$CXXFLAGS
save_LIBS=$LIBS
@@ -286,6 +285,8 @@
AC_CHECK_FUNCS([getc_unlocked putc_unlocked putchar_unlocked])
dnl These are GNU extensions in glibc:
AC_CHECK_FUNCS([feof_unlocked ferror_unlocked fread_unlocked fwrite_unlocked])
+dnl Microsoft extensions:
+AC_CHECK_FUNCS([_getc_nolock _putc_nolock _putchar_nolock _fread_nolock _fwrite_nolock])
AC_CHECK_FUNCS([setenv unsetenv])
@@ -391,6 +392,8 @@
#ifdef HAVE_FREAD_UNLOCKED
# define FREAD(P, S, N, F) fread_unlocked(P, S, N, F)
+#elif defined HAVE__FREAD_NOLOCK
+# define FREAD(P, S, N, F) _fread_nolock(P, S, N, F)
#else
# define FREAD(P, S, N, F) fread(P, S, N, F)
#endif
@@ -402,24 +405,32 @@
*/
#ifdef HAVE_FWRITE_UNLOCKED
# define FWRITE_(P, S, N, F) fwrite_unlocked(P, S, N, F)
+#elif defined HAVE__FWRITE_NOLOCK
+# define FWRITE_(P, S, N, F) _fwrite_nolock(P, S, N, F)
#else
# define FWRITE_(P, S, N, F) fwrite(P, S, N, F)
#endif
#ifdef HAVE_GETC_UNLOCKED
# define GETC(F) getc_unlocked(F)
+#elif defined HAVE__GETC_NOLOCK
+# define GETC(F) _getc_nolock(F)
#else
# define GETC(F) getc(F)
#endif
#ifdef HAVE_PUTC_UNLOCKED
# define PUTC(C, F) putc_unlocked(C, F)
+#elif defined HAVE__PUTC_NOLOCK
+# define PUTC(C, F) _putc_nolock(C, F)
#else
# define PUTC(C, F) putc(C, F)
#endif
#ifdef HAVE_PUTC_UNLOCKED
# define PUTCHAR(C) putchar_unlocked(C)
+#elif defined HAVE__PUTCHAR_NOLOCK
+# define PUTCHAR(C) _putchar_nolock(C)
#else
# define PUTCHAR(C) putchar(C)
#endif
@@ -429,6 +440,29 @@
* avoid every C file which uses these needing to include .
*/
# include
+
+/* C23 made static_assert() available by default - let's emulate that. */
+# if __STDC_VERSION__ >= 202311L
+// Available by default.
+# elif __STDC_VERSION__ >= 201112L
+# include
+# elif defined __COUNTER__
+// As a fallback for < C11, use a typedef for an array type where the size
+// is negative if the assertion fails. Prior to C11 redefining a typedef was
+// not allowed so we need to generate unique typedef names (within a single
+// compilation). __COUNTER__ provides an way to do this - it is a non-standard
+// extension, but supported by at least GCC, clang and MSVC.
+//
+// Using the standardised __LINE__ instead of __COUNTER__ here would fail if
+// two headers (or a header and the source file) happen to use static_assert()
+// on the same line number.
+# define STATICASSERTTYPEDEFNAME(N) staticassert_##N
+# define static_assert(CONDITION, MESSAGE) \
+ typedef int STATICASSERTTYPEDEFNAME(__COUNTER__)[(CONDITION) ? 1 : -1]
+# else
+// We don't check static_assert for pre-C11 compilers without __COUNTER__.
+# define static_assert(...)
+# endif
#endif
])
@@ -436,6 +470,6 @@
Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
lib/images/Makefile
tests/Makefile vim/Makefile survex.iss doc/index.htm
- survex.spec lib/Info.plist
+ lib/Info.plist
])
AC_OUTPUT
diff -Nru survex-1.4.17/debian/changelog survex-1.4.22/debian/changelog
--- survex-1.4.17/debian/changelog 2025-11-10 21:48:21.000000000 +0000
+++ survex-1.4.22/debian/changelog 2026-07-05 22:17:54.000000000 +0000
@@ -1,10 +1,45 @@
-survex (1.4.17-1+deb13u1) trixie; urgency=medium
+survex (1.4.22-1~bpo13+1) trixie-backports; urgency=medium
- * New patch fix-find-stations-search-box-width.patch backported from
- 1.4.18. This fixes the width of the "find stations" search box to
- make it actually usable again. Closes: #1109835
+ * Rebuild for trixie backports.
- -- Olly Betts Tue, 11 Nov 2025 10:48:21 +1300
+ -- Olly Betts Mon, 06 Jul 2026 10:17:54 +1200
+
+survex (1.4.22-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Olly Betts Wed, 01 Jul 2026 10:47:57 +1200
+
+survex (1.4.21-1) unstable; urgency=medium
+
+ * New upstream release.
+ * debian/control: Mark conformance with policy 4.7.4.
+ * debian/control: Update to dh compat level 13.
+
+ -- Olly Betts Fri, 22 May 2026 16:16:03 +1200
+
+survex (1.4.20-1) unstable; urgency=medium
+
+ * New upstream release.
+ * debian/control: Mark conformance with policy 4.7.3.
+ * debian/watch: Convert to v5.
+
+ -- Olly Betts Fri, 06 Mar 2026 16:41:23 +1300
+
+survex (1.4.19-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Olly Betts Wed, 17 Dec 2025 11:53:49 +1300
+
+survex (1.4.18-1) unstable; urgency=medium
+
+ * New upstream release:
+ + debian/patches/fix-enter-in-search-control.patch: Drop patch
+ backported from upstream which is in this release.
+ + Explicitly sizes wxSearchCtrl added to wxToolbar. (Closes: #1109835)
+
+ -- Olly Betts Wed, 05 Nov 2025 10:30:25 +1300
survex (1.4.17-1) unstable; urgency=medium
diff -Nru survex-1.4.17/debian/control survex-1.4.22/debian/control
--- survex-1.4.17/debian/control 2025-04-14 22:16:14.000000000 +0000
+++ survex-1.4.22/debian/control 2026-05-22 04:16:03.000000000 +0000
@@ -3,8 +3,8 @@
Priority: optional
Maintainer: Olly Betts
Uploaders: Wookey
-Standards-Version: 4.7.2
-Build-Depends: debhelper-compat (= 12),
+Standards-Version: 4.7.4
+Build-Depends: debhelper-compat (= 13),
libavcodec-dev,
libavformat-dev,
libgdal-dev,
diff -Nru survex-1.4.17/debian/patches/fix-enter-in-search-control.patch survex-1.4.22/debian/patches/fix-enter-in-search-control.patch
--- survex-1.4.17/debian/patches/fix-enter-in-search-control.patch 2025-04-14 22:17:45.000000000 +0000
+++ survex-1.4.22/debian/patches/fix-enter-in-search-control.patch 1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-commit cdb5c7f2fbaeab95d6f165fb465af855694754fa
-Author: Olly Betts
-Date: Thu Mar 20 14:17:52 2025 +1300
-
- aven: Fix "Enter" in search control to zoom to results
-
- Broken by switching to wxSearchCtrl in 1.4.17.
-
-diff --git a/src/mainfrm.cc b/src/mainfrm.cc
-index c00b7c4f..ebf0d4e1 100644
---- a/src/mainfrm.cc
-+++ b/src/mainfrm.cc
-@@ -492,7 +492,7 @@ END_EVENT_TABLE()
-
- BEGIN_EVENT_TABLE(MainFrm, wxFrame)
- EVT_TEXT(textctrl_FIND, MainFrm::OnFind)
-- EVT_TEXT_ENTER(textctrl_FIND, MainFrm::OnGotoFound)
-+ EVT_SEARCH(textctrl_FIND, MainFrm::OnGotoFound)
- EVT_SPINCTRLDOUBLE(spinctrl_Z_STRETCH, MainFrm::OnZStretch)
- EVT_IDLE(MainFrm::OnIdle)
-
diff -Nru survex-1.4.17/debian/patches/fix-find-stations-search-box-width.patch survex-1.4.22/debian/patches/fix-find-stations-search-box-width.patch
--- survex-1.4.17/debian/patches/fix-find-stations-search-box-width.patch 2025-11-10 21:48:21.000000000 +0000
+++ survex-1.4.22/debian/patches/fix-find-stations-search-box-width.patch 1970-01-01 00:00:00.000000000 +0000
@@ -1,23 +0,0 @@
-Description: Fix "Find stations" search box width
- Upstream survex 1.4.17 changed to using wxSearchCtrl for this search
- box which gives a more native look and feel to the UI. With wxWidgets
- 3.2.8 we need to explicitly set the minimum size or else when added to
- a wxToolbar the text entry part of the search control is zero width
- which makes it unusable.
-Author: Thomas Holder
-Bug: https://github.com/ojwb/survex/pull/15
-Bug-Debian: https://bugs.debian.org/1109835
-Reviewed-by: Olly Betts
-Applied-Upstream: commit:d6a183087846672f82e9b4b866c568e10a2155c0
-Last-Update: 2025-11-11
-
---- a/src/mainfrm.cc
-+++ b/src/mainfrm.cc
-@@ -1030,6 +1030,7 @@ void MainFrm::MakeToolBar()
- toolbar->AddSeparator();
- m_FindBox = new wxSearchCtrl(toolbar, textctrl_FIND);
- m_FindBox->SetSize(160, -1);
-+ m_FindBox->SetMinSize(wxSize(160, wxDefaultCoord));
- // TRANSLATORS: Placeholder text in aven's station search control.
- m_FindBox->SetDescriptiveText(wmsg(/*Find stations*/333));
- toolbar->AddControl(m_FindBox);
diff -Nru survex-1.4.17/debian/patches/series survex-1.4.22/debian/patches/series
--- survex-1.4.17/debian/patches/series 2025-11-10 21:48:21.000000000 +0000
+++ survex-1.4.22/debian/patches/series 1970-01-01 00:00:00.000000000 +0000
@@ -1,2 +0,0 @@
-fix-enter-in-search-control.patch
-fix-find-stations-search-box-width.patch
diff -Nru survex-1.4.17/debian/watch survex-1.4.22/debian/watch
--- survex-1.4.17/debian/watch 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/debian/watch 2026-03-06 03:38:25.000000000 +0000
@@ -1,7 +1,8 @@
+Version: 5
+
# watch control file
# Run "uscan" to check for upstream updates and more.
-version=3
-# Site Directory Pattern Version Script
-opts="pgpsigurlmangle=s/$/.asc/" https://survex.com/software/([\d\.]*)/survex-([\d\.]*).tar.gz debian uupdate
-# For stable releases:
-# https://survex.com/download.html?platform=unix software/[\d\.]*/survex-([\d\.]*).tar.gz debian uupdate
+Source: https://survex.com/software/([\d\.]*)/
+Matching-Pattern: survex-([\d\.]*).tar.gz
+Pgpsigurlmangle: s/$/.asc/
+Update-Script: uupdate
diff -Nru survex-1.4.17/depcomp survex-1.4.22/depcomp
--- survex-1.4.17/depcomp 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/depcomp 2026-06-23 21:22:45.000000000 +0000
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2025-06-18.21; # UTC
-# Copyright (C) 1999-2024 Free Software Foundation, Inc.
+# Copyright (C) 1999-2025 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
@@ -784,9 +784,9 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru survex-1.4.17/doc/HACKING.htm survex-1.4.22/doc/HACKING.htm
--- survex-1.4.17/doc/HACKING.htm 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/doc/HACKING.htm 2026-05-19 05:47:15.000000000 +0000
@@ -40,16 +40,14 @@
Developing on Unix Platforms
-You'll need automake 1.5 or later (earlier versions don't support
-per-executable CFLAGS; 1.6 has been tested and works, but wasn't a
-very stable release - automake 1.6.1 is a better bet)
-and autoconf 2.50 or later (autoconf 2.52, 2.53, 2.64 and 2.71 have all
+
You'll need automake 1.14 or later
+and autoconf 2.59 or later (autoconf 2.64, 2.71 and 2.72 have all
been used successfully).
-
The wxWidgets library is used for aven's UI. Currently >= 3.0.0 is
+
The wxWidgets library is used for aven's UI. Currently >= 3.2.0 is
supported.
-
The PROJ library is used for coordinate conversions. Currently >= 6.2.0 is
+
The PROJ library is used for coordinate conversions. Currently >= 7.2.0 is
supported.
The Perl Locale::PO module is used for process message translation files.
@@ -62,7 +60,7 @@
On Debian, you can install the required packages using:
-sudo apt-get install autoconf automake liblocale-po-perl libproj-dev libwxgtk3.0-gtk3-dev inkscape netpbm python3-sphinx w3m unifont
+sudo apt-get install autoconf automake liblocale-po-perl libproj-dev libwxgtk3.2-dev inkscape netpbm python3-sphinx w3m unifont
Building on Non-Unix Platforms
@@ -196,7 +194,7 @@
On Debian unstable/testing:
-sudo apt-get install wine wx3.0-i18n
+sudo apt-get install wine wx3.2-i18n
And then run:
diff -Nru survex-1.4.17/doc/Makefile.in survex-1.4.22/doc/Makefile.in
--- survex-1.4.17/doc/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/doc/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -483,6 +483,7 @@
cscope cscopelist:
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
diff -Nru survex-1.4.17/doc/NEWS.htm survex-1.4.22/doc/NEWS.htm
--- survex-1.4.17/doc/NEWS.htm 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/NEWS.htm 2026-06-23 21:24:18.000000000 +0000
@@ -1,13 +1,376 @@
-Summary of User-Visible Changes in Survex 1.4.17
+Summary of User-Visible Changes in Survex 1.4.22
+Changes in 1.4.22 (2026-06-23):
+
+* cavern:
+
+ + Add more explicit support for station notes with new reading types `note`
+ (for a quoted or single-word note) and `noteall` (for a note which lasts
+ for the rest of the line).
+
+ + Allow omitting any/all dimensions in passage data. Dimensions not in
+ the style are handled like dimensions explicitly marked as omitted.
+ This may be helpful in cases where only some dimensions have been
+ measured, but probably more usefully it allows using `*data passage
+ note` or `*data passage noteall` to record station descriptions in
+ a survey where splays were used instead of recording LRUD. Suggested by
+ Andrew Atkinson.
+
+ + "ignoreall" as the final reading in style "nosurvey" was getting
+ ignored - e.g. in:
+
+ *data nosurvey station ignoreall
+
+ + Report a clearer error for a reading after `ignoreall`:
+
+ Reading “...” not allowed after reading “ignoreall”
+
+ Previously we either reported:
+
+ Too few readings for data style “...”
+
+ or:
+
+ End of line not blank
+
+ + Report `NEWLINE can't be the last reading` when the readings list ends
+ `ignoreall newline` (we were reporting the less clear `Too few readings for
+ data style "..."`), e.g.:
+
+ *data cylpolar station depth ignoreall newline
+
+ + Fix reported context for `NEWLINE can't be the last reading` error to
+ indicate the whole `NEWLINE` token.
+
+* Manual:
+
+ + Document Walls `#SYMBOL` handling.
+
+ + Fix typos.
+
+* Test suite:
+
+ + Add test coverage for `ignore`/`ignoreall` in `*data passage`.
+
+ + Add test coverage for `*data normal` error cases.
+
+ + Improve test coverage for `*data cylpolar` and `*data nosurvey` error
+ cases.
+
+* (Microsoft Windows version): aven: Fix the extra blank window which opened
+ under aven's window in recent releases. Reported by Juan Corrin. Patch
+ from Philip Schuchardt. Fixes #146.
+
+
+Changes in 1.4.21 (2026-05-20):
+
+* cavern:
+
+ + Fix missing reports of unconnected survey stations. We aim to report at
+ least one station in every unconnected piece of survey. 1.4.10 added code
+ to handle when a piece had been simplified to only anonymous stations, but
+ this was buggy and was only checking the first entry in the removed
+ traverse list. We now check the full list, and if we somehow fail to find
+ a neighbouring named station, we now report the anonymous station (we give
+ the filename and line number which is enough context by itself). Reported
+ by Paweł Gogolak.
+
+ + `*entrance` now also suppresses unused fixed point warnings when it appears
+ before the `*fix` (previously this only worked for `*entrance` after
+ `*fix`).
+
+ + `*fix` with SDs now sets the "fixed" flag on the station in the .3d file.
+
+ + Pick better 3d file separator for Walls data (previously cavern would pick
+ `.` for the separator in a pure Walls dataset, even if it was used in
+ station names). Walls uses `:` as a prefix separator, so now cavern takes
+ into account which characters are allowed in Walls station names when
+ picking the separator to use in the .3d file. For a pure Walls dataset, it
+ will pick `:`, so Walls station names in the .3d file should match the
+ names as shown in Walls. If a dataset mixes data in Walls format with
+ Survex and/or Compass data, then it's possible `:` is used in a Survex or
+ Compass station name - if so a different separator will be chosen.
+
+ + The Walls manual says to represent underwater data using the combination of
+ `TAPE=SS` with `ORDER=DA` or `ORDER=AD`, so we now map this to Survex's
+ diving style. Issue highlighted by a dataset from Darek Lubomski.
+
+ + In Walls data, downgrade the "Unknown command" error to a warning for some
+ invalid directives which Walls quietly accepts. Issue highlighted by a
+ dataset from Darek Lubomski.
+
+ + In Walls data, `#note` and `#flags` are meant to suppress unused fixed
+ point warnings, but only did if they came after the `#fix`. Also `#flags`
+ without any flags didn't suppress the warning but now does.
+
+ + In Walls data, the word `fix` in `#flags` no longer sets the "fixed" flag
+ in the .3d file - we now only set it for stations used in `#fix`. This
+ seems a more logical approach, since `#flags` is just free-form text which
+ Walls itself doesn't ascribe particular semantics to. (The word `entrance`
+ in `#flags` still sets the "entrance" flag since Walls lacks a way to
+ explicitly mark entrances.)
+
+ + Check value after `TAPE=` in Walls data and give an error if it's not
+ valid.
+
+ + In Walls data, we now reject multi-component readings with a decimal point
+ in anything but the final component. Some examples of invalid readings
+ which now give an error with cavern are `12.5i3`. `12.5:29`, `12.5:29:30`
+ and `12:29.5:30`.
+
+* aven/survexport:
+
+ + Allow exporting/not exporting anonymous stations. The default is chosen as
+ most appropriate for each export format.
+
+ + Fix memory leak in PLT export.
+
+ + Fix memory leak and speed up SVG export.
+
+* (Microsoft Windows version): aven: Try to fix the extra blank window which
+ opens under aven's window in recent releases. Reported by Juan Corrin.
+
+* (Microsoft Windows version): Try to ensure output files are fully written to
+ disk before we close them. Should fix #147, reported by Philip Schuchardt.
+
+* Documentation:
+
+ + Clarify purpose of `*infer exports`. Highlighted by Philip Sargent.
+
+ + Clarify `*infer plumbs` works for any angle units, not just degrees.
+
+ + Say "directive" instead of "command" in Walls docs since this is the
+ terminology Walls uses.
+
+ + Document Walls filename case mismatch issue. Issue highlighted by a
+ dataset from Darek Lubomski.
+
+ + Document that the last official release of Walls uses an old IGRF version.
+
+ + Improve section on submitting documentation changes.
+
+ + Minor improvements to wording.
+
+ + HACKING.htm: autoconf 2.59 is the current minimum.
+
+* Test suite: Add test coverage for Walls compass/clino in mils.
+
+* Minor improvements to French translation.
+
+* Merge updates to Polish translation from Paweł Gogolak.
+
+* Merge updates to Russian translation from Vasily Vl. Suhachev.
+
+* (Linux version): survex.spec: We no longer provide this. It doesn't work
+ with current Fedora because some dependencies have been renamed, which
+ suggests nobody is regularly using it, which isn't a surprise as there's
+ now a Fedora package of Survex. Reported by Bill Gee.
+
+* Fix warnings about old-style parameter lists in the imported getopt code.
+
+* Require at least automake 1.14 to bootstrap the source tree from git. This
+ was released in 2013 so should be available everywhere now.
+
+
+Changes in 1.4.20 (2026-03-04):
+
+* aven: The viewing volume now includes the vertical extent of terrain which
+ fixes problems with the terrain being clipped when there's an extreme
+ vertical difference between the terrain and the cave. Hopefully fixes #148,
+ reported by Chris Curry.
+
+* aven: Improve handling of the scale when reloading an updated version of the
+ .3d file already being viewed.
+
+* aven: Add missing shortcuts to Orientation menu and "Reverse Direction" menu
+ item. Reported by echarlie's friend.
+
+* aven: Where possible use L for "Elevation" menu accelerator, which matches
+ the shortcut key.
+
+* cavern: Improve handling of Walls percentage gradient. Support explicit
+ percentage override ('p' suffix) and fix handling of overriding percentage
+ gradient to specify a plumb. Reported by echarlie on #survex.
+
+* cavern: Support d:m:s for Walls bearings and gradients. Reported by echarlie
+ on #survex.
+
+* cavern: Add `gps` as alias for `position` team role. See:
+ https://github.com/therion/therion/issues/709
+
+* cavern: Warn for no blank after token in *cartesian (another case related to
+ #135).
+
+* manual: Document N, S, E and W shortcut keys for aven.
+
+* manual: Mark up codes and tokens in tables which avoids them getting
+ word-wrapped and hyphenated. It also means they now get rendered in the
+ tables the same way they are referred to in the text.
+
+* manual: Separate each block of *instrument examples.
+
+* manual: Consistently document versions where features were deprecated.
+
+* Eliminate out-of-date postal address from licensing information. Direct
+ people who somehow didn't receive the licence text to a copy on the FSF
+ website instead.
+
+
+Changes in 1.4.19 (2025-12-17):
+
+* aven/survexport: Rework PLT export to use 2 character escapes for spaces
+ and other characters which aren't valid in Compass station names. We were
+ using 3 character escapes, but that's unhelpful since Compass has a 12
+ character station name limit.
+
+* cavern: The syntax of *instrument commands is now checked and a warning
+ issued for problems. The information in the command is still not yet used.
+
+* cavern: Improve description of --quiet option. Reported by Wookey.
+
+* (Microsoft Windows version): The installer now always updates DLLs it
+ installs rather than skipping DLLs which declare the same version number.
+ This avoids problems when DLLs change in an upwardly but not downwardly
+ compatible way but keep the same version number. It also means downgrading
+ now gives an install more like installing the older version from scratch
+ would. Our DLLs are all private and installed into our own install directory
+ so there are no concerns with breaking other installed software. Fixes #145.
+ Reported by Footleg and Juan Corrin.
+
+* Fill in some missing Czech translations.
+
+* Update unofficial Inno Setup translations for the installer.
+
+* We now require at least FFmpeg >= 3.2 to build Survex. This version was
+ released in 2016 so should be easily available everywhere now.
+
+* (Microsoft Windows version): Drop workaround for wx-config --rescomp not
+ working as this has now been fixed in the mingw package of wxWidgets.
+
+* Test suite:
+
+ + Add test coverage for `*data normal` without `clino`.
+
+
+Changes in 1.4.18 (2025-11-04):
+
+* aven: Fix "Enter" in search control to zoom to results. This was broken
+ by the switch to wxSearchCtrl in 1.4.17.
+
+* aven: Fix "Find stations" search box width with wxWidgets >= 3.2.7. Patch
+ https://github.com/ojwb/survex/pull/15 from Thomas Holder.
+
+* aven: (Microsoft Windows version): Fix sizing of indicators (scalebar,
+ compass, clino, colour key) on HiDPI monitors. Fixes #144, reported by Juan
+ Corrin.
+
+* aven/survexport: Set UTM zone and datum in exported Compass PLT.
+
+* cavern: Avoid duplicate errors/warnings with unconnected data. Since 1.4.10,
+ unconnected data is only a warning but that resulted in us running some
+ checks on the survey tree twice, which could result in duplicate
+ errors/warnings.
+
+* cavern: Fix parsing of hex digits in *set. Hex digits a-f were incorrectly
+ being handled as 0-5, so 0x0a was byte 0 not byte 10.
+
+* cavern: We now track the column as well as file:line where a station or
+ survey name was used, so diagnostics which use these locations now report
+ a column number too.
+
+* cavern: Show context if proj can't convert coords. We only do this for .svx
+ files currently as it is more complex for Compass and Walls data.
+
+* cavern: Fix reported column for error for `-` for Walls tape field.
+ In this context, Walls requires 2 or more `-` to indicate an omitted field.
+
+* cavern: Compass MAK file parsing improvements:
+
+ + Comments are now skipped. Previously a commented-out MAK file command
+ would still be interpreted by cavern, which was incorrect.
+
+ + Whitespace handling has been adjusted to more closely match Compass.
+
+ + Unknown commands are now warned about. Compass seems to quietly ignore
+ unknown commands, but it seems helpful for cavern to report them as it
+ will help identify any bugs in Survex's parsing of MAK files, and any
+ new or undocumented MAK file commands which we don't support. It can also
+ help detect typos in data entry.
+
+ + We now skip to the closing `;` for unknown commands and commands we
+ ignore as not relevant to us, whereas previously we'd just skip the
+ initial character which gives the type of command and then look for
+ another command. This doesn't seem to make any difference in practice as
+ none of these commands appear to be able to contain text which could be
+ interpreted as a different valid Compass MAK file command.
+
+* (Microsoft Windows version): The toolchain we use to build this version
+ seems to have changed in an unhelpful way. We've got the build working
+ again, but when aven is launched a black window opens first, then the
+ aven window opens over the top. The black window stays around until
+ aven is closed. This extra window doesn't really get in the way of using
+ aven, but it's not supposed to be there. It doesn't seem to be due to a
+ change in the Survex code as the 1.2.17 build doesn't do this, but a
+ rebuild of 1.2.17 with just the minimum of build system changes does.
+ If you have suitable skills help fixing this would be much appreciated.
+
+* (Microsoft Windows version): Use unlocked file I/O if available, like we
+ already do for Unix. Unlocked file I/O can be much faster in some cases (we
+ don't need the locking as we don't do multithreaded file I/O).
+
+* (Microsoft Windows version): Fix compiler warning in wrapaven.c.
+
+* (Microsoft Windows version): Work around wx-config --rescomp no longer
+ working. The mingw package of wxWidgets has started to return an empty
+ string here. We don't support building with MSVC, so hardcoding `windres`
+ here isn't really a problem in practice.
+
+* Manual: Document that *set eol default includes x1A (Ctrl-Z) to provide
+ compatibility with old DOS text files (it always has done but was missing
+ from the documentation).
+
+* Merge updates to Russian translation.
+
+* Add the start of a Czech translation.
+
+* Update unofficial Inno Setup translations for the installer.
+
+* Drop support for wxWidgets < 3.2. It is starting to become hard to keep
+ everything working with 3.0.0 and the time and effort seems better directed
+ to other things. The last 3.0.x release was 3.0.5.1, released 2020-05-02.
+ 3.2.0 was released 2022-07-06 and it seems everywhere with wxWidgets packages
+ upgraded to 3.2.x some time ago.
+
+* Test suite:
+
+ + cavern.tst: Test more mixed line ending cases.
+
+ + Turn off tests involving aven and survexport on mingw, as we can no longer
+ seem to run these programs during the build. Rebuilding the last commit
+ that worked now fails, so this is not due to a change in the Survex code.
+ There is no error message, but bash shows exit code 127 which means it
+ failed to run the command.
+
+ + Improve handling of VERBOSE in tests. Previously VERBOSE showed output
+ from all testcases, even ones which passed. Now we only show output from
+ testcases which fail for VERBOSE=1. Other non-empty values of VERBOSE
+ continue to show all output for cavern.tst and smoke.tst, but have the same
+ effect as VERBOSE=1 for other tests.
+
+ + compare.tst: Fix to actually work, support --help, and allow comparing
+ cavern runs which fail. This script is not run as part of the automated
+ tests but assists manually comparing two versions of cavern on the same
+ data which can be helpful for debugging and during development.
+
+
Changes in 1.4.17 (2025-03-20):
* aven: Add support for exaggerating Z. You can now set a Z scale factor
from 0.1 to 10.0 via a new widget on the toolbar. Fixes #49.
-* aven: The cavern log window now choses foreground and background colours
+* aven: The cavern log window now chooses foreground and background colours
based on the desktop's light mode/dark mode setting. Previously it
used the default window background colour but always used black text, which
made it hard to read with a dark desktop theme. (The wxWidgets API to detect
@@ -76,7 +439,7 @@
* Simplify handling of errors loading the messages file. The error
messages for this case are now stored as separate ASCII strings in
the executables which reduces the startup overhead a little as we
- no longer need to scan them and potentially reencode them.
+ no longer need to scan them and potentially re-encode them.
* img library: The img struct's filename_opened member was always NULL when
used outside of Survex (and set but never actually used inside of Survex)
@@ -687,7 +1050,7 @@
it can be read from the filing system and is geo-referenced vector data -
see https://gdal.org/drivers/vector/index.html for a list. Currently the
dialog to select a file defaults to showing GPX, KML, GeoJSON and shape
- files - set the filter to "All Files" to chose other formats.
+ files - set the filter to "All Files" to choose other formats.
+ Reimplement display of cavern output. The old version turned the log into
HTML and displayed it using wxHtmlWindow, but that adds a lot of overhead
@@ -3730,7 +4093,7 @@
to abort on others. This is now fixed, and there's a check in place to
help avoid similar issues in future. (ticket#34)
- + Always use metres or feet for the depth colour key, and chose a consistent
+ + Always use metres or feet for the depth colour key, and choose a consistent
precision by looking at the depth range. (ticket#30)
+ Show the depth units below the colour bar rather than after every value.
@@ -4689,7 +5052,7 @@
* aven: Make pressing "Return" in the tree control expand/collapse a subtree.
-* aven: Speed up intialisation by delaying creation of OpenGL lists until
+* aven: Speed up initialisation by delaying creation of OpenGL lists until
they're needed.
* aven: Added Mark Shinwell's bounding box with shadow of the survey.
diff -Nru survex-1.4.17/doc/OLDNEWS.htm survex-1.4.22/doc/OLDNEWS.htm
--- survex-1.4.17/doc/OLDNEWS.htm 2025-03-15 03:06:58.000000000 +0000
+++ survex-1.4.22/doc/OLDNEWS.htm 2026-06-21 03:33:31.000000000 +0000
@@ -619,7 +619,7 @@
* aven: added hourglass for "find" operation.
-* aven: reenabled loading of files by drag-and-drop (accidentally disabled
+* aven: re-enabled loading of files by drag-and-drop (accidentally disabled
in 1.0.4 and 1.0.5).
* aven: improved handling of flat surveys (e.g. output of extend, surveys
@@ -831,7 +831,7 @@
* Updated manual (notably added documentation for interleaved data styles).
-* German and Brazillian Portuguese translations updated.
+* German and Brazilian Portuguese translations updated.
Changes in 0.99-prerelease8:
@@ -1133,7 +1133,7 @@
* Expanded testsuite further.
-* French, Brazillian Portuguese, and German translations brought
+* French, Brazilian Portuguese, and German translations brought
almost completely up-to-date.
* (Unix version): Lots of little improvements to debian packages
@@ -1613,7 +1613,7 @@
* printer drivers: put "http://www.survex.com/" on printouts in case someone
who gets a printout wants to know more about Survex.
-* cavern: added easting, northing, altitude added as prefered aliases for
+* cavern: added easting, northing, altitude added as preferred aliases for
dx, dy, dz.
* cavern: bug fix: "*prefix \" or "*begin \" would cause an internal error.
@@ -1996,7 +1996,7 @@
* xcaverot: Fixed poor handling of keypresses when rotating
-* xcaverot: Reenabled buttons and made plan/elev button work properly
+* xcaverot: Re-enabled buttons and made plan/elev button work properly
* aven: New experimental gtk-based xcaverot replacement
@@ -2064,7 +2064,7 @@
check before resorting to the default. LANG is a standard way to
specify the language for GNU applications - SURVEXLANG is still
useful as a way to specify an alternate language if Survex doesn't
- support your prefered language.
+ support your preferred language.
* Cured superfluous copy of svxdocs in doc/svxdocs in source distribution
diff -Nru survex-1.4.17/doc/aven.1 survex-1.4.22/doc/aven.1
--- survex-1.4.17/doc/aven.1 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/aven.1 2026-06-23 21:24:18.000000000 +0000
@@ -1,4 +1,5 @@
-.\" Man page generated from reStructuredText.
+.\" Man page generated from reStructuredText
+.\" by the Docutils 0.22.4 manpage writer.
.
.
.nr rst2man-indent-level 0
@@ -27,7 +28,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "AVEN" "1" "Mar 20, 2025" "" "Survex"
+.TH "AVEN" "1" "Jun 23, 2026" "" "Survex"
.SH NAME
aven \- sophisticated cave viewer
.SH SYNOPSIS
@@ -116,11 +117,12 @@
rotation speed, so that the cave returns to the centre of the screen. There
are also keyboard controls to use
.sp
-\fBP\fP and \fBL\fP select Plan and eLevation respectively. Changing between plan
-to elevation is animated to help you see where you are and how things relate.
-This animation is automatically disabled on slow machines to avoid user
-frustration. You can force skipping the animation by pressing the key again
-during it, so a double press will always take you there quickly.
+\fBP\fP and \fBL\fP select Plan and eLevation respectively, while \fBN\fP, \fBS\fP,
+\fBE\fP and \fBW\fP select a view looking North, South, East and West respectively.
+The change of view is animated to help you see where you are and how things
+relate. This animation is automatically disabled on slow machines to avoid
+user frustration. You can force skipping the animation by pressing the key
+again during it, so a double press will always take you there quickly.
.sp
\fBSpace\fP toggles on and off automatic rotation about a vertical axis through
the current centre point (which is moved by panning the view or by selecting
@@ -166,7 +168,6 @@
.SH SEE ALSO
.sp
\fBcavern\fP(1), \fBdiffpos\fP(1), \fBdump3d\fP(1), \fBextend\fP(1), \fBsorterr\fP(1), \fBsurvexport\fP(1)
-.SH COPYRIGHT
+.SH Copyright
1998-2025
-.\" Generated by docutils manpage writer.
-.
+.\" End of generated man page.
diff -Nru survex-1.4.17/doc/aven.rst survex-1.4.22/doc/aven.rst
--- survex-1.4.17/doc/aven.rst 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/doc/aven.rst 2026-03-21 21:06:18.000000000 +0000
@@ -95,11 +95,12 @@
rotation speed, so that the cave returns to the centre of the screen. There
are also keyboard controls to use
-``P`` and ``L`` select Plan and eLevation respectively. Changing between plan
-to elevation is animated to help you see where you are and how things relate.
-This animation is automatically disabled on slow machines to avoid user
-frustration. You can force skipping the animation by pressing the key again
-during it, so a double press will always take you there quickly.
+``P`` and ``L`` select Plan and eLevation respectively, while ``N``, ``S``,
+``E`` and ``W`` select a view looking North, South, East and West respectively.
+The change of view is animated to help you see where you are and how things
+relate. This animation is automatically disabled on slow machines to avoid
+user frustration. You can force skipping the animation by pressing the key
+again during it, so a double press will always take you there quickly.
``Space`` toggles on and off automatic rotation about a vertical axis through
the current centre point (which is moved by panning the view or by selecting
diff -Nru survex-1.4.17/doc/cavern.1 survex-1.4.22/doc/cavern.1
--- survex-1.4.17/doc/cavern.1 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/cavern.1 2026-06-23 21:24:18.000000000 +0000
@@ -1,4 +1,5 @@
-.\" Man page generated from reStructuredText.
+.\" Man page generated from reStructuredText
+.\" by the Docutils 0.22.4 manpage writer.
.
.
.nr rst2man-indent-level 0
@@ -27,7 +28,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CAVERN" "1" "Mar 20, 2025" "" "Survex"
+.TH "CAVERN" "1" "Jun 23, 2026" "" "Survex"
.SH NAME
cavern \- process raw survey data
.SH SYNOPSIS
@@ -63,8 +64,9 @@
Sets location for output files.
.TP
.B \fB\-q\fP, \fB\-\-quiet\fP
-Only show a brief summary (\fB\-\-quiet \-\-quiet\fP or \fB\-qq\fP will display
-warnings and errors only).
+Suppresses the messages indicating the current stage of processing.
+Repeating this option (\fB\-\-quiet \-\-quiet\fP or \fB\-qq\fP) this also suppresses
+reporting the number of stations, legs, loops, and length totals.
.TP
.B \fB\-s\fP, \fB\-\-no\-auxiliary\-files\fP
do not create .err file.
@@ -154,7 +156,7 @@
is \fIMoved\fP divided by the standard deviation for the traverse based on
the standard errors specified for the instruments. This tells us how
plausible it is that the misclosure is just due to random errors. It
-is a number of standard deviations, so the \X'tty: link https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule'\fI\%68\-95\-99.7 rule\fP\X'tty: link'
+is a number of standard deviations, so the 68\-95\-99.7 rule \%
applies \- e.g. approximately 99.7% of traverses should have a value of
3.0 or less (assuming the specified instrument standard deviations are
realistic).
@@ -237,7 +239,6 @@
.SH SEE ALSO
.sp
\fBaven\fP(1), \fBdiffpos\fP(1), \fBdump3d\fP(1), \fBextend\fP(1), \fBsorterr\fP(1), \fBsurvexport\fP(1)
-.SH COPYRIGHT
+.SH Copyright
1998-2025
-.\" Generated by docutils manpage writer.
-.
+.\" End of generated man page.
diff -Nru survex-1.4.17/doc/cavern.rst survex-1.4.22/doc/cavern.rst
--- survex-1.4.17/doc/cavern.rst 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/doc/cavern.rst 2026-03-21 21:06:18.000000000 +0000
@@ -38,8 +38,9 @@
Sets location for output files.
``-q``, ``--quiet``
- Only show a brief summary (``--quiet --quiet`` or ``-qq`` will display
- warnings and errors only).
+ Suppresses the messages indicating the current stage of processing.
+ Repeating this option (``--quiet --quiet`` or ``-qq``) this also suppresses
+ reporting the number of stations, legs, loops, and length totals.
``-s``, ``--no-auxiliary-files``
do not create .err file.
diff -Nru survex-1.4.17/doc/cmdline.rst survex-1.4.22/doc/cmdline.rst
--- survex-1.4.17/doc/cmdline.rst 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/doc/cmdline.rst 2026-03-21 21:06:18.000000000 +0000
@@ -29,11 +29,11 @@
Short and Long Options
======================
-Options have two forms: short (a dash followed by a single letter e.g. ``cavern
--q``) and long (two dashes followed by one or more words e.g. ``cavern
+Options can have two forms: short (a dash followed by a single letter e.g.
+``cavern -q``) and long (two dashes followed by one or more words e.g. ``cavern
--quiet``). The long form is generally easier to remember, while the short
form is quicker to type. Options are often available in both forms, but more
-obscure or potentially dangerous options may only have a long form.
+obscure or potentially destructive options may only have a long form.
.. note:: Command line options are case sensitive, so ``-B`` and ``-b``
are different (this didn't used to be the case before Survex 0.90). Case
diff -Nru survex-1.4.17/doc/compass.rst survex-1.4.22/doc/compass.rst
--- survex-1.4.17/doc/compass.rst 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/doc/compass.rst 2026-06-20 21:58:35.000000000 +0000
@@ -4,9 +4,11 @@
Survex can read Compass survey data - it supports survey data files
and project files (``.DAT`` and ``.MAK files``), closed data files (``.CLP``),
-and processed survey data (``.PLT`` and ``.PLF`` files). Survex 1.4.6 made
-significant improvements to this support so we recommend using this
-version or newer if you're working with Compass data.
+and processed survey data (``.PLT`` and ``.PLF`` files). Survex 1.0.19 was
+the first to support this but we currently recommend using 1.4.6 or newer if
+you're working with Compass data as this version made significant improvements
+to this support. If you're using Compass ``.MAK`` files, then Survex 1.4.18
+further improved parsing these.
--------------------
Compass .MAK support
@@ -20,24 +22,31 @@
Survex understands most MAK file features. Known current
limitations and assumptions:
-- Survex handles the UTM zone and datum provided the combination
- can be expressed as an EPSG code (lack of any EPSG codes for a
- datum suggests it's obsolete; lack of a code for a particular
- datum+zone combination suggests the zone is outside of the
- defined area of use of the datum). Example Compass files we've
- seen use "North American 1927" outside of where it's defined
- for use, presumably because some users fail to change the datum
- from Compass' default. To enable reading such files we return a
- PROJ4 string of the form "+proj=utm ..." for "North American
- 1927" and "North American 1983" for UTM zones which don't have
- an EPSG code. Please let us know if support for additional
- cases which aren't currently supported would be useful to you.
+- Survex handles any UTM zone and datum specified in the MAK file so
+ long as the combination can be expressed as an EPSG code. If there
+ aren't any EPSG codes for a datum that suggests it's obsolete; lack of
+ a code for a particular datum+zone combination suggests the zone is
+ outside of the defined area of use of the datum.
+
+ Some additional cases are also supported. Example Compass files we've
+ seen use "North American 1927" outside of its defined area of use,
+ presumably because some users fail to change the datum from Compass'
+ default. To enable reading such files, if the datum is "North
+ American 1927" or "North American 1983" and there isn't an EPSG code
+ for the specified UTM zone in that datum, we generate a PROJ4 string
+ of the form "+proj=utm ...". Please let us know if support for
+ additional cases which aren't currently supported would be useful to
+ you.
- The ``@`` command which specifies a base location to calculate
magnetic declinations at is handled, provided the datum and UTM
zone are supported (see previous bullet point). The UTM
convergence angle specified as part of this command is ignored
- as Survex knows how to calculate it.
+ as Survex knows how to calculate grid convergence.
+
+- The ``%`` and ``*`` commands specify the UTM convergence angle
+ (file-level and non-file-level respectively) and are ignored
+ as Survex knows how to calculate grid convergence.
- Link stations are ignored. These have two uses in Compass. They
were a way to allow processing large surveys on computers from
@@ -77,16 +86,27 @@
Note that the ``.svx`` version is able to more precisely represent
what's actually required here - in the MAK version "you must
- carry ``A16`` into ``FILE2`` even though ``FILE2`` doesn't need it for its
- own processing". If you want the exact analog of the MAK
- version you can change the ``A16`` equate to:
+ carry ``A16`` into ``FILE2`` so you can then carry it into ``FILE3``
+ even though ``FILE2`` doesn't need it for its own processing". If you want
+ the exact analog of the MAK version you can change the ``A16`` equate to:
::
*equate file1.A16 file2.A16 file3.A16
-- The following commands (and any other unknown commands) are
- currently ignored: ``%`` (Convergence angle (file-level)), ``*``
- (Convergence angle (non file-level)), ``!`` (Project parameters)
+- The ``!`` command specifies project parameters, which are currently
+ ignored.
+
+- Compass seems to quietly ignore unknown commands, but Survex will issue a
+ warning (since Survex 1.4.18 - older versions quietly ignored them).
+ This warning will help identify any bugs in Survex's parsing of MAK files,
+ and any new or undocumented MAK file commands which we don't support.
+ It can also help detect typos in data entry.
+
+- ``.MAK`` files can contain comments, which last from a ``/`` to the
+ next ``/`` or end of the line. Survex 1.4.18 added support for these
+ (older Survex versions quietly ignored the ``/`` characters as unknown, but
+ that meant they would still interpret any commented out ``.MAK`` file
+ commands).
--------------------
Compass .DAT support
@@ -164,7 +184,7 @@
surface data, and shots flagged ``P`` "[do] not support passage
modeling". Even if it's actually being used for a different
purpose, Survex programs don't show surface legs by default so
- the end effect is at least to not plot as intended.
+ the end effect is at least to not plot, which is what's intended.
- Shot flag ``S`` is mapped to Survex's "splay" leg flag.
- Surveys which indicate a depth gauge was used for azimuth
readings are marked as ``STYLE_DIVING`` in the ``.3d`` file.
@@ -242,9 +262,9 @@
is for surface data, and shots flagged ``P`` "[do] not support
passage modeling". Even if it's actually being used for a
different purpose, Survex programs don't show surface legs by
- default so the end effect is at least to not plot as intended.
- Stations are flagged as surface and/or underground based on
- whether they are at the ends of legs flagged surface or
+ default so the end effect is at least to not plot, which is what's
+ intended. Stations are flagged as surface and/or underground based
+ on whether they are at the ends of legs flagged surface or
non-surface (a station at the boundary can be flagged as both).
- Shot flag ``S`` is mapped to Survex's "splay" leg flag. A station
@@ -282,29 +302,55 @@
This export was originally added to allow importing data from Survex into
Carto. The principal author of Carto has sadly died and it seems Carto is no
longer actively developed, but we've left this support in place in case it is
-useful - the generated files can be used with Compass itself for example,
-though they are currently rather crudely structured. Here are some notes on
-this support:
+useful - the generated files can be used with Compass itself for example.
+Here are some notes on this support:
-- The whole Survex survey tree is exported as a single survey.
+- The whole Survex survey tree is currently exported as a single survey in
+ the PLT file.
- Compass station names can't contain spaces, so any spaces (and also ASCII
- control characters) are in station names are replaced by ``%`` follow by two
- lowercase hex digits giving the byte value (like the escaping used in URLs).
- ``%`` itself is also escaped as ``%25``.
-
-- The full Survex station name include survey prefixes is used - no attempt is
- currently made to shorten station names to fit within the 12 character limit
- documented for the Compass PLT format. If you export a single survey the
- names should be short enough, but exporting the whole of a complex survey
- project will likely give names longer than 12 characters.
+ control characters) in Survex station names are replaced.
-- Anonymous stations are given a name ``%:`` followed by a number starting from
- one and incrementing for each anonymous station (Compass doesn't allow empty
- station names, and these invented names can't collide with actual station
- names). Since Survex 1.4.10 (1.4.6 implemented support for exporting
- anonymous stations to PLT, but with names which typically exceeded the
- documented 12 character limit of the format).
+ Since Survex 1.4.19, the replacements are ``^`` followed by another
+ character. Byte value 0 becomes ``^@``, byte values 1 to 26 become ``^A`` to
+ ``^Z``, byte values 27 to 31 become ``^a`` to ``^e``, space becomes ``^_``
+ and ``^`` becomes ``^^`` (to ensure the mapping is reversible). In real
+ world use, only space and ``^`` are at all likely to occur.
+
+ From Survex 1.2.1 to 1.4.18, a different system of replacements was used,
+ based on that used in URLs: each replacement was ``%`` follow by two lowercase
+ hex digits, e.g. space became ``%20``. Additionally, ``%`` became ``%25``.
+ The drawback of this encoding was that it needed 3 characters to represent
+ each escaped one, which was unhelpful as PLT format documents a 12 character
+ limit on station names.
+
+ Survex 1.2.0 and earlier didn't do any escaping.
+
+- Survex supports anonymous survey stations. However we can't write these
+ as empty station names in Compass PLT (they aren't explicitly disallowed in
+ the format documentation, but Compass' viewer gives an error if you ask it to
+ read a PLT file with an empty station name).
+
+ Since Survex 1.4.19, each anonymous station gets given a unique name of
+ ``^`` followed by a number starting from one and incrementing for each
+ anonymous station. (Note that these invented names can't collide with actual
+ station names because ``^`` is escaped to ``^^`` as documented above.)
+
+ From Survex 1.4.10 to 1.4.18, the unique names were instead ``%:`` followed
+ by the counter.
+
+ Survex 1.4.6 first implemented support for exporting anonymous stations to
+ PLT, but with names which typically exceeded the documented 12 character
+ limit of the format.
+
+ Survex 1.4.5 and earlier generated PLT files with empty station names, but
+ as noted above, at least Compass' viewer wouldn't read these.
+
+- The full Survex station name including survey prefixes is used - no attempt
+ is currently made to shorten station names to fit within the 12 character
+ limit documented for the Compass PLT format. If you export a single survey
+ the names should be short enough, but exporting the whole of a complex survey
+ project will likely give names longer than 12 characters.
- Passage data is not included in the export (each exported leg has dummy LRUD
readings of all ``-9`` which is needed to avoid a bug in some versions of
@@ -321,5 +367,9 @@
- Survex's "duplicate" leg flag is mapped to Compass shot flag ``L``. Since
Survex 1.4.10.
-- The Datum and UTM zone information is not currently set in exported PLT
- files.
+- The Datum and UTM zone information is set if the Survex data has a coordinate
+ system set which is expressed as an ``EPSG:nnnn`` code which corresponds to
+ a UTM zone in a datum supported by Compass, or a PROJ4 string which matches
+ those which Survex generates when processing Compass and Walls data which
+ specifies a NAD27 or NAD83 UTM zone which doesn't have an EPSG code. Since
+ Survex 1.4.18.
diff -Nru survex-1.4.17/doc/datafile.rst survex-1.4.22/doc/datafile.rst
--- survex-1.4.17/doc/datafile.rst 2025-03-18 02:06:18.000000000 +0000
+++ survex-1.4.22/doc/datafile.rst 2026-06-23 20:53:55.000000000 +0000
@@ -11,8 +11,8 @@
on the survey notes, which is important in reducing the opportunities for
transcription errors.
-Also all the special characters are user-definable - for example, the
-separators can be spaces and tabs, or commas (e.g. when exporting from a
+Also all the special characters are user-definable - for example, data items
+can be separated by spaces and tabs, or commas (e.g. when exporting from a
spreadsheet), etc; the decimal point can changed to be a comma (as used in
continental Europe), or a slash (sometimes used for clarity in written survey
notes), or anything else you care to choose. This flexibility means that it
@@ -332,26 +332,26 @@
```` is one or more of:
- ============ ===========
- Quantity Aliases
- ============ ===========
- LENGTH TAPE
- BEARING COMPASS
- GRADIENT CLINO
- BACKLENGTH BACKTAPE
- BACKBEARING BACKCOMPASS
- BACKGRADIENT BACKCLINO
- COUNT COUNTER
- LEFT
- RIGHT
- UP CEILING
- DOWN FLOOR
- DEPTH
- EASTING DX
- NORTHING DY
- ALTITUDE DZ
- DECLINATION
- ============ ===========
+ ================ ===============
+ Quantity Aliases
+ ================ ===============
+ ``LENGTH`` ``TAPE``
+ ``BEARING`` ``COMPASS``
+ ``GRADIENT`` ``CLINO``
+ ``BACKLENGTH`` ``BACKTAPE``
+ ``BACKBEARING`` ``BACKCOMPASS``
+ ``BACKGRADIENT`` ``BACKCLINO``
+ ``COUNT`` ``COUNTER``
+ ``LEFT``
+ ``RIGHT``
+ ``UP`` ``CEILING``
+ ``DOWN`` ``FLOOR``
+ ``DEPTH``
+ ``EASTING`` ``DX``
+ ``NORTHING`` ``DY``
+ ``ALTITUDE`` ``DZ``
+ ``DECLINATION``
+ ================ ===============
The specified calibration is applied to each quantity in the list, which is
handy if you use the same instrument to measure several things, for example::
@@ -635,7 +635,7 @@
::
- *data normal station ignoreall newline compass tape clino
+ *data normal station noteall newline compass tape clino
Description
``
-Survex 1.4.17 Documentation
+Survex 1.4.22 Documentation
Access to mailing lists and downloads are available at the Survex web site .
-Survex 1.4.17 Documentation
+Survex 1.4.22 Documentation
-Survex 1.4.17 Manual
+Survex 1.4.22 Manual
Details of user visible changes in this
and previous versions (older changes )
"To do" list (includes known bugs)
diff -Nru survex-1.4.17/doc/intro.rst survex-1.4.22/doc/intro.rst
--- survex-1.4.17/doc/intro.rst 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/doc/intro.rst 2026-03-22 22:19:29.000000000 +0000
@@ -54,11 +54,12 @@
you can suggest a better wording, but don't worry if you can't, just explain
the problem as precisely as you can.
-The master version of this manual is maintained as `reStructured Text
+The source version of this manual is maintained as `reStructured Text
`__, and
-automatically converted to a number of other formats. If you are going to send
-us *major* changes, it's much easier to include them if you work from this
-master version rather than changing one of the generated files.
+automatically converted to a number of other formats. If you spot a typo or
+spelling mistake it's easy to locate and fix in the source, but if you want to
+send us more significant documentation changes, please work from this source
+version rather than sending us changes to one of the generated files.
Terminology
-----------
diff -Nru survex-1.4.17/doc/manual/.buildinfo survex-1.4.22/doc/manual/.buildinfo
--- survex-1.4.17/doc/manual/.buildinfo 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/.buildinfo 2026-06-23 21:24:30.000000000 +0000
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 31363460af43ac70d5053648eda3b841
+config: aca336d10c8491dfb6b76f5b12352aab
tags: 645f666f9bcd5a90fca523b33c5a78b7
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/aven.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/aven.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/cavern.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cavern.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/cmap.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cmap.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/cmdline.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/cmdline.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/compass.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/compass.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/datafile.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/datafile.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/diffpos.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/diffpos.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/dump3d.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/dump3d.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/environment.pickle and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/environment.pickle differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/extend.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/extend.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/future.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/future.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/genhowto.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/genhowto.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/getstart.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/getstart.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/img.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/img.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/index.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/index.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/intro.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/intro.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/maillist.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/maillist.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/sorterr.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/sorterr.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/survex.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/survex.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/survexport.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/survexport.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/svxhowto.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/svxhowto.doctree differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/.doctrees/walls.doctree and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/.doctrees/walls.doctree differ
diff -Nru survex-1.4.17/doc/manual/_static/alabaster.css survex-1.4.22/doc/manual/_static/alabaster.css
--- survex-1.4.17/doc/manual/_static/alabaster.css 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/alabaster.css 2026-06-23 21:24:29.000000000 +0000
@@ -1,5 +1,3 @@
-@import url("basic.css");
-
/* -- page layout ----------------------------------------------------------- */
body {
@@ -160,8 +158,8 @@
font-size: 1em;
}
-div.sphinxsidebar #searchbox input[type="text"] {
- width: 160px;
+div.sphinxsidebar #searchbox {
+ margin: 1em 0;
}
div.sphinxsidebar .search > div {
@@ -263,10 +261,6 @@
margin-bottom: 0;
}
-div.highlight {
- background-color: #fff;
-}
-
dt:target, .highlight {
background: #FAF3E8;
}
@@ -454,7 +448,7 @@
}
pre {
- background: #EEE;
+ background: unset;
padding: 7px 30px;
margin: 15px 0px;
line-height: 1.3em;
@@ -485,15 +479,15 @@
border-bottom: 1px dotted #004B6B;
}
+a.reference:hover {
+ border-bottom: 1px solid #6D4100;
+}
+
/* Don't put an underline on images */
a.image-reference, a.image-reference:hover {
border-bottom: none;
}
-a.reference:hover {
- border-bottom: 1px solid #6D4100;
-}
-
a.footnote-reference {
text-decoration: none;
font-size: 0.7em;
@@ -509,68 +503,7 @@
background: #EEE;
}
-
-@media screen and (max-width: 870px) {
-
- div.sphinxsidebar {
- display: none;
- }
-
- div.document {
- width: 100%;
-
- }
-
- div.documentwrapper {
- margin-left: 0;
- margin-top: 0;
- margin-right: 0;
- margin-bottom: 0;
- }
-
- div.bodywrapper {
- margin-top: 0;
- margin-right: 0;
- margin-bottom: 0;
- margin-left: 0;
- }
-
- ul {
- margin-left: 0;
- }
-
- li > ul {
- /* Matches the 30px from the "ul, ol" selector above */
- margin-left: 30px;
- }
-
- .document {
- width: auto;
- }
-
- .footer {
- width: auto;
- }
-
- .bodywrapper {
- margin: 0;
- }
-
- .footer {
- width: auto;
- }
-
- .github {
- display: none;
- }
-
-
-
-}
-
-
-
-@media screen and (max-width: 875px) {
+@media screen and (max-width: 940px) {
body {
margin: 0;
@@ -580,12 +513,16 @@
div.documentwrapper {
float: none;
background: #fff;
+ margin-left: 0;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
}
div.sphinxsidebar {
display: block;
float: none;
- width: 102.5%;
+ width: unset;
margin: 50px -30px -20px -30px;
padding: 10px 20px;
background: #333;
@@ -620,8 +557,14 @@
div.body {
min-height: 0;
+ min-width: auto; /* fixes width on small screens, breaks .hll */
padding: 0;
}
+
+ .hll {
+ /* "fixes" the breakage */
+ width: max-content;
+ }
.rtd_doc_footer {
display: none;
@@ -635,13 +578,18 @@
width: auto;
}
- .footer {
- width: auto;
- }
-
.github {
display: none;
}
+
+ ul {
+ margin-left: 0;
+ }
+
+ li > ul {
+ /* Matches the 30px from the "ul, ol" selector above */
+ margin-left: 30px;
+ }
}
@@ -705,4 +653,11 @@
div.related {
display: none;
}
+}
+
+img.github {
+ position: absolute;
+ top: 0;
+ border: 0;
+ right: 0;
}
\ No newline at end of file
diff -Nru survex-1.4.17/doc/manual/_static/base-stemmer.js survex-1.4.22/doc/manual/_static/base-stemmer.js
--- survex-1.4.17/doc/manual/_static/base-stemmer.js 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/base-stemmer.js 2026-05-25 15:19:00.000000000 +0000
@@ -0,0 +1,476 @@
+// @ts-check
+
+/**@constructor*/
+BaseStemmer = function() {
+ /** @protected */
+ this.current = '';
+ this.cursor = 0;
+ this.limit = 0;
+ this.limit_backward = 0;
+ this.bra = 0;
+ this.ket = 0;
+
+ /**
+ * @param {string} value
+ */
+ this.setCurrent = function(value) {
+ this.current = value;
+ this.cursor = 0;
+ this.limit = this.current.length;
+ this.limit_backward = 0;
+ this.bra = this.cursor;
+ this.ket = this.limit;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.getCurrent = function() {
+ return this.current;
+ };
+
+ /**
+ * @param {BaseStemmer} other
+ */
+ this.copy_from = function(other) {
+ /** @protected */
+ this.current = other.current;
+ this.cursor = other.cursor;
+ this.limit = other.limit;
+ this.limit_backward = other.limit_backward;
+ this.bra = other.bra;
+ this.ket = other.ket;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.in_grouping = function(s, min, max) {
+ /** @protected */
+ if (this.cursor >= this.limit) return false;
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) return false;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
+ this.cursor++;
+ return true;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_in_grouping = function(s, min, max) {
+ /** @protected */
+ while (this.cursor < this.limit) {
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min)
+ return true;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
+ return true;
+ this.cursor++;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.in_grouping_b = function(s, min, max) {
+ /** @protected */
+ if (this.cursor <= this.limit_backward) return false;
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) return false;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
+ this.cursor--;
+ return true;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_in_grouping_b = function(s, min, max) {
+ /** @protected */
+ while (this.cursor > this.limit_backward) {
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) return true;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
+ this.cursor--;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.out_grouping = function(s, min, max) {
+ /** @protected */
+ if (this.cursor >= this.limit) return false;
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) {
+ this.cursor++;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
+ this.cursor++;
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_out_grouping = function(s, min, max) {
+ /** @protected */
+ while (this.cursor < this.limit) {
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch <= max && ch >= min) {
+ ch -= min;
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
+ return true;
+ }
+ }
+ this.cursor++;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.out_grouping_b = function(s, min, max) {
+ /** @protected */
+ if (this.cursor <= this.limit_backward) return false;
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) {
+ this.cursor--;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
+ this.cursor--;
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_out_grouping_b = function(s, min, max) {
+ /** @protected */
+ while (this.cursor > this.limit_backward) {
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch <= max && ch >= min) {
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
+ return true;
+ }
+ }
+ this.cursor--;
+ }
+ return false;
+ };
+
+ /**
+ * @param {string} s
+ * @return {boolean}
+ */
+ this.eq_s = function(s)
+ {
+ /** @protected */
+ if (this.limit - this.cursor < s.length) return false;
+ if (this.current.slice(this.cursor, this.cursor + s.length) != s)
+ {
+ return false;
+ }
+ this.cursor += s.length;
+ return true;
+ };
+
+ /**
+ * @param {string} s
+ * @return {boolean}
+ */
+ this.eq_s_b = function(s)
+ {
+ /** @protected */
+ if (this.cursor - this.limit_backward < s.length) return false;
+ if (this.current.slice(this.cursor - s.length, this.cursor) != s)
+ {
+ return false;
+ }
+ this.cursor -= s.length;
+ return true;
+ };
+
+ /**
+ * @param {Among[]} v
+ * @return {number}
+ */
+ this.find_among = function(v)
+ {
+ /** @protected */
+ var i = 0;
+ var j = v.length;
+
+ var c = this.cursor;
+ var l = this.limit;
+
+ var common_i = 0;
+ var common_j = 0;
+
+ var first_key_inspected = false;
+
+ while (true)
+ {
+ var k = i + ((j - i) >>> 1);
+ var diff = 0;
+ var common = common_i < common_j ? common_i : common_j; // smaller
+ // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
+ var w = v[k];
+ var i2;
+ for (i2 = common; i2 < w[0].length; i2++)
+ {
+ if (c + common == l)
+ {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
+ if (diff != 0) break;
+ common++;
+ }
+ if (diff < 0)
+ {
+ j = k;
+ common_j = common;
+ }
+ else
+ {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1)
+ {
+ if (i > 0) break; // v->s has been inspected
+ if (j == i) break; // only one item in v
+
+ // - but now we need to go round once more to get
+ // v->s inspected. This looks messy, but is actually
+ // the optimal approach.
+
+ if (first_key_inspected) break;
+ first_key_inspected = true;
+ }
+ }
+ do {
+ var w = v[i];
+ if (common_i >= w[0].length)
+ {
+ this.cursor = c + w[0].length;
+ if (w.length < 4) return w[2];
+ var res = w[3](this);
+ this.cursor = c + w[0].length;
+ if (res) return w[2];
+ }
+ i = w[1];
+ } while (i >= 0);
+ return 0;
+ };
+
+ // find_among_b is for backwards processing. Same comments apply
+ /**
+ * @param {Among[]} v
+ * @return {number}
+ */
+ this.find_among_b = function(v)
+ {
+ /** @protected */
+ var i = 0;
+ var j = v.length
+
+ var c = this.cursor;
+ var lb = this.limit_backward;
+
+ var common_i = 0;
+ var common_j = 0;
+
+ var first_key_inspected = false;
+
+ while (true)
+ {
+ var k = i + ((j - i) >> 1);
+ var diff = 0;
+ var common = common_i < common_j ? common_i : common_j;
+ var w = v[k];
+ var i2;
+ for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
+ {
+ if (c - common == lb)
+ {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
+ if (diff != 0) break;
+ common++;
+ }
+ if (diff < 0)
+ {
+ j = k;
+ common_j = common;
+ }
+ else
+ {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1)
+ {
+ if (i > 0) break;
+ if (j == i) break;
+ if (first_key_inspected) break;
+ first_key_inspected = true;
+ }
+ }
+ do {
+ var w = v[i];
+ if (common_i >= w[0].length)
+ {
+ this.cursor = c - w[0].length;
+ if (w.length < 4) return w[2];
+ var res = w[3](this);
+ this.cursor = c - w[0].length;
+ if (res) return w[2];
+ }
+ i = w[1];
+ } while (i >= 0);
+ return 0;
+ };
+
+ /* to replace chars between c_bra and c_ket in this.current by the
+ * chars in s.
+ */
+ /**
+ * @param {number} c_bra
+ * @param {number} c_ket
+ * @param {string} s
+ * @return {number}
+ */
+ this.replace_s = function(c_bra, c_ket, s)
+ {
+ /** @protected */
+ var adjustment = s.length - (c_ket - c_bra);
+ this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
+ this.limit += adjustment;
+ if (this.cursor >= c_ket) this.cursor += adjustment;
+ else if (this.cursor > c_bra) this.cursor = c_bra;
+ return adjustment;
+ };
+
+ /**
+ * @return {boolean}
+ */
+ this.slice_check = function()
+ {
+ /** @protected */
+ if (this.bra < 0 ||
+ this.bra > this.ket ||
+ this.ket > this.limit ||
+ this.limit > this.current.length)
+ {
+ return false;
+ }
+ return true;
+ };
+
+ /**
+ * @param {number} c_bra
+ * @return {boolean}
+ */
+ this.slice_from = function(s)
+ {
+ /** @protected */
+ var result = false;
+ if (this.slice_check())
+ {
+ this.replace_s(this.bra, this.ket, s);
+ result = true;
+ }
+ return result;
+ };
+
+ /**
+ * @return {boolean}
+ */
+ this.slice_del = function()
+ {
+ /** @protected */
+ return this.slice_from("");
+ };
+
+ /**
+ * @param {number} c_bra
+ * @param {number} c_ket
+ * @param {string} s
+ */
+ this.insert = function(c_bra, c_ket, s)
+ {
+ /** @protected */
+ var adjustment = this.replace_s(c_bra, c_ket, s);
+ if (c_bra <= this.bra) this.bra += adjustment;
+ if (c_bra <= this.ket) this.ket += adjustment;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.slice_to = function()
+ {
+ /** @protected */
+ var result = '';
+ if (this.slice_check())
+ {
+ result = this.current.slice(this.bra, this.ket);
+ }
+ return result;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.assign_to = function()
+ {
+ /** @protected */
+ return this.current.slice(0, this.limit);
+ };
+};
diff -Nru survex-1.4.17/doc/manual/_static/basic.css survex-1.4.22/doc/manual/_static/basic.css
--- survex-1.4.17/doc/manual/_static/basic.css 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/basic.css 2026-06-23 21:24:29.000000000 +0000
@@ -741,14 +741,6 @@
cursor: help;
}
-.translated {
- background-color: rgba(207, 255, 207, 0.2)
-}
-
-.untranslated {
- background-color: rgba(255, 207, 207, 0.2)
-}
-
/* -- code displays --------------------------------------------------------- */
pre {
diff -Nru survex-1.4.17/doc/manual/_static/doctools.js survex-1.4.22/doc/manual/_static/doctools.js
--- survex-1.4.17/doc/manual/_static/doctools.js 2025-01-31 10:28:15.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/doctools.js 2026-05-25 15:19:00.000000000 +0000
@@ -59,7 +59,7 @@
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
Documentation.PLURAL_EXPR = new Function(
"n",
- `return (${catalog.plural_expr})`
+ `return (${catalog.plural_expr})`,
);
Documentation.LOCALE = catalog.locale;
},
@@ -89,7 +89,7 @@
const togglerElements = document.querySelectorAll("img.toggler");
togglerElements.forEach((el) =>
- el.addEventListener("click", (event) => toggler(event.currentTarget))
+ el.addEventListener("click", (event) => toggler(event.currentTarget)),
);
togglerElements.forEach((el) => (el.style.display = ""));
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
@@ -98,14 +98,15 @@
initOnKeyListeners: () => {
// only install a listener if it is really needed
if (
- !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
- !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+ !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS
+ && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
)
return;
document.addEventListener("keydown", (event) => {
// bail for input elements
- if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
+ return;
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
diff -Nru survex-1.4.17/doc/manual/_static/documentation_options.js survex-1.4.22/doc/manual/_static/documentation_options.js
--- survex-1.4.17/doc/manual/_static/documentation_options.js 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/documentation_options.js 2026-06-23 21:24:29.000000000 +0000
@@ -1,5 +1,5 @@
const DOCUMENTATION_OPTIONS = {
- VERSION: '1.4.17',
+ VERSION: '1.4.22',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff -Nru survex-1.4.17/doc/manual/_static/english-stemmer.js survex-1.4.22/doc/manual/_static/english-stemmer.js
--- survex-1.4.17/doc/manual/_static/english-stemmer.js 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/english-stemmer.js 2026-05-25 15:19:00.000000000 +0000
@@ -0,0 +1,1066 @@
+// Generated from english.sbl by Snowball 3.0.1 - https://snowballstem.org/
+
+/**@constructor*/
+var EnglishStemmer = function() {
+ var base = new BaseStemmer();
+
+ /** @const */ var a_0 = [
+ ["arsen", -1, -1],
+ ["commun", -1, -1],
+ ["emerg", -1, -1],
+ ["gener", -1, -1],
+ ["later", -1, -1],
+ ["organ", -1, -1],
+ ["past", -1, -1],
+ ["univers", -1, -1]
+ ];
+
+ /** @const */ var a_1 = [
+ ["'", -1, 1],
+ ["'s'", 0, 1],
+ ["'s", -1, 1]
+ ];
+
+ /** @const */ var a_2 = [
+ ["ied", -1, 2],
+ ["s", -1, 3],
+ ["ies", 1, 2],
+ ["sses", 1, 1],
+ ["ss", 1, -1],
+ ["us", 1, -1]
+ ];
+
+ /** @const */ var a_3 = [
+ ["succ", -1, 1],
+ ["proc", -1, 1],
+ ["exc", -1, 1]
+ ];
+
+ /** @const */ var a_4 = [
+ ["even", -1, 2],
+ ["cann", -1, 2],
+ ["inn", -1, 2],
+ ["earr", -1, 2],
+ ["herr", -1, 2],
+ ["out", -1, 2],
+ ["y", -1, 1]
+ ];
+
+ /** @const */ var a_5 = [
+ ["", -1, -1],
+ ["ed", 0, 2],
+ ["eed", 1, 1],
+ ["ing", 0, 3],
+ ["edly", 0, 2],
+ ["eedly", 4, 1],
+ ["ingly", 0, 2]
+ ];
+
+ /** @const */ var a_6 = [
+ ["", -1, 3],
+ ["bb", 0, 2],
+ ["dd", 0, 2],
+ ["ff", 0, 2],
+ ["gg", 0, 2],
+ ["bl", 0, 1],
+ ["mm", 0, 2],
+ ["nn", 0, 2],
+ ["pp", 0, 2],
+ ["rr", 0, 2],
+ ["at", 0, 1],
+ ["tt", 0, 2],
+ ["iz", 0, 1]
+ ];
+
+ /** @const */ var a_7 = [
+ ["anci", -1, 3],
+ ["enci", -1, 2],
+ ["ogi", -1, 14],
+ ["li", -1, 16],
+ ["bli", 3, 12],
+ ["abli", 4, 4],
+ ["alli", 3, 8],
+ ["fulli", 3, 9],
+ ["lessli", 3, 15],
+ ["ousli", 3, 10],
+ ["entli", 3, 5],
+ ["aliti", -1, 8],
+ ["biliti", -1, 12],
+ ["iviti", -1, 11],
+ ["tional", -1, 1],
+ ["ational", 14, 7],
+ ["alism", -1, 8],
+ ["ation", -1, 7],
+ ["ization", 17, 6],
+ ["izer", -1, 6],
+ ["ator", -1, 7],
+ ["iveness", -1, 11],
+ ["fulness", -1, 9],
+ ["ousness", -1, 10],
+ ["ogist", -1, 13]
+ ];
+
+ /** @const */ var a_8 = [
+ ["icate", -1, 4],
+ ["ative", -1, 6],
+ ["alize", -1, 3],
+ ["iciti", -1, 4],
+ ["ical", -1, 4],
+ ["tional", -1, 1],
+ ["ational", 5, 2],
+ ["ful", -1, 5],
+ ["ness", -1, 5]
+ ];
+
+ /** @const */ var a_9 = [
+ ["ic", -1, 1],
+ ["ance", -1, 1],
+ ["ence", -1, 1],
+ ["able", -1, 1],
+ ["ible", -1, 1],
+ ["ate", -1, 1],
+ ["ive", -1, 1],
+ ["ize", -1, 1],
+ ["iti", -1, 1],
+ ["al", -1, 1],
+ ["ism", -1, 1],
+ ["ion", -1, 2],
+ ["er", -1, 1],
+ ["ous", -1, 1],
+ ["ant", -1, 1],
+ ["ent", -1, 1],
+ ["ment", 15, 1],
+ ["ement", 16, 1]
+ ];
+
+ /** @const */ var a_10 = [
+ ["e", -1, 1],
+ ["l", -1, 2]
+ ];
+
+ /** @const */ var a_11 = [
+ ["andes", -1, -1],
+ ["atlas", -1, -1],
+ ["bias", -1, -1],
+ ["cosmos", -1, -1],
+ ["early", -1, 5],
+ ["gently", -1, 3],
+ ["howe", -1, -1],
+ ["idly", -1, 2],
+ ["news", -1, -1],
+ ["only", -1, 6],
+ ["singly", -1, 7],
+ ["skies", -1, 1],
+ ["sky", -1, -1],
+ ["ugly", -1, 4]
+ ];
+
+ /** @const */ var /** Array */ g_aeo = [17, 64];
+
+ /** @const */ var /** Array */ g_v = [17, 65, 16, 1];
+
+ /** @const */ var /** Array */ g_v_WXY = [1, 17, 65, 208, 1];
+
+ /** @const */ var /** Array */ g_valid_LI = [55, 141, 2];
+
+ var /** boolean */ B_Y_found = false;
+ var /** number */ I_p2 = 0;
+ var /** number */ I_p1 = 0;
+
+
+ /** @return {boolean} */
+ function r_prelude() {
+ B_Y_found = false;
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("'")))
+ {
+ break lab0;
+ }
+ base.ket = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ base.cursor = v_1;
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab1: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("y")))
+ {
+ break lab1;
+ }
+ base.ket = base.cursor;
+ if (!base.slice_from("Y"))
+ {
+ return false;
+ }
+ B_Y_found = true;
+ }
+ base.cursor = v_2;
+ /** @const */ var /** number */ v_3 = base.cursor;
+ lab2: {
+ while(true)
+ {
+ /** @const */ var /** number */ v_4 = base.cursor;
+ lab3: {
+ golab4: while(true)
+ {
+ /** @const */ var /** number */ v_5 = base.cursor;
+ lab5: {
+ if (!(base.in_grouping(g_v, 97, 121)))
+ {
+ break lab5;
+ }
+ base.bra = base.cursor;
+ if (!(base.eq_s("y")))
+ {
+ break lab5;
+ }
+ base.ket = base.cursor;
+ base.cursor = v_5;
+ break golab4;
+ }
+ base.cursor = v_5;
+ if (base.cursor >= base.limit)
+ {
+ break lab3;
+ }
+ base.cursor++;
+ }
+ if (!base.slice_from("Y"))
+ {
+ return false;
+ }
+ B_Y_found = true;
+ continue;
+ }
+ base.cursor = v_4;
+ break;
+ }
+ }
+ base.cursor = v_3;
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_mark_regions() {
+ I_p1 = base.limit;
+ I_p2 = base.limit;
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ lab1: {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab2: {
+ if (base.find_among(a_0) == 0)
+ {
+ break lab2;
+ }
+ break lab1;
+ }
+ base.cursor = v_2;
+ if (!base.go_out_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ if (!base.go_in_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ }
+ I_p1 = base.cursor;
+ if (!base.go_out_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ if (!base.go_in_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ I_p2 = base.cursor;
+ }
+ base.cursor = v_1;
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_shortv() {
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.out_grouping_b(g_v_WXY, 89, 121)))
+ {
+ break lab1;
+ }
+ if (!(base.in_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ lab2: {
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab2;
+ }
+ if (!(base.in_grouping_b(g_v, 97, 121)))
+ {
+ break lab2;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab2;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("past")))
+ {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_R1() {
+ return I_p1 <= base.cursor;
+ };
+
+ /** @return {boolean} */
+ function r_R2() {
+ return I_p2 <= base.cursor;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1a() {
+ var /** number */ among_var;
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab0: {
+ base.ket = base.cursor;
+ if (base.find_among_b(a_1) == 0)
+ {
+ base.cursor = base.limit - v_1;
+ break lab0;
+ }
+ base.bra = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_2);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("ss"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ lab1: {
+ /** @const */ var /** number */ v_2 = base.limit - base.cursor;
+ lab2: {
+ {
+ /** @const */ var /** number */ c1 = base.cursor - 2;
+ if (c1 < base.limit_backward)
+ {
+ break lab2;
+ }
+ base.cursor = c1;
+ }
+ if (!base.slice_from("i"))
+ {
+ return false;
+ }
+ break lab1;
+ }
+ base.cursor = base.limit - v_2;
+ if (!base.slice_from("ie"))
+ {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (base.cursor <= base.limit_backward)
+ {
+ return false;
+ }
+ base.cursor--;
+ if (!base.go_out_grouping_b(g_v, 97, 121))
+ {
+ return false;
+ }
+ base.cursor--;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1b() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_5);
+ base.bra = base.cursor;
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ switch (among_var) {
+ case 1:
+ /** @const */ var /** number */ v_2 = base.limit - base.cursor;
+ lab2: {
+ lab3: {
+ /** @const */ var /** number */ v_3 = base.limit - base.cursor;
+ lab4: {
+ if (base.find_among_b(a_3) == 0)
+ {
+ break lab4;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab4;
+ }
+ break lab3;
+ }
+ base.cursor = base.limit - v_3;
+ if (!r_R1())
+ {
+ break lab2;
+ }
+ if (!base.slice_from("ee"))
+ {
+ return false;
+ }
+ }
+ }
+ base.cursor = base.limit - v_2;
+ break;
+ case 2:
+ break lab1;
+ case 3:
+ among_var = base.find_among_b(a_4);
+ if (among_var == 0)
+ {
+ break lab1;
+ }
+ switch (among_var) {
+ case 1:
+ /** @const */ var /** number */ v_4 = base.limit - base.cursor;
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab1;
+ }
+ base.cursor = base.limit - v_4;
+ base.bra = base.cursor;
+ if (!base.slice_from("ie"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (base.cursor > base.limit_backward)
+ {
+ break lab1;
+ }
+ break;
+ }
+ break;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ /** @const */ var /** number */ v_5 = base.limit - base.cursor;
+ if (!base.go_out_grouping_b(g_v, 97, 121))
+ {
+ return false;
+ }
+ base.cursor--;
+ base.cursor = base.limit - v_5;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ base.ket = base.cursor;
+ base.bra = base.cursor;
+ /** @const */ var /** number */ v_6 = base.limit - base.cursor;
+ among_var = base.find_among_b(a_6);
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("e"))
+ {
+ return false;
+ }
+ return false;
+ case 2:
+ {
+ /** @const */ var /** number */ v_7 = base.limit - base.cursor;
+ lab5: {
+ if (!(base.in_grouping_b(g_aeo, 97, 111)))
+ {
+ break lab5;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab5;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_7;
+ }
+ break;
+ case 3:
+ if (base.cursor != I_p1)
+ {
+ return false;
+ }
+ /** @const */ var /** number */ v_8 = base.limit - base.cursor;
+ if (!r_shortv())
+ {
+ return false;
+ }
+ base.cursor = base.limit - v_8;
+ if (!base.slice_from("e"))
+ {
+ return false;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_6;
+ base.ket = base.cursor;
+ if (base.cursor <= base.limit_backward)
+ {
+ return false;
+ }
+ base.cursor--;
+ base.bra = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1c() {
+ base.ket = base.cursor;
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.eq_s_b("y")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("Y")))
+ {
+ return false;
+ }
+ }
+ base.bra = base.cursor;
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ return false;
+ }
+ lab2: {
+ if (base.cursor > base.limit_backward)
+ {
+ break lab2;
+ }
+ return false;
+ }
+ if (!base.slice_from("i"))
+ {
+ return false;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_2() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_7);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("ence"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("ance"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("able"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_from("ent"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!base.slice_from("ize"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ if (!base.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 8:
+ if (!base.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 9:
+ if (!base.slice_from("ful"))
+ {
+ return false;
+ }
+ break;
+ case 10:
+ if (!base.slice_from("ous"))
+ {
+ return false;
+ }
+ break;
+ case 11:
+ if (!base.slice_from("ive"))
+ {
+ return false;
+ }
+ break;
+ case 12:
+ if (!base.slice_from("ble"))
+ {
+ return false;
+ }
+ break;
+ case 13:
+ if (!base.slice_from("og"))
+ {
+ return false;
+ }
+ break;
+ case 14:
+ if (!(base.eq_s_b("l")))
+ {
+ return false;
+ }
+ if (!base.slice_from("og"))
+ {
+ return false;
+ }
+ break;
+ case 15:
+ if (!base.slice_from("less"))
+ {
+ return false;
+ }
+ break;
+ case 16:
+ if (!(base.in_grouping_b(g_valid_LI, 99, 116)))
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_3() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_8);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("ic"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!r_R2())
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_4() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_9);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R2())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.eq_s_b("s")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("t")))
+ {
+ return false;
+ }
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_5() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_10);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ switch (among_var) {
+ case 1:
+ lab0: {
+ lab1: {
+ if (!r_R2())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ if (!r_R1())
+ {
+ return false;
+ }
+ {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab2: {
+ if (!r_shortv())
+ {
+ break lab2;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_1;
+ }
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!r_R2())
+ {
+ return false;
+ }
+ if (!(base.eq_s_b("l")))
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_exception1() {
+ var /** number */ among_var;
+ base.bra = base.cursor;
+ among_var = base.find_among(a_11);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.ket = base.cursor;
+ if (base.cursor < base.limit)
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("sky"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("idl"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("gentl"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("ugli"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_from("earli"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!base.slice_from("onli"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ if (!base.slice_from("singl"))
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_postlude() {
+ if (!B_Y_found)
+ {
+ return false;
+ }
+ while(true)
+ {
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ golab1: while(true)
+ {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab2: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("Y")))
+ {
+ break lab2;
+ }
+ base.ket = base.cursor;
+ base.cursor = v_2;
+ break golab1;
+ }
+ base.cursor = v_2;
+ if (base.cursor >= base.limit)
+ {
+ break lab0;
+ }
+ base.cursor++;
+ }
+ if (!base.slice_from("y"))
+ {
+ return false;
+ }
+ continue;
+ }
+ base.cursor = v_1;
+ break;
+ }
+ return true;
+ };
+
+ this.stem = /** @return {boolean} */ function() {
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab1: {
+ if (!r_exception1())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = v_1;
+ lab2: {
+ {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab3: {
+ {
+ /** @const */ var /** number */ c1 = base.cursor + 3;
+ if (c1 > base.limit)
+ {
+ break lab3;
+ }
+ base.cursor = c1;
+ }
+ break lab2;
+ }
+ base.cursor = v_2;
+ }
+ break lab0;
+ }
+ base.cursor = v_1;
+ r_prelude();
+ r_mark_regions();
+ base.limit_backward = base.cursor; base.cursor = base.limit;
+ /** @const */ var /** number */ v_3 = base.limit - base.cursor;
+ r_Step_1a();
+ base.cursor = base.limit - v_3;
+ /** @const */ var /** number */ v_4 = base.limit - base.cursor;
+ r_Step_1b();
+ base.cursor = base.limit - v_4;
+ /** @const */ var /** number */ v_5 = base.limit - base.cursor;
+ r_Step_1c();
+ base.cursor = base.limit - v_5;
+ /** @const */ var /** number */ v_6 = base.limit - base.cursor;
+ r_Step_2();
+ base.cursor = base.limit - v_6;
+ /** @const */ var /** number */ v_7 = base.limit - base.cursor;
+ r_Step_3();
+ base.cursor = base.limit - v_7;
+ /** @const */ var /** number */ v_8 = base.limit - base.cursor;
+ r_Step_4();
+ base.cursor = base.limit - v_8;
+ /** @const */ var /** number */ v_9 = base.limit - base.cursor;
+ r_Step_5();
+ base.cursor = base.limit - v_9;
+ base.cursor = base.limit_backward;
+ /** @const */ var /** number */ v_10 = base.cursor;
+ r_postlude();
+ base.cursor = v_10;
+ }
+ return true;
+ };
+
+ /**@return{string}*/
+ this['stemWord'] = function(/**string*/word) {
+ base.setCurrent(word);
+ this.stem();
+ return base.getCurrent();
+ };
+};
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/_static/forkme_right_darkblue_121621.png and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/_static/forkme_right_darkblue_121621.png differ
diff -Nru survex-1.4.17/doc/manual/_static/github-banner.svg survex-1.4.22/doc/manual/_static/github-banner.svg
--- survex-1.4.17/doc/manual/_static/github-banner.svg 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/github-banner.svg 2026-02-06 05:04:01.000000000 +0000
@@ -0,0 +1,5 @@
+
+
+
+
+
diff -Nru survex-1.4.17/doc/manual/_static/language_data.js survex-1.4.22/doc/manual/_static/language_data.js
--- survex-1.4.17/doc/manual/_static/language_data.js 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/language_data.js 2026-06-23 21:24:29.000000000 +0000
@@ -1,192 +1,13 @@
/*
* This script contains the language-specific data used by searchtools.js,
- * namely the list of stopwords, stemmer, scorer and splitter.
+ * namely the set of stopwords, stemmer, scorer and splitter.
*/
-var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
+const stopwords = new Set(["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]);
+window.stopwords = stopwords; // Export to global scope
-/* Non-minified version is copied as a separate JS file, if available */
-
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
- var step2list = {
- ational: 'ate',
- tional: 'tion',
- enci: 'ence',
- anci: 'ance',
- izer: 'ize',
- bli: 'ble',
- alli: 'al',
- entli: 'ent',
- eli: 'e',
- ousli: 'ous',
- ization: 'ize',
- ation: 'ate',
- ator: 'ate',
- alism: 'al',
- iveness: 'ive',
- fulness: 'ful',
- ousness: 'ous',
- aliti: 'al',
- iviti: 'ive',
- biliti: 'ble',
- logi: 'log'
- };
-
- var step3list = {
- icate: 'ic',
- ative: '',
- alize: 'al',
- iciti: 'ic',
- ical: 'ic',
- ful: '',
- ness: ''
- };
-
- var c = "[^aeiou]"; // consonant
- var v = "[aeiouy]"; // vowel
- var C = c + "[^aeiouy]*"; // consonant sequence
- var V = v + "[aeiou]*"; // vowel sequence
-
- var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
- var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
- var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
- var s_v = "^(" + C + ")?" + v; // vowel in stem
-
- this.stemWord = function (w) {
- var stem;
- var suffix;
- var firstch;
- var origword = w;
-
- if (w.length < 3)
- return w;
-
- var re;
- var re2;
- var re3;
- var re4;
-
- firstch = w.substr(0,1);
- if (firstch == "y")
- w = firstch.toUpperCase() + w.substr(1);
-
- // Step 1a
- re = /^(.+?)(ss|i)es$/;
- re2 = /^(.+?)([^s])s$/;
-
- if (re.test(w))
- w = w.replace(re,"$1$2");
- else if (re2.test(w))
- w = w.replace(re2,"$1$2");
-
- // Step 1b
- re = /^(.+?)eed$/;
- re2 = /^(.+?)(ed|ing)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- re = new RegExp(mgr0);
- if (re.test(fp[1])) {
- re = /.$/;
- w = w.replace(re,"");
- }
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1];
- re2 = new RegExp(s_v);
- if (re2.test(stem)) {
- w = stem;
- re2 = /(at|bl|iz)$/;
- re3 = new RegExp("([^aeiouylsz])\\1$");
- re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re2.test(w))
- w = w + "e";
- else if (re3.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
- else if (re4.test(w))
- w = w + "e";
- }
- }
-
- // Step 1c
- re = /^(.+?)y$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(s_v);
- if (re.test(stem))
- w = stem + "i";
- }
-
- // Step 2
- re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step2list[suffix];
- }
-
- // Step 3
- re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step3list[suffix];
- }
-
- // Step 4
- re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
- re2 = /^(.+?)(s|t)(ion)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- if (re.test(stem))
- w = stem;
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1] + fp[2];
- re2 = new RegExp(mgr1);
- if (re2.test(stem))
- w = stem;
- }
-
- // Step 5
- re = /^(.+?)e$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- re2 = new RegExp(meq1);
- re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
- w = stem;
- }
- re = /ll$/;
- re2 = new RegExp(mgr1);
- if (re.test(w) && re2.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
-
- // and turn initial Y back to y
- if (firstch == "y")
- w = firstch.toLowerCase() + w.substr(1);
- return w;
- }
-}
-
+/* Non-minified versions are copied as separate JavaScript files, if available */
+BaseStemmer=function(){this.current="",this.cursor=0,this.limit=0,this.limit_backward=0,this.bra=0,this.ket=0,this.setCurrent=function(t){this.current=t,this.cursor=0,this.limit=this.current.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},this.getCurrent=function(){return this.current},this.copy_from=function(t){this.current=t.current,this.cursor=t.cursor,this.limit=t.limit,this.limit_backward=t.limit_backward,this.bra=t.bra,this.ket=t.ket},this.in_grouping=function(t,r,i){return!(this.cursor>=this.limit||i<(i=this.current.charCodeAt(this.cursor))||i>>3]&1<<(7&i))||(this.cursor++,0))},this.go_in_grouping=function(t,r,i){for(;this.cursor>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.in_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward||i<(i=this.current.charCodeAt(this.cursor-1))||i>>3]&1<<(7&i))||(this.cursor--,0))},this.go_in_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(i>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.out_grouping=function(t,r,i){return!(this.cursor>=this.limit)&&(i<(i=this.current.charCodeAt(this.cursor))||i>>3]&1<<(7&i)))&&(this.cursor++,!0)},this.go_out_grouping=function(t,r,i){for(;this.cursor>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.out_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward)&&(i<(i=this.current.charCodeAt(this.cursor-1))||i>>3]&1<<(7&i)))&&(this.cursor--,!0)},this.go_out_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(s<=i&&r<=s&&0!=(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.eq_s=function(t){return!(this.limit-this.cursor>>1),o=0,a=e=(l=t[r])[0].length){if(this.cursor=s+l[0].length,l.length<4)return l[2];var g=l[3](this);if(this.cursor=s+l[0].length,g)return l[2]}}while(0<=(r=l[1]));return 0},this.find_among_b=function(t){for(var r=0,i=t.length,s=this.cursor,h=this.limit_backward,e=0,n=0,c=!1;;){for(var u,o=r+(i-r>>1),a=0,l=e=(u=t[r])[0].length){if(this.cursor=s-u[0].length,u.length<4)return u[2];var g=u[3](this);if(this.cursor=s-u[0].length,g)return u[2]}}while(0<=(r=u[1]));return 0},this.replace_s=function(t,r,i){var s=i.length-(r-t);return this.current=this.current.slice(0,t)+i+this.current.slice(r),this.limit+=s,this.cursor>=r?this.cursor+=s:this.cursor>t&&(this.cursor=t),s},this.slice_check=function(){return!(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length)},this.slice_from=function(t){var r=!1;return this.slice_check()&&(this.replace_s(this.bra,this.ket,t),r=!0),r},this.slice_del=function(){return this.slice_from("")},this.insert=function(t,r,i){r=this.replace_s(t,r,i);t<=this.bra&&(this.bra+=r),t<=this.ket&&(this.ket+=r)},this.slice_to=function(){var t="";return t=this.slice_check()?this.current.slice(this.bra,this.ket):t},this.assign_to=function(){return this.current.slice(0,this.limit)}};
+var EnglishStemmer=function(){var a=new BaseStemmer,c=[["arsen",-1,-1],["commun",-1,-1],["emerg",-1,-1],["gener",-1,-1],["later",-1,-1],["organ",-1,-1],["past",-1,-1],["univers",-1,-1]],o=[["'",-1,1],["'s'",0,1],["'s",-1,1]],u=[["ied",-1,2],["s",-1,3],["ies",1,2],["sses",1,1],["ss",1,-1],["us",1,-1]],t=[["succ",-1,1],["proc",-1,1],["exc",-1,1]],l=[["even",-1,2],["cann",-1,2],["inn",-1,2],["earr",-1,2],["herr",-1,2],["out",-1,2],["y",-1,1]],n=[["",-1,-1],["ed",0,2],["eed",1,1],["ing",0,3],["edly",0,2],["eedly",4,1],["ingly",0,2]],f=[["",-1,3],["bb",0,2],["dd",0,2],["ff",0,2],["gg",0,2],["bl",0,1],["mm",0,2],["nn",0,2],["pp",0,2],["rr",0,2],["at",0,1],["tt",0,2],["iz",0,1]],_=[["anci",-1,3],["enci",-1,2],["ogi",-1,14],["li",-1,16],["bli",3,12],["abli",4,4],["alli",3,8],["fulli",3,9],["lessli",3,15],["ousli",3,10],["entli",3,5],["aliti",-1,8],["biliti",-1,12],["iviti",-1,11],["tional",-1,1],["ational",14,7],["alism",-1,8],["ation",-1,7],["ization",17,6],["izer",-1,6],["ator",-1,7],["iveness",-1,11],["fulness",-1,9],["ousness",-1,10],["ogist",-1,13]],m=[["icate",-1,4],["ative",-1,6],["alize",-1,3],["iciti",-1,4],["ical",-1,4],["tional",-1,1],["ational",5,2],["ful",-1,5],["ness",-1,5]],b=[["ic",-1,1],["ance",-1,1],["ence",-1,1],["able",-1,1],["ible",-1,1],["ate",-1,1],["ive",-1,1],["ize",-1,1],["iti",-1,1],["al",-1,1],["ism",-1,1],["ion",-1,2],["er",-1,1],["ous",-1,1],["ant",-1,1],["ent",-1,1],["ment",15,1],["ement",16,1]],k=[["e",-1,1],["l",-1,2]],g=[["andes",-1,-1],["atlas",-1,-1],["bias",-1,-1],["cosmos",-1,-1],["early",-1,5],["gently",-1,3],["howe",-1,-1],["idly",-1,2],["news",-1,-1],["only",-1,6],["singly",-1,7],["skies",-1,1],["sky",-1,-1],["ugly",-1,4]],d=[17,64],v=[17,65,16,1],i=[1,17,65,208,1],w=[55,141,2],p=!1,y=0,h=0;function q(){var r=a.limit-a.cursor;return!!(a.out_grouping_b(i,89,121)&&a.in_grouping_b(v,97,121)&&a.out_grouping_b(v,97,121)||(a.cursor=a.limit-r,a.out_grouping_b(v,97,121)&&a.in_grouping_b(v,97,121)&&!(a.cursor>a.limit_backward))||(a.cursor=a.limit-r,a.eq_s_b("past")))}function z(){return h<=a.cursor}function Y(){return y<=a.cursor}this.stem=function(){var r=a.cursor;if(!(()=>{var r;if(a.bra=a.cursor,0!=(r=a.find_among(g))&&(a.ket=a.cursor,!(a.cursora.limit)a.cursor=i;else{a.cursor=e,a.cursor=r,(()=>{p=!1;var r=a.cursor;if(a.bra=a.cursor,!a.eq_s("'")||(a.ket=a.cursor,a.slice_del())){a.cursor=r;r=a.cursor;if(a.bra=a.cursor,a.eq_s("y")){if(a.ket=a.cursor,!a.slice_from("Y"))return;p=!0}a.cursor=r;for(r=a.cursor;;){var i=a.cursor;r:{for(;;){var e=a.cursor;if(a.in_grouping(v,97,121)&&(a.bra=a.cursor,a.eq_s("y"))){a.ket=a.cursor,a.cursor=e;break}if(a.cursor=e,a.cursor>=a.limit)break r;a.cursor++}if(!a.slice_from("Y"))return;p=!0;continue}a.cursor=i;break}a.cursor=r}})(),h=a.limit,y=a.limit;i=a.cursor;r:{var s=a.cursor;if(0==a.find_among(c)){if(a.cursor=s,!a.go_out_grouping(v,97,121))break r;if(a.cursor++,!a.go_in_grouping(v,97,121))break r;a.cursor++}h=a.cursor,a.go_out_grouping(v,97,121)&&(a.cursor++,a.go_in_grouping(v,97,121))&&(a.cursor++,y=a.cursor)}a.cursor=i,a.limit_backward=a.cursor,a.cursor=a.limit;var e=a.limit-a.cursor,r=((()=>{var r=a.limit-a.cursor;if(a.ket=a.cursor,0==a.find_among_b(o))a.cursor=a.limit-r;else if(a.bra=a.cursor,!a.slice_del())return;if(a.ket=a.cursor,0!=(r=a.find_among_b(u)))switch(a.bra=a.cursor,r){case 1:if(a.slice_from("ss"))break;return;case 2:r:{var i=a.limit-a.cursor,e=a.cursor-2;if(!(e{a.ket=a.cursor,o=a.find_among_b(n),a.bra=a.cursor;r:{var r=a.limit-a.cursor;i:{switch(o){case 1:var i=a.limit-a.cursor;e:{var e=a.limit-a.cursor;if(0==a.find_among_b(t)||a.cursor>a.limit_backward){if(a.cursor=a.limit-e,!z())break e;if(!a.slice_from("ee"))return}}a.cursor=a.limit-i;break;case 2:break i;case 3:if(0==(o=a.find_among_b(l)))break i;switch(o){case 1:var s=a.limit-a.cursor;if(!a.out_grouping_b(v,97,121))break i;if(a.cursor>a.limit_backward)break i;if(a.cursor=a.limit-s,a.bra=a.cursor,a.slice_from("ie"))break;return;case 2:if(a.cursor>a.limit_backward)break i}}break r}a.cursor=a.limit-r;var c=a.limit-a.cursor;if(!a.go_out_grouping_b(v,97,121))return;if(a.cursor--,a.cursor=a.limit-c,!a.slice_del())return;a.ket=a.cursor,a.bra=a.cursor;var o,c=a.limit-a.cursor;switch(o=a.find_among_b(f)){case 1:return a.slice_from("e");case 2:var u=a.limit-a.cursor;if(a.in_grouping_b(d,97,111)&&!(a.cursor>a.limit_backward))return;a.cursor=a.limit-u;break;case 3:return a.cursor!=h||(u=a.limit-a.cursor,q()&&(a.cursor=a.limit-u,a.slice_from("e")))}if(a.cursor=a.limit-c,a.ket=a.cursor,a.cursor<=a.limit_backward)return;if(a.cursor--,a.bra=a.cursor,!a.slice_del())return}})(),a.cursor=a.limit-r,a.limit-a.cursor),r=(a.ket=a.cursor,e=a.limit-a.cursor,(a.eq_s_b("y")||(a.cursor=a.limit-e,a.eq_s_b("Y")))&&(a.bra=a.cursor,a.out_grouping_b(v,97,121))&&a.cursor>a.limit_backward&&a.slice_from("i"),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(_))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ence"))break;return;case 3:if(a.slice_from("ance"))break;return;case 4:if(a.slice_from("able"))break;return;case 5:if(a.slice_from("ent"))break;return;case 6:if(a.slice_from("ize"))break;return;case 7:if(a.slice_from("ate"))break;return;case 8:if(a.slice_from("al"))break;return;case 9:if(a.slice_from("ful"))break;return;case 10:if(a.slice_from("ous"))break;return;case 11:if(a.slice_from("ive"))break;return;case 12:if(a.slice_from("ble"))break;return;case 13:if(a.slice_from("og"))break;return;case 14:if(!a.eq_s_b("l"))return;if(a.slice_from("og"))break;return;case 15:if(a.slice_from("less"))break;return;case 16:if(!a.in_grouping_b(w,99,116))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.limit-a.cursor),i=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(m))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ate"))break;return;case 3:if(a.slice_from("al"))break;return;case 4:if(a.slice_from("ic"))break;return;case 5:if(a.slice_del())break;return;case 6:if(!Y())return;if(a.slice_del())break}})(),a.cursor=a.limit-e,a.limit-a.cursor),r=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(b))&&(a.bra=a.cursor,Y()))switch(r){case 1:if(a.slice_del())break;return;case 2:var i=a.limit-a.cursor;if(!a.eq_s_b("s")&&(a.cursor=a.limit-i,!a.eq_s_b("t")))return;if(a.slice_del())break}})(),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(k)))switch(a.bra=a.cursor,r){case 1:if(!Y()){if(!z())return;var i=a.limit-a.cursor;if(q())return;a.cursor=a.limit-i}if(a.slice_del())break;return;case 2:if(!Y())return;if(!a.eq_s_b("l"))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.cursor=a.limit_backward,a.cursor);(()=>{if(p)for(;;){var r=a.cursor;r:{for(;;){var i=a.cursor;if(a.bra=a.cursor,a.eq_s("Y")){a.ket=a.cursor,a.cursor=i;break}if(a.cursor=i,a.cursor>=a.limit)break r;a.cursor++}if(a.slice_from("y"))continue;return}a.cursor=r;break}})(),a.cursor=e}}return!0},this.stemWord=function(r){return a.setCurrent(r),this.stem(),a.getCurrent()}};
+window.Stemmer = EnglishStemmer;
diff -Nru survex-1.4.17/doc/manual/_static/pygments.css survex-1.4.22/doc/manual/_static/pygments.css
--- survex-1.4.17/doc/manual/_static/pygments.css 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/pygments.css 2026-06-23 21:24:29.000000000 +0000
@@ -5,80 +5,80 @@
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
-.highlight .c { color: #8f5902; font-style: italic } /* Comment */
-.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
-.highlight .g { color: #000000 } /* Generic */
+.highlight .c { color: #8F5902; font-style: italic } /* Comment */
+.highlight .err { color: #A40000; border: 1px solid #EF2929 } /* Error */
+.highlight .g { color: #000 } /* Generic */
.highlight .k { color: #004461; font-weight: bold } /* Keyword */
-.highlight .l { color: #000000 } /* Literal */
-.highlight .n { color: #000000 } /* Name */
+.highlight .l { color: #000 } /* Literal */
+.highlight .n { color: #000 } /* Name */
.highlight .o { color: #582800 } /* Operator */
-.highlight .x { color: #000000 } /* Other */
-.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
-.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #8f5902 } /* Comment.Preproc */
-.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #a40000 } /* Generic.Deleted */
-.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
-.highlight .ges { color: #000000 } /* Generic.EmphStrong */
-.highlight .gr { color: #ef2929 } /* Generic.Error */
+.highlight .x { color: #000 } /* Other */
+.highlight .p { color: #000; font-weight: bold } /* Punctuation */
+.highlight .ch { color: #8F5902; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #8F5902; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #8F5902 } /* Comment.Preproc */
+.highlight .cpf { color: #8F5902; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #8F5902; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #8F5902; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A40000 } /* Generic.Deleted */
+.highlight .ge { color: #000; font-style: italic } /* Generic.Emph */
+.highlight .ges { color: #000 } /* Generic.EmphStrong */
+.highlight .gr { color: #EF2929 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .go { color: #888 } /* Generic.Output */
.highlight .gp { color: #745334 } /* Generic.Prompt */
-.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
+.highlight .gs { color: #000; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
+.highlight .gt { color: #A40000; font-weight: bold } /* Generic.Traceback */
.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
-.highlight .ld { color: #000000 } /* Literal.Date */
-.highlight .m { color: #990000 } /* Literal.Number */
-.highlight .s { color: #4e9a06 } /* Literal.String */
-.highlight .na { color: #c4a000 } /* Name.Attribute */
+.highlight .ld { color: #000 } /* Literal.Date */
+.highlight .m { color: #900 } /* Literal.Number */
+.highlight .s { color: #4E9A06 } /* Literal.String */
+.highlight .na { color: #C4A000 } /* Name.Attribute */
.highlight .nb { color: #004461 } /* Name.Builtin */
-.highlight .nc { color: #000000 } /* Name.Class */
-.highlight .no { color: #000000 } /* Name.Constant */
-.highlight .nd { color: #888888 } /* Name.Decorator */
-.highlight .ni { color: #ce5c00 } /* Name.Entity */
-.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #000000 } /* Name.Function */
-.highlight .nl { color: #f57900 } /* Name.Label */
-.highlight .nn { color: #000000 } /* Name.Namespace */
-.highlight .nx { color: #000000 } /* Name.Other */
-.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nc { color: #000 } /* Name.Class */
+.highlight .no { color: #000 } /* Name.Constant */
+.highlight .nd { color: #888 } /* Name.Decorator */
+.highlight .ni { color: #CE5C00 } /* Name.Entity */
+.highlight .ne { color: #C00; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #000 } /* Name.Function */
+.highlight .nl { color: #F57900 } /* Name.Label */
+.highlight .nn { color: #000 } /* Name.Namespace */
+.highlight .nx { color: #000 } /* Name.Other */
+.highlight .py { color: #000 } /* Name.Property */
.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .nv { color: #000 } /* Name.Variable */
.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
-.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */
-.highlight .w { color: #f8f8f8 } /* Text.Whitespace */
-.highlight .mb { color: #990000 } /* Literal.Number.Bin */
-.highlight .mf { color: #990000 } /* Literal.Number.Float */
-.highlight .mh { color: #990000 } /* Literal.Number.Hex */
-.highlight .mi { color: #990000 } /* Literal.Number.Integer */
-.highlight .mo { color: #990000 } /* Literal.Number.Oct */
-.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
-.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
-.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
-.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
-.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
-.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
-.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
-.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
-.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
-.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
-.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
-.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
-.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #000000 } /* Name.Function.Magic */
-.highlight .vc { color: #000000 } /* Name.Variable.Class */
-.highlight .vg { color: #000000 } /* Name.Variable.Global */
-.highlight .vi { color: #000000 } /* Name.Variable.Instance */
-.highlight .vm { color: #000000 } /* Name.Variable.Magic */
-.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */
\ No newline at end of file
+.highlight .pm { color: #000; font-weight: bold } /* Punctuation.Marker */
+.highlight .w { color: #F8F8F8 } /* Text.Whitespace */
+.highlight .mb { color: #900 } /* Literal.Number.Bin */
+.highlight .mf { color: #900 } /* Literal.Number.Float */
+.highlight .mh { color: #900 } /* Literal.Number.Hex */
+.highlight .mi { color: #900 } /* Literal.Number.Integer */
+.highlight .mo { color: #900 } /* Literal.Number.Oct */
+.highlight .sa { color: #4E9A06 } /* Literal.String.Affix */
+.highlight .sb { color: #4E9A06 } /* Literal.String.Backtick */
+.highlight .sc { color: #4E9A06 } /* Literal.String.Char */
+.highlight .dl { color: #4E9A06 } /* Literal.String.Delimiter */
+.highlight .sd { color: #8F5902; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4E9A06 } /* Literal.String.Double */
+.highlight .se { color: #4E9A06 } /* Literal.String.Escape */
+.highlight .sh { color: #4E9A06 } /* Literal.String.Heredoc */
+.highlight .si { color: #4E9A06 } /* Literal.String.Interpol */
+.highlight .sx { color: #4E9A06 } /* Literal.String.Other */
+.highlight .sr { color: #4E9A06 } /* Literal.String.Regex */
+.highlight .s1 { color: #4E9A06 } /* Literal.String.Single */
+.highlight .ss { color: #4E9A06 } /* Literal.String.Symbol */
+.highlight .bp { color: #3465A4 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000 } /* Name.Function.Magic */
+.highlight .vc { color: #000 } /* Name.Variable.Class */
+.highlight .vg { color: #000 } /* Name.Variable.Global */
+.highlight .vi { color: #000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000 } /* Name.Variable.Magic */
+.highlight .il { color: #900 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff -Nru survex-1.4.17/doc/manual/_static/searchtools.js survex-1.4.22/doc/manual/_static/searchtools.js
--- survex-1.4.17/doc/manual/_static/searchtools.js 2025-01-31 10:28:15.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/searchtools.js 2026-05-25 15:19:00.000000000 +0000
@@ -41,11 +41,12 @@
}
// Global search result kind enum, used by themes to style search results.
+// prettier-ignore
class SearchResultKind {
- static get index() { return "index"; }
- static get object() { return "object"; }
- static get text() { return "text"; }
- static get title() { return "title"; }
+ static get index() { return "index"; }
+ static get object() { return "object"; }
+ static get text() { return "text"; }
+ static get title() { return "title"; }
}
const _removeChildren = (element) => {
@@ -58,6 +59,15 @@
const _escapeRegExp = (string) =>
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+const _escapeHTML = (text) => {
+ return text
+ .replaceAll("&", "&")
+ .replaceAll("<", "<")
+ .replaceAll(">", ">")
+ .replaceAll('"', """)
+ .replaceAll("'", "'");
+};
+
const _displayItem = (item, searchTerms, highlightTerms) => {
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
@@ -90,25 +100,30 @@
let linkEl = listItem.appendChild(document.createElement("a"));
linkEl.href = linkUrl + anchor;
linkEl.dataset.score = score;
- linkEl.innerHTML = title;
+ linkEl.innerHTML = _escapeHTML(title);
if (descr) {
listItem.appendChild(document.createElement("span")).innerHTML =
- " (" + descr + ")";
+ ` (${_escapeHTML(descr)})`;
// highlight search terms in the description
- if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
- highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
- }
- else if (showSearchSummary)
+ if (SPHINX_HIGHLIGHT_ENABLED)
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ highlightTerms.forEach((term) =>
+ _highlightText(listItem, term, "highlighted"),
+ );
+ } else if (showSearchSummary)
fetch(requestUrl)
.then((responseData) => responseData.text())
.then((data) => {
if (data)
listItem.appendChild(
- Search.makeSearchSummary(data, searchTerms, anchor)
+ Search.makeSearchSummary(data, searchTerms, anchor),
);
// highlight search terms in the summary
- if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
- highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
+ if (SPHINX_HIGHLIGHT_ENABLED)
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ highlightTerms.forEach((term) =>
+ _highlightText(listItem, term, "highlighted"),
+ );
});
Search.output.appendChild(listItem);
};
@@ -117,14 +132,14 @@
Search.title.innerText = _("Search Results");
if (!resultCount)
Search.status.innerText = Documentation.gettext(
- "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
+ "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.",
);
else
Search.status.innerText = Documentation.ngettext(
"Search finished, found one page matching the search query.",
"Search finished, found ${resultCount} pages matching the search query.",
resultCount,
- ).replace('${resultCount}', resultCount);
+ ).replace("${resultCount}", resultCount);
};
const _displayNextItem = (
results,
@@ -138,7 +153,7 @@
_displayItem(results.pop(), searchTerms, highlightTerms);
setTimeout(
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
- 5
+ 5,
);
}
// search finished, update title and status message
@@ -170,9 +185,10 @@
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
*/
if (typeof splitQuery === "undefined") {
- var splitQuery = (query) => query
+ var splitQuery = (query) =>
+ query
.split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
- .filter(term => term) // remove remaining empty strings
+ .filter((term) => term); // remove remaining empty strings
}
/**
@@ -184,16 +200,23 @@
_pulse_status: -1,
htmlToText: (htmlString, anchor) => {
- const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
+ const htmlElement = new DOMParser().parseFromString(
+ htmlString,
+ "text/html",
+ );
for (const removalQuery of [".headerlink", "script", "style"]) {
- htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
+ htmlElement.querySelectorAll(removalQuery).forEach((el) => {
+ el.remove();
+ });
}
if (anchor) {
- const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
+ const anchorContent = htmlElement.querySelector(
+ `[role="main"] ${anchor}`,
+ );
if (anchorContent) return anchorContent.textContent;
console.warn(
- `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
+ `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`,
);
}
@@ -202,7 +225,7 @@
if (docContent) return docContent.textContent;
console.warn(
- "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
+ "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.",
);
return "";
},
@@ -287,12 +310,8 @@
const queryTermLower = queryTerm.toLowerCase();
// maybe skip this "word"
- // stopwords array is from language_data.js
- if (
- stopwords.indexOf(queryTermLower) !== -1 ||
- queryTerm.match(/^\d+$/)
- )
- return;
+ // stopwords set is from language_data.js
+ if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return;
// stem the word
let word = stemmer.stemWord(queryTermLower);
@@ -304,8 +323,12 @@
}
});
- if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
- localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
+ if (SPHINX_HIGHLIGHT_ENABLED) {
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ localStorage.setItem(
+ "sphinx_highlight_terms",
+ [...highlightTerms].join(" "),
+ );
}
// console.debug("SEARCH: searching for:");
@@ -318,7 +341,13 @@
/**
* execute search (requires search index to be loaded)
*/
- _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
+ _performSearch: (
+ query,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ ) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
@@ -334,10 +363,15 @@
const queryLower = query.toLowerCase().trim();
for (const [title, foundTitles] of Object.entries(allTitles)) {
- if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
+ if (
+ title.toLowerCase().trim().includes(queryLower)
+ && queryLower.length >= title.length / 2
+ ) {
for (const [file, id] of foundTitles) {
- const score = Math.round(Scorer.title * queryLower.length / title.length);
- const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
+ const score = Math.round(
+ (Scorer.title * queryLower.length) / title.length,
+ );
+ const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
normalResults.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
@@ -353,9 +387,9 @@
// search for explicit entries in index directives
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
- if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
+ if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) {
for (const [file, id, isMain] of foundEntries) {
- const score = Math.round(100 * queryLower.length / entry.length);
+ const score = Math.round((100 * queryLower.length) / entry.length);
const result = [
docNames[file],
titles[file],
@@ -376,11 +410,13 @@
// lookup as object
objectTerms.forEach((term) =>
- normalResults.push(...Search.performObjectSearch(term, objectTerms))
+ normalResults.push(...Search.performObjectSearch(term, objectTerms)),
);
// lookup as search terms in fulltext
- normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
+ normalResults.push(
+ ...Search.performTermsSearch(searchTerms, excludedTerms),
+ );
// let the scorer override scores with a custom scoring function
if (Scorer.score) {
@@ -401,7 +437,11 @@
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
let seen = new Set();
results = results.reverse().reduce((acc, result) => {
- let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
+ let resultStr = result
+ .slice(0, 4)
+ .concat([result[5]])
+ .map((v) => String(v))
+ .join(",");
if (!seen.has(resultStr)) {
acc.push(result);
seen.add(resultStr);
@@ -413,8 +453,20 @@
},
query: (query) => {
- const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
- const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
+ const [
+ searchQuery,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ ] = Search._parseQuery(query);
+ const results = Search._performSearch(
+ searchQuery,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ );
// for debugging
//Search.lastresults = results.slice(); // a copy
@@ -437,7 +489,7 @@
const results = [];
const objectSearchCallback = (prefix, match) => {
- const name = match[4]
+ const name = match[4];
const fullname = (prefix ? prefix + "." : "") + name;
const fullnameLower = fullname.toLowerCase();
if (fullnameLower.indexOf(object) < 0) return;
@@ -489,9 +541,7 @@
]);
};
Object.keys(objects).forEach((prefix) =>
- objects[prefix].forEach((array) =>
- objectSearchCallback(prefix, array)
- )
+ objects[prefix].forEach((array) => objectSearchCallback(prefix, array)),
);
return results;
},
@@ -513,9 +563,17 @@
// perform the search on the required terms
searchTerms.forEach((word) => {
const files = [];
+ // find documents, if any, containing the query word in their text/title term indices
+ // use Object.hasOwnProperty to avoid mismatching against prototype properties
const arr = [
- { files: terms[word], score: Scorer.term },
- { files: titleTerms[word], score: Scorer.title },
+ {
+ files: terms.hasOwnProperty(word) ? terms[word] : undefined,
+ score: Scorer.term,
+ },
+ {
+ files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined,
+ score: Scorer.title,
+ },
];
// add support for partial matches
if (word.length > 2) {
@@ -547,15 +605,17 @@
// set score for the word in each file
recordFiles.forEach((file) => {
- if (!scoreMap.has(file)) scoreMap.set(file, {});
- scoreMap.get(file)[word] = record.score;
+ if (!scoreMap.has(file)) scoreMap.set(file, new Map());
+ const fileScores = scoreMap.get(file);
+ fileScores.set(word, record.score);
});
});
// create the mapping
files.forEach((file) => {
if (!fileMap.has(file)) fileMap.set(file, [word]);
- else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
+ else if (fileMap.get(file).indexOf(word) === -1)
+ fileMap.get(file).push(word);
});
});
@@ -566,11 +626,11 @@
// as search terms with length < 3 are discarded
const filteredTermCount = [...searchTerms].filter(
- (term) => term.length > 2
+ (term) => term.length > 2,
).length;
if (
- wordList.length !== searchTerms.size &&
- wordList.length !== filteredTermCount
+ wordList.length !== searchTerms.size
+ && wordList.length !== filteredTermCount
)
continue;
@@ -578,16 +638,16 @@
if (
[...excludedTerms].some(
(term) =>
- terms[term] === file ||
- titleTerms[term] === file ||
- (terms[term] || []).includes(file) ||
- (titleTerms[term] || []).includes(file)
+ terms[term] === file
+ || titleTerms[term] === file
+ || (terms[term] || []).includes(file)
+ || (titleTerms[term] || []).includes(file),
)
)
break;
// select one (max) score for the file.
- const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
+ const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
// add result to the result list
results.push([
docNames[file],
@@ -623,7 +683,8 @@
let summary = document.createElement("p");
summary.classList.add("context");
- summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
+ summary.textContent =
+ top + text.substr(startWithContext, 240).trim() + tail;
return summary;
},
diff -Nru survex-1.4.17/doc/manual/_static/sphinx_highlight.js survex-1.4.22/doc/manual/_static/sphinx_highlight.js
--- survex-1.4.17/doc/manual/_static/sphinx_highlight.js 2025-01-31 10:28:15.000000000 +0000
+++ survex-1.4.22/doc/manual/_static/sphinx_highlight.js 2026-05-25 15:19:00.000000000 +0000
@@ -1,7 +1,7 @@
/* Highlighting utilities for Sphinx HTML documentation. */
"use strict";
-const SPHINX_HIGHLIGHT_ENABLED = true
+const SPHINX_HIGHLIGHT_ENABLED = true;
/**
* highlight a given string on a node by wrapping it in
@@ -13,9 +13,9 @@
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
- pos >= 0 &&
- !parent.classList.contains(className) &&
- !parent.classList.contains("nohighlight")
+ pos >= 0
+ && !parent.classList.contains(className)
+ && !parent.classList.contains("nohighlight")
) {
let span;
@@ -30,13 +30,7 @@
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
- parent.insertBefore(
- span,
- parent.insertBefore(
- rest,
- node.nextSibling
- )
- );
+ parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling));
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
@@ -46,7 +40,7 @@
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
- "rect"
+ "rect",
);
const bbox = parent.getBBox();
rect.x.baseVal.value = bbox.x;
@@ -65,7 +59,7 @@
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
- obj.parent.insertAdjacentElement("beforebegin", obj.target)
+ obj.parent.insertAdjacentElement("beforebegin", obj.target),
);
};
@@ -73,25 +67,31 @@
* Small JavaScript module for the documentation.
*/
const SphinxHighlight = {
-
/**
* highlight the search words provided in localstorage in the text
*/
highlightSearchWords: () => {
- if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
+ if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
// get and clear terms from localstorage
const url = new URL(window.location);
const highlight =
- localStorage.getItem("sphinx_highlight_terms")
- || url.searchParams.get("highlight")
- || "";
- localStorage.removeItem("sphinx_highlight_terms")
- url.searchParams.delete("highlight");
- window.history.replaceState({}, "", url);
+ localStorage.getItem("sphinx_highlight_terms")
+ || url.searchParams.get("highlight")
+ || "";
+ localStorage.removeItem("sphinx_highlight_terms");
+ // Update history only if '?highlight' is present; otherwise it
+ // clears text fragments (not set in window.location by the browser)
+ if (url.searchParams.has("highlight")) {
+ url.searchParams.delete("highlight");
+ window.history.replaceState({}, "", url);
+ }
// get individual terms from highlight string
- const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
+ const terms = highlight
+ .toLowerCase()
+ .split(/\s+/)
+ .filter((x) => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
@@ -107,11 +107,11 @@
document
.createRange()
.createContextualFragment(
- '' +
- '' +
- _("Hide Search Matches") +
- "
"
- )
+ ''
+ + ''
+ + _("Hide Search Matches")
+ + "
",
+ ),
);
},
@@ -125,7 +125,7 @@
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
- localStorage.removeItem("sphinx_highlight_terms")
+ localStorage.removeItem("sphinx_highlight_terms");
},
initEscapeListener: () => {
@@ -134,10 +134,15 @@
document.addEventListener("keydown", (event) => {
// bail for input elements
- if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
+ return;
// bail with special keys
- if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
- if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
+ if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
+ return;
+ if (
+ DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+ && event.key === "Escape"
+ ) {
SphinxHighlight.hideSearchWords();
event.preventDefault();
}
diff -Nru survex-1.4.17/doc/manual/aven.htm survex-1.4.22/doc/manual/aven.htm
--- survex-1.4.17/doc/manual/aven.htm 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/aven.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- aven — Survex 1.4.17 documentation
-
-
-
-
-
+ aven — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -107,11 +108,12 @@
Delete is useful if you get lost! It resets the scale, position, and
rotation speed, so that the cave returns to the centre of the screen. There
are also keyboard controls to use
-P and L select Plan and eLevation respectively. Changing between plan
-to elevation is animated to help you see where you are and how things relate.
-This animation is automatically disabled on slow machines to avoid user
-frustration. You can force skipping the animation by pressing the key again
-during it, so a double press will always take you there quickly.
+P and L select Plan and eLevation respectively, while N , S ,
+E and W select a view looking North, South, East and West respectively.
+The change of view is animated to help you see where you are and how things
+relate. This animation is automatically disabled on slow machines to avoid
+user frustration. You can force skipping the animation by pressing the key
+again during it, so a double press will always take you there quickly.
Space toggles on and off automatic rotation about a vertical axis through
the current centre point (which is moved by panning the view or by selecting
a station or survey). R toggles the direction of auto-rotation. The speed
@@ -163,7 +165,16 @@
-
Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -212,8 +213,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/cavern.htm survex-1.4.22/doc/manual/cavern.htm
--- survex-1.4.17/doc/manual/cavern.htm 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/cavern.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- cavern — Survex 1.4.17 documentation
-
-
-
-
-
+ cavern — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -60,8 +61,9 @@
-o , --output= OUTPUT Sets location for output files.
--q , --quiet Only show a brief summary (--quiet --quiet or -qq will display
-warnings and errors only).
+-q , --quiet Suppresses the messages indicating the current stage of processing.
+Repeating this option (--quiet --quiet or -qq ) this also suppresses
+reporting the number of stations, legs, loops, and length totals.
-s , --no-auxiliary-files do not create .err file.
@@ -220,7 +222,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -269,8 +270,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/cmap.htm survex-1.4.22/doc/manual/cmap.htm
--- survex-1.4.17/doc/manual/cmap.htm 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/cmap.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Bob Thrun’s CMAP — Survex 1.4.17 documentation
-
-
-
-
-
+ Bob Thrun’s CMAP — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -95,7 +96,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -146,8 +146,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/cmdline.htm survex-1.4.22/doc/manual/cmdline.htm
--- survex-1.4.17/doc/manual/cmdline.htm 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/cmdline.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Survex Programs — Survex 1.4.17 documentation
-
-
-
-
-
+ Survex Programs — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -58,11 +59,11 @@
Short and Long Options
-Options have two forms: short (a dash followed by a single letter e.g. cavern
--q ) and long (two dashes followed by one or more words e.g. cavern
+Options can have two forms: short (a dash followed by a single letter e.g.
+cavern -q ) and long (two dashes followed by one or more words e.g. cavern
--quiet ). The long form is generally easier to remember, while the short
form is quicker to type. Options are often available in both forms, but more
-obscure or potentially dangerous options may only have a long form.
+obscure or potentially destructive options may only have a long form.
Note
Command line options are case sensitive, so -B and -b
@@ -163,11 +164,12 @@
Delete is useful if you get lost! It resets the scale, position, and
rotation speed, so that the cave returns to the centre of the screen. There
are also keyboard controls to use
-
P and L select Plan and eLevation respectively. Changing between plan
-to elevation is animated to help you see where you are and how things relate.
-This animation is automatically disabled on slow machines to avoid user
-frustration. You can force skipping the animation by pressing the key again
-during it, so a double press will always take you there quickly.
+
P and L select Plan and eLevation respectively, while N , S ,
+E and W select a view looking North, South, East and West respectively.
+The change of view is animated to help you see where you are and how things
+relate. This animation is automatically disabled on slow machines to avoid
+user frustration. You can force skipping the animation by pressing the key
+again during it, so a double press will always take you there quickly.
Space toggles on and off automatic rotation about a vertical axis through
the current centre point (which is moved by panning the view or by selecting
a station or survey). R toggles the direction of auto-rotation. The speed
@@ -232,8 +234,9 @@
-o , --output= OUTPUT Sets location for output files.
--q , --quiet Only show a brief summary (--quiet --quiet or -qq will display
-warnings and errors only).
+-q , --quiet Suppresses the messages indicating the current stage of processing.
+Repeating this option (--quiet --quiet or -qq ) this also suppresses
+reporting the number of stations, legs, loops, and length totals.
-s , --no-auxiliary-files do not create .err file.
@@ -705,7 +708,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -771,8 +773,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/compass.htm survex-1.4.22/doc/manual/compass.htm
--- survex-1.4.17/doc/manual/compass.htm 2025-03-20 00:17:13.000000000 +0000
+++ survex-1.4.22/doc/manual/compass.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Larry Fish’s Compass — Survex 1.4.17 documentation
-
-
-
-
-
+ Larry Fish’s Compass — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -36,9 +37,11 @@
Larry Fish’s Compass
Survex can read Compass survey data - it supports survey data files
and project files (.DAT and .MAK files ), closed data files (.CLP ),
-and processed survey data (.PLT and .PLF files). Survex 1.4.6 made
-significant improvements to this support so we recommend using this
-version or newer if you’re working with Compass data.
+and processed survey data (.PLT and .PLF files). Survex 1.0.19 was
+the first to support this but we currently recommend using 1.4.6 or newer if
+you’re working with Compass data as this version made significant improvements
+to this support. If you’re using Compass .MAK files, then Survex 1.4.18
+further improved parsing these.
Compass .MAK support
A Compass .MAK file defines a survey project to process, and
@@ -48,23 +51,29 @@
Survex understands most MAK file features. Known current
limitations and assumptions:
-Survex handles the UTM zone and datum provided the combination
-can be expressed as an EPSG code (lack of any EPSG codes for a
-datum suggests it’s obsolete; lack of a code for a particular
-datum+zone combination suggests the zone is outside of the
-defined area of use of the datum). Example Compass files we’ve
-seen use “North American 1927” outside of where it’s defined
-for use, presumably because some users fail to change the datum
-from Compass’ default. To enable reading such files we return a
-PROJ4 string of the form “+proj=utm …” for “North American
-1927” and “North American 1983” for UTM zones which don’t have
-an EPSG code. Please let us know if support for additional
-cases which aren’t currently supported would be useful to you.
+Survex handles any UTM zone and datum specified in the MAK file so
+long as the combination can be expressed as an EPSG code. If there
+aren’t any EPSG codes for a datum that suggests it’s obsolete; lack of
+a code for a particular datum+zone combination suggests the zone is
+outside of the defined area of use of the datum.
+Some additional cases are also supported. Example Compass files we’ve
+seen use “North American 1927” outside of its defined area of use,
+presumably because some users fail to change the datum from Compass’
+default. To enable reading such files, if the datum is “North
+American 1927” or “North American 1983” and there isn’t an EPSG code
+for the specified UTM zone in that datum, we generate a PROJ4 string
+of the form “+proj=utm …”. Please let us know if support for
+additional cases which aren’t currently supported would be useful to
+you.
+
The @ command which specifies a base location to calculate
magnetic declinations at is handled, provided the datum and UTM
zone are supported (see previous bullet point). The UTM
convergence angle specified as part of this command is ignored
-as Survex knows how to calculate it.
+as Survex knows how to calculate grid convergence.
+The % and * commands specify the UTM convergence angle
+(file-level and non-file-level respectively) and are ignored
+as Survex knows how to calculate grid convergence.
Link stations are ignored. These have two uses in Compass. They
were a way to allow processing large surveys on computers from
last century which had limited memory. Survex can easily handle
@@ -100,16 +109,25 @@
Note that the .svx version is able to more precisely represent
what’s actually required here - in the MAK version “you must
-carry A16 into FILE2 even though FILE2 doesn’t need it for its
-own processing”. If you want the exact analog of the MAK
-version you can change the A16 equate to:
+carry A16 into FILE2 so you can then carry it into FILE3
+even though FILE2 doesn’t need it for its own processing”. If you want
+the exact analog of the MAK version you can change the A16 equate to:
*equate file1.A16 file2.A16 file3.A16
-The following commands (and any other unknown commands) are
-currently ignored: % (Convergence angle (file-level)), *
-(Convergence angle (non file-level)), ! (Project parameters)
+The ! command specifies project parameters, which are currently
+ignored.
+Compass seems to quietly ignore unknown commands, but Survex will issue a
+warning (since Survex 1.4.18 - older versions quietly ignored them).
+This warning will help identify any bugs in Survex’s parsing of MAK files,
+and any new or undocumented MAK file commands which we don’t support.
+It can also help detect typos in data entry.
+.MAK files can contain comments, which last from a / to the
+next / or end of the line. Survex 1.4.18 added support for these
+(older Survex versions quietly ignored the / characters as unknown, but
+that meant they would still interpret any commented out .MAK file
+commands).
@@ -180,7 +198,7 @@
surface data, and shots flagged P “[do] not support passage
modeling”. Even if it’s actually being used for a different
purpose, Survex programs don’t show surface legs by default so
-the end effect is at least to not plot as intended.
+the end effect is at least to not plot, which is what’s intended.
Shot flag S is mapped to Survex’s “splay” leg flag.
Surveys which indicate a depth gauge was used for azimuth
readings are marked as STYLE_DIVING in the .3d file.
@@ -244,9 +262,9 @@
is for surface data, and shots flagged P “[do] not support
passage modeling”. Even if it’s actually being used for a
different purpose, Survex programs don’t show surface legs by
-default so the end effect is at least to not plot as intended.
-Stations are flagged as surface and/or underground based on
-whether they are at the ends of legs flagged surface or
+default so the end effect is at least to not plot, which is what’s
+intended. Stations are flagged as surface and/or underground based
+on whether they are at the ends of legs flagged surface or
non-surface (a station at the boundary can be flagged as both).
Shot flag S is mapped to Survex’s “splay” leg flag. A station
at the far end of a shot flagged S gets the “station on wall”
@@ -278,26 +296,47 @@
This export was originally added to allow importing data from Survex into
Carto. The principal author of Carto has sadly died and it seems Carto is no
longer actively developed, but we’ve left this support in place in case it is
-useful - the generated files can be used with Compass itself for example,
-though they are currently rather crudely structured. Here are some notes on
-this support:
-
Survex’s “duplicate” leg flag is mapped to Compass shot flag L . Since
Survex 1.4.10.
-The Datum and UTM zone information is not currently set in exported PLT
-files.
+The Datum and UTM zone information is set if the Survex data has a coordinate
+system set which is expressed as an EPSG:nnnn code which corresponds to
+a UTM zone in a datum supported by Compass, or a PROJ4 string which matches
+those which Survex generates when processing Compass and Walls data which
+specifies a NAD27 or NAD83 UTM zone which doesn’t have an EPSG code. Since
+Survex 1.4.18.
@@ -332,7 +375,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -393,8 +435,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/datafile.htm survex-1.4.22/doc/manual/datafile.htm
--- survex-1.4.17/doc/manual/datafile.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/datafile.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Survex data files — Survex 1.4.17 documentation
-
-
-
-
-
+ Survex data files — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -42,8 +43,8 @@
each line is fully specifiable. So you can enter your data much as it appears
on the survey notes, which is important in reducing the opportunities for
transcription errors.
-Also all the special characters are user-definable - for example, the
-separators can be spaces and tabs, or commas (e.g. when exporting from a
+
Also all the special characters are user-definable - for example, data items
+can be separated by spaces and tabs, or commas (e.g. when exporting from a
spreadsheet), etc; the decimal point can changed to be a comma (as used in
continental Europe), or a slash (sometimes used for clarity in written survey
notes), or anything else you care to choose. This flexibility means that it
@@ -321,52 +322,52 @@
-LENGTH
-TAPE
+LENGTH
+TAPE
-BEARING
-COMPASS
+BEARING
+COMPASS
-GRADIENT
-CLINO
+GRADIENT
+CLINO
-BACKLENGTH
-BACKTAPE
+BACKLENGTH
+BACKTAPE
-BACKBEARING
-BACKCOMPASS
+BACKBEARING
+BACKCOMPASS
-BACKGRADIENT
-BACKCLINO
+BACKGRADIENT
+BACKCLINO
-COUNT
-COUNTER
+COUNT
+COUNTER
-LEFT
+LEFT
-RIGHT
+RIGHT
-UP
-CEILING
+UP
+CEILING
-DOWN
-FLOOR
+DOWN
+FLOOR
-DEPTH
+DEPTH
-EASTING
-DX
+EASTING
+DX
-NORTHING
-DY
+NORTHING
+DY
-ALTITUDE
-DZ
+ALTITUDE
+DZ
-DECLINATION
+DECLINATION
@@ -607,7 +608,7 @@
Example *data normal from to compass tape clino
- *data normal station ignoreall newline compass tape clino
+ *data normal station noteall newline compass tape clino
@@ -817,8 +818,8 @@
tubes, and hence separate sections of passage data, starting with a
new *data command with no arguments.
Simple example of how to use this data style (note the use of
-ignoreall to allow a free-form text description to be given):
- *data passage station left right up down ignoreall
+noteall to allow a free-form text description to be given):
+ *data passage station left right up down noteall
1 0.1 2.3 8.0 1.4 Sticking out point on left wall
2 0.0 1.9 9.0 0.5 Point on left wall
3 1.0 0.7 9.0 0.8 Highest point of boulder
@@ -830,7 +831,7 @@
*data passage line to start a new tube, but in Survex 1.2.31 and
later, you can just use *data without any arguments.
For example here the main passage is 1-2-3 and a side passage is 2-4:
- *data passage station left right up down ignoreall
+ *data passage station left right up down noteall
1 0.1 2.3 8.0 1.4 Sticking out point on left wall
2 0.0 1.9 9.0 0.5 Point on left wall opposite side passage
3 1.0 0.7 9.0 0.8 Highest point of boulder
@@ -842,15 +843,51 @@
4 0.0 0.5 6.5 1.5 Fossil on left wall
+Survex 1.4.22 and later allow any (or even all) of the dimensions to
+be omitted from the passage data style, which is equivalent to
+omitting that dimension from each station. For example, in a maze
+cave you might use splays to locate the walls and only record up and
+down dimensions at each station:
+ *data passage station up down
+a 0.7 1.4
+b 1.2 1.0
+
+
+Omitting all dimensions allows using this style to record a
+description of each survey station:
+ *data passage station noteall
+1 Sticking out point on left wall
+2 Point on left wall opposite side passage
+3 Highest point of boulder
+
+
-IGNORE skips a field (it may be used any number of times), and
-IGNOREALL may be used last to ignore the rest of the data line.
LENGTH is a synonym for TAPE ; BEARING for COMPASS ;
GRADIENT for CLINO ; COUNT for COUNTER .
The units of each quantity may be set with the *units command.
+IGNORE skips a field (it may be used any number of times), and
+IGNOREALL may be used last to ignore the rest of the data line.
+Survex 1.4.22 added support for NOTE and NOTEALL readings.
+NOTE accepts a double-quoted string which describes the station
+(the value doesn’t need to be quoted if it is a single word). An omit
+character (- by default) can be use to indicate there’s no note, which
+has the same effect as an empty string ("" ); if you actually want to
+specify a note that’s exactly - then use quotes, i.e. "-" ).
+NOTEALL is an alternative to NOTE , which instead takes the rest of
+the line as the text describing the station. Leading and trailing blanks
+are not included in the note text. At most one NOTE or NOTEALL
+can be used in a specified style.
+Since the note describes a station, it can be use when STATION can be
+(so you can’t put station notes in non-interleaved data, because it’s not
+clear whether the note is for FROM or TO ).
+Current the notes in NOTE and NOTEALL aren’t processed further, but
+the intention is a future version will carry them through so they can be
+seen in Aven, etc. So currently NOTEALL and IGNOREALL both actually
+ignore the rest of the line - use NOTEALL when the text describes the
+station and IGNOREALL in other situations.
See Also *units
@@ -1044,7 +1081,7 @@
This is “approximate” because it’s only computed for the North-most,
South-most, East-most and West-most stations and it’s possible the actual
-minimum or maximum not at one of these. It’s unlikely to be much outside
+minimum or maximum is not at one of these. It’s unlikely to be much outside
the reported range though.
We don’t (currently) attempt to report a similar range for declination
values (it’s harder to do because declination also varies by date).
@@ -1061,8 +1098,8 @@
*default units
Description *default restores defaults for given settings. This command is
-deprecated - you should instead use: *calibrate default , *data
-default , *units default .
+deprecated since Survex 0.92 - you should instead use: *calibrate
+default , *data default , *units default .
See Also *calibrate , *data , *units
@@ -1179,7 +1216,9 @@
By default cavern will warn about stations which have been *fix -ed but
are not used otherwise, as this might be due to a typo in the station name.
Uses in survey data and (since 1.4.9) *entrance count for these
-purposes. This warning is unhelpful if you want to include a standard file
+purposes. (From 1.4.9 to 1.4.20, *entrance had to come after *fix
+to suppress the warning; since 1.4.21 it can come before or after.)
+
This warning is unhelpful if you want to include a standard file
of benchmarks, some of which won’t be used. In this sort of situation,
specify reference after the station name in the *fix command to
suppress this warning for a particular station. It’s OK to use
@@ -1267,35 +1306,82 @@
*infer exports off
Description *infer plumbs on tells cavern to interpret gradients of ±90 degrees
-as UP/DOWN (so it will not apply the clino correction to them). This is
-useful when you have data which uses this convention for plumbed legs.
+(or ±100 grads, etc) as UP/DOWN, so it will not apply the clino correction
+to them. This is useful when you have data which uses this convention for
+plumbed legs.
*infer equates on tells cavern to interpret a leg with a tape reading of
zero as a *equate which this prevents tape corrections being applied to
them. This is useful when you have data which uses this convention for
equating stations.
-*infer exports on is necessary when you have a dataset which is partly
-annotated with *export . It tells cavern not to complain about missing
-*export commands in the parts of the dataset it is enabled for. Also
-stations which were used to join surveys are marked as exported in the 3d
-file.
+*infer exports on relaxes the requirement that a station must be
+*export -ed to be able to refer to it from outside the survey it is in.
+When active, such stations are treated as if they were marked with *export
+(including being flagged as “exported” in the .3d file). For compatibility
+with datasets from before *export was added, a dataset which never uses
+*export is processed as if it used *infer exports on . It can be
+useful to be able to turn it on explicitly for part of a dataset, for
+example it allows combining a dataset which doesn’t used *export with
+one which does, and it supports a phased conversion of a dataset to using
+*export . You might also decide to use it if having to mark survey
+stations as exported doesn’t seem worth the benefit of catching mis-ties -
+for example, if you’re surveying a maze cave where a lot of stations are
+junctions.
INSTRUMENT
-Syntax *instrument <instrument> <identifier>
+Syntax *instrument <type>... <identifier>
-Example *instrument compass "CUCC 2"
-*instrument clino "CUCC 2"
-*instrument tape "CUCC Fisco Ranger open reel"
+Example *instrument Compass #949847
+ *instrument Clino #240641
+ *instrument Tape CUCC#4
+
+::
+ *instrument compass clino "CUCC Suunto Set #2"
+ *instrument tape "CUCC Fisco Ranger open reel"
+
+::
+ *instrument compass clino "Blue SAP #4"
+ *instrument tape "Bosch EDM"
+
+::
+ *instrument insts "DistoX2 #1234"
+ *instrument notes "TopoDroid v 3.1.4"
Validity valid at the start of a *begin /*end block.
Description *instrument specifies the particular instruments used to perform a
-survey.
+survey. It is useful to record these in case you later discover an
+instrument is miscalibrated or faulty so you know which surveys are
+affected. Then you can either apply a correction (via *calibrate ) or if
+necessary go and resurvey.
+<identifier> should include enough information to uniquely identify a
+particular instrument. It’s usually in double quotes, but the quotes can be
+omitted if it’s a single word (strictly speaking, if it does not contain any
+of the characters set as BLANK which are space, tab and comma by
+default). In the unlikely event of it being a single word which is a
+valid instrument type, you’ll also need to put double quotes around it.
+The syntax of *instrument commands has been defined for a very long
+time, but prior to Survex 1.4.19 there weren’t any checks of the syntax.
+Essentially *instrument used to be treated like a named comment line.
+Survex 1.4.19 implemented format checking, and also extended the documented
+format to allow multiple instrument types (to match Therion’s implementation).
+You’ll get a warning for an empty *instrument or if you open but fail to
+close double quotes around the instrument identifier.
+<type> is now checked against an allowed list (the same list as
+<role> in *team so see the *team documentation for the list of
+valid instrument types; some team roles such as assistant don’t really
+make sense as instrument types, but we’ve chosen to follow Therion’s lead
+here for the benefit of people using both). You’ll get a warning if a type
+is not recognised.
+These diagnostic messages were made warnings to avoid breaking processing
+of existing datasets which might contain *instrument lines which don’t
+conform with the defined syntax, or with this newly adopted list of
+instrument types.
See Also *begin , *date , *team
@@ -1312,7 +1398,8 @@
Description *prefix sets the current survey.
-
Caveats *prefix is deprecated - you should use *begin and *end instead.
+Caveats *prefix is deprecated since Survex 0.92 - you should use *begin and
+*end instead.
See Also *begin , *end
@@ -1457,7 +1544,9 @@
The characters specified in <character list> may not be alphanumeric
since these characters are used for station names and for readings.
In <character list> , x followed by two hex digits means the
-character with that hex value, e.g. x20 is a space.
+character with that hex value, e.g.
x20 is a space. The handling of
+hex digits
a to
f was buggy in older versions, but was fixed in
+Survex 1.4.18.
The complete list of items that can be set, the defaults (in brackets), and
the meaning of the item, is:
@@ -1467,7 +1556,8 @@
DECIMAL (. ) Decimal point character
-EOL (x0Ax0D ) End of line character
+EOL (x0Ax0Dx1A ) End of line character (includes x1A to allow reading older DOS
+text files which use Ctrl-Z as an end of file marker).
KEYWORD (* ) Introduces keywords
@@ -1480,7 +1570,8 @@
PLUS (+ ) Indicates positive number
-ROOT (\ ) Prefix in force at start of current file (use of ROOT is deprecated)
+ROOT (\ ) Prefix in force at start of current file (use of ROOT is deprecated
+since Survex 0.97)
SEPARATOR (. ) Level separator in prefix hierarchy
@@ -1553,99 +1644,108 @@
-tape
-length
+tape
+length
Measured leg lengths
-compass
-bearing
+compass
+bearing
Measured bearings
-clino
-gradient
+clino
+gradient
Measured vertical angles
-backtape
-backlength
+backtape
+backlength
Like tape but for backsights
-backcompass
-backbearing
+backcompass
+backbearing
Like compass but for backsights
-backclino
-backgradient
+backclino
+backgradient
Like clino but for backsights
-instruments
-insts
-All instruments: both compass and clino; use
-for all-in-one instruments such as Disto-X.
+instruments
+insts
+All instruments: both compass and clino;
+use for all-in-one instruments such as
+Disto-X.
-counter
-count
+counter
+count
Topofil length measurements
-depth
+depth
-Measured differences in height between stations,
-e.g. underwater with a diver’s depth gauge, or
-above water with a manometer
+Measured differences in height between
+stations, e.g. underwater with a diver’s
+depth gauge, or above water with a
+manometer
-station
+station
Added markers at stations
-position
-
-Recorded absolute positions of stations (e.g.
-fixed surface stations with a GPS)
+position
+gps
+Recorded absolute positions of stations
+(e.g. fixed surface stations with a
+GPS)
-notes
-notebook
+notes
+notebook
Recorded instrument readings
-pictures
-pics
+pictures
+pics
Drew sketches
-assistant
-dog
+assistant
+dog
General helper (e.g. held the end of the
tape on stations)
-altitude
-dz
-Recorded the altitudes of stations (e.g. with an
-altimeter)
+altitude
+dz
+Recorded the altitudes of stations (e.g.
+with an altimeter)
-dimensions
+dimensions
Measured all passage dimensions
-left
+left
Measured left passage dimension
-right
+right
Measured right passage dimension
-up
-ceiling
+up
+ceiling
Measured up passage dimension
-down
-floor
+down
+floor
Measured down passage dimension
-explorer
+explorer
Explored the area of cave being surveyed
+
See Also *begin , *date , *instrument
@@ -1821,7 +1921,16 @@
-
Navigation
+
+
+
+
+
+
+
Navigation
-
- Quick search
-
-
-
-
-
@@ -1914,8 +2013,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/diffpos.htm survex-1.4.22/doc/manual/diffpos.htm
--- survex-1.4.17/doc/manual/diffpos.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/diffpos.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- diffpos — Survex 1.4.17 documentation
-
-
-
-
-
+ diffpos — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -76,7 +77,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -125,8 +125,8 @@
©1998-2025.
|
- Powered by
Sphinx 8.1.3
- &
Alabaster 0.7.16
+ Powered by
Sphinx 9.1.0
+ &
Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/dump3d.htm survex-1.4.22/doc/manual/dump3d.htm
--- survex-1.4.17/doc/manual/dump3d.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/dump3d.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- dump3d — Survex 1.4.17 documentation
-
-
-
-
-
+ dump3d — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -96,7 +97,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -145,8 +145,8 @@
©1998-2025.
|
- Powered by
Sphinx 8.1.3
- &
Alabaster 0.7.16
+ Powered by
Sphinx 9.1.0
+ &
Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/extend.htm survex-1.4.22/doc/manual/extend.htm
--- survex-1.4.17/doc/manual/extend.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/extend.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- extend — Survex 1.4.17 documentation
-
-
-
-
-
+ extend — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -113,7 +114,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -162,8 +162,8 @@
©1998-2025.
|
- Powered by
Sphinx 8.1.3
- &
Alabaster 0.7.16
+ Powered by
Sphinx 9.1.0
+ &
Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/future.htm survex-1.4.22/doc/manual/future.htm
--- survex-1.4.17/doc/manual/future.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/future.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Future Developments — Survex 1.4.17 documentation
-
-
-
-
-
+ Future Developments — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -59,7 +60,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -109,8 +109,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/genhowto.htm survex-1.4.22/doc/manual/genhowto.htm
--- survex-1.4.17/doc/manual/genhowto.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/genhowto.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- General: How do I? — Survex 1.4.17 documentation
-
-
-
-
-
+ General: How do I? — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -263,7 +264,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -327,8 +327,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/genindex.htm survex-1.4.22/doc/manual/genindex.htm
--- survex-1.4.17/doc/manual/genindex.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/genindex.htm 2026-06-23 21:24:30.000000000 +0000
@@ -4,12 +4,13 @@
- Index — Survex 1.4.17 documentation
-
-
-
-
-
+ Index — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -52,7 +53,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -101,8 +101,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/getstart.htm survex-1.4.22/doc/manual/getstart.htm
--- survex-1.4.17/doc/manual/getstart.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/getstart.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Getting Started — Survex 1.4.17 documentation
-
-
-
-
-
+ Getting Started — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -171,61 +172,64 @@
-en
+en
International English
-en_US
+en_US
US English
-bg
+bg
Bulgarian
-ca
+ca
Catalan
-de
+cs
+Czech
+
+de
German
-de_CH
+de_CH
Swiss German
-el
+el
Greek
-es
+es
Spanish
-fr
+fr
French
-hu
+hu
Hungarian
-id
+id
Indonesian
-it
+it
Italian
-pl
+pl
Polish
-pt
+pt
Portuguese
-pt_BR
-Brazillian Portuguese
+pt_BR
+Brazilian Portuguese
-ro
+ro
Romanian
-ru
+ru
Russian
-sk
+sk
Slovak
-zh_CN
+zh_CN
Chinese (Simplified)
@@ -307,7 +311,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -373,8 +376,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/img.htm survex-1.4.22/doc/manual/img.htm
--- survex-1.4.17/doc/manual/img.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/img.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Using the img library — Survex 1.4.17 documentation
-
-
-
-
-
+ Using the img library — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -100,7 +101,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -155,8 +155,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/index.htm survex-1.4.22/doc/manual/index.htm
--- survex-1.4.17/doc/manual/index.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/index.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Survex 1.4.17 Manual — Survex 1.4.17 documentation
-
-
-
-
-
+ Survex 1.4.22 Manual — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -32,7 +33,7 @@
-Survex 1.4.17 Manual
+Survex 1.4.22 Manual
This is the manual for Survex - a Free and Open-Source Software package for
cave surveyors.
@@ -195,7 +196,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -245,8 +245,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/intro.htm survex-1.4.22/doc/manual/intro.htm
--- survex-1.4.17/doc/manual/intro.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/intro.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,16 +5,17 @@
- Introduction — Survex 1.4.17 documentation
-
-
-
-
-
+ Introduction — Survex 1.4.22 documentation
+
+
+
+
+
+
-
+
@@ -72,10 +73,11 @@
clearly enough to follow when you don’t know what’s going on. It’s helpful is
you can suggest a better wording, but don’t worry if you can’t, just explain
the problem as precisely as you can.
-The master version of this manual is maintained as reStructured Text , and
-automatically converted to a number of other formats. If you are going to send
-us major changes, it’s much easier to include them if you work from this
-master version rather than changing one of the generated files.
+The source version of this manual is maintained as reStructured Text , and
+automatically converted to a number of other formats. If you spot a typo or
+spelling mistake it’s easy to locate and fix in the source, but if you want to
+send us more significant documentation changes, please work from this source
+version rather than sending us changes to one of the generated files.
Terminology
Throughout this document we use British terminology for surveying:
@@ -107,7 +109,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
Introduction
About Survex
@@ -134,21 +145,11 @@
Related Topics
-
- Quick search
-
-
-
-
-
@@ -165,8 +166,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/maillist.htm survex-1.4.22/doc/manual/maillist.htm
--- survex-1.4.17/doc/manual/maillist.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/maillist.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- Mailing List — Survex 1.4.17 documentation
-
-
-
-
-
+ Mailing List — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -64,7 +65,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -115,8 +115,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual/objects.inv and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual/objects.inv differ
diff -Nru survex-1.4.17/doc/manual/search.htm survex-1.4.22/doc/manual/search.htm
--- survex-1.4.17/doc/manual/search.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/search.htm 2026-06-23 21:24:30.000000000 +0000
@@ -4,13 +4,14 @@
- Search — Survex 1.4.17 documentation
-
-
+ Search — Survex 1.4.22 documentation
+
+
+
-
-
-
+
+
+
@@ -118,8 +119,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/searchindex.js survex-1.4.22/doc/manual/searchindex.js
--- survex-1.4.17/doc/manual/searchindex.js 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/searchindex.js 2026-06-23 21:24:30.000000000 +0000
@@ -1 +1 @@
-Search.setIndex({"alltitles": {".svx Cookbook": [[19, null]], "ALIAS": [[5, "alias"]], "API": [[12, "api"]], "About Survex": [[14, "about-survex"]], "About this Manual": [[14, "about-this-manual"]], "Accuracy": [[5, "accuracy"]], "Add surface topography": [[10, "add-surface-topography"]], "Anonymous Stations": [[5, "anonymous-stations"]], "BEGIN": [[5, "begin"]], "Bob Thrun\u2019s CMAP": [[2, null]], "CALIBRATE": [[5, "calibrate"]], "CARTESIAN": [[5, "cartesian"]], "CASE": [[5, "case"]], "COPYRIGHT": [[5, "copyright"]], "CS": [[5, "cs"]], "Cavern Commands": [[5, "cavern-commands"]], "Change special characters": [[19, "change-special-characters"]], "Command Reference": [[3, "command-reference"]], "Compass .CLP support": [[4, "compass-clp-support"]], "Compass .DAT support": [[4, "compass-dat-support"]], "Compass .MAK support": [[4, "compass-mak-support"]], "Compass .PLF/.PLT support": [[4, "compass-plf-plt-support"]], "Configuration": [[11, "configuration"]], "Create a new survey": [[10, "create-a-new-survey"]], "Create an Extended Elevation": [[10, "create-an-extended-elevation"]], "DATA": [[5, "data"]], "DATE": [[5, "date"]], "DECLINATION": [[5, "declination"]], "DEFAULT": [[5, "default"]], "DESCRIPTION": [[0, "description"], [1, "description"], [3, "description"], [3, "id2"], [3, "id6"], [3, "id10"], [3, "id14"], [3, "id17"], [3, "id21"], [6, "description"], [7, "description"], [8, "description"], [16, "description"], [17, "description"], [18, "description"]], "DXF Format": [[3, "dxf-format"], [18, "dxf-format"]], "David McKenzie\u2019s Walls": [[20, null]], "Diving Data": [[19, "diving-data"]], "END": [[5, "end"]], "ENTRANCE": [[5, "entrance"]], "EQUATE": [[5, "equate"]], "EXPORT": [[5, "export"]], "Error Messages": [[1, "error-messages"], [3, "error-messages"]], "Exporting Compass .PLT": [[4, "exporting-compass-plt"]], "FIX": [[5, "fix"]], "FLAGS": [[5, "flags"]], "Filenames on the Command Line": [[3, "filenames-on-the-command-line"]], "Fixed Points (Control Points)": [[10, "fixed-points-control-points"]], "Future Developments": [[9, null]], "General: How do I?": [[10, null]], "Getting Started": [[11, null]], "INCLUDE": [[5, "include"]], "INFER": [[5, "infer"]], "INSTRUMENT": [[5, "instrument"]], "Import data from other programs": [[10, "import-data-from-other-programs"]], "Installing Survex": [[11, "installing-survex"]], "Introduction": [[14, null]], "Join surveys together": [[19, "join-surveys-together"]], "Keyboard Control": [[0, "keyboard-control"], [3, "keyboard-control"]], "Larry Fish\u2019s Compass": [[4, null]], "Legs across static water": [[19, "legs-across-static-water"]], "Linux": [[11, "linux"]], "Mailing List": [[15, null]], "Microsoft Windows": [[11, "microsoft-windows"]], "More than one survey per trip": [[10, "more-than-one-survey-per-trip"]], "Mouse Control": [[0, "mouse-control"], [3, "mouse-control"]], "Numeric fields": [[5, "numeric-fields"]], "OPTIONS": [[0, "options"], [1, "options"], [3, "options"], [3, "id3"], [3, "id7"], [3, "id11"], [3, "id18"], [3, "id22"], [6, "options"], [7, "options"], [16, "options"], [17, "options"], [18, "options"]], "OUTPUT": [[1, "output"], [3, "output"]], "Obtaining Survex": [[11, "obtaining-survex"]], "On-Screen Indicators": [[0, "on-screen-indicators"], [3, "on-screen-indicators"]], "Organise my surveys": [[10, "organise-my-surveys"]], "Other versions of UNIX": [[11, "other-versions-of-unix"]], "Overlay a grid": [[10, "overlay-a-grid"]], "Override accuracy for a leg": [[19, "override-accuracy-for-a-leg"]], "POS Format": [[3, "pos-format"], [18, "pos-format"]], "PREFIX": [[5, "prefix"]], "Plumbs": [[19, "plumbs"]], "REF": [[5, "ref"]], "REQUIRE": [[5, "require"]], "Radiolocation Data": [[19, "radiolocation-data"]], "Reading Compass .PLF/.PLT": [[4, "reading-compass-plf-plt"]], "Reading order": [[19, "reading-order"]], "Readings": [[5, "readings"]], "Repeated Readings": [[19, "repeated-readings"]], "SD": [[5, "sd"]], "SEE ALSO": [[17, "see-also"]], "SET": [[5, "set"]], "SOLVE": [[5, "solve"]], "SYNOPSIS": [[0, "synopsis"], [1, "synopsis"], [3, "synopsis"], [3, "id1"], [3, "id5"], [3, "id9"], [3, "id13"], [3, "id16"], [3, "id20"], [6, "synopsis"], [7, "synopsis"], [8, "synopsis"], [16, "synopsis"], [18, "synopsis"]], "See errors and warnings that have gone off the screen": [[10, "see-errors-and-warnings-that-have-gone-off-the-screen"]], "Selecting Your Preferred Language": [[11, "selecting-your-preferred-language"]], "Short and Long Options": [[3, "short-and-long-options"]], "Specify a BCRA grade": [[19, "specify-a-bcra-grade"]], "Standard Options": [[3, "standard-options"]], "Surface survey data": [[19, "surface-survey-data"]], "Survex 1.4.17 Manual": [[13, null]], "Survex Programs": [[3, null]], "Survex data files": [[5, null]], "Survey Station Names": [[5, "survey-station-names"]], "TEAM": [[5, "team"]], "TITLE": [[5, "title"]], "TRUNCATE": [[5, "truncate"]], "Terminology": [[14, "terminology"]], "Theodolite data": [[19, "theodolite-data"]], "UNITS": [[5, "units"]], "Using Survex": [[11, "using-survex"]], "Using img in your own code": [[12, "using-img-in-your-own-code"]], "Using the img library": [[12, null]], "aven": [[0, null], [3, "aven"]], "cavern": [[1, null], [3, "cavern"]], "diffpos": [[3, "diffpos"], [6, null]], "dump3d": [[3, "dump3d"], [7, null]], "extend": [[3, "extend"], [8, null]], "macOS": [[11, "macos"]], "sorterr": [[3, "sorterr"], [16, null]], "survex": [[17, null]], "survexport": [[3, "survexport"], [18, null]]}, "docnames": ["aven", "cavern", "cmap", "cmdline", "compass", "datafile", "diffpos", "dump3d", "extend", "future", "genhowto", "getstart", "img", "index", "intro", "maillist", "sorterr", "survex", "survexport", "svxhowto", "walls"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["aven.rst", "cavern.rst", "cmap.rst", "cmdline.rst", "compass.rst", "datafile.rst", "diffpos.rst", "dump3d.rst", "extend.rst", "future.rst", "genhowto.rst", "getstart.rst", "img.rst", "index.rst", "intro.rst", "maillist.rst", "sorterr.rst", "survex.rst", "survexport.rst", "svxhowto.rst", "walls.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 1, 3, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19], "0": [1, 2, 3, 4, 5, 6, 9, 10, 14, 18, 19, 20], "00": [10, 19], "000": [10, 14], "002": 5, "008": 10, "01": [3, 5, 7, 19], "011": 5, "014": 19, "017": 19, "01m": [3, 6], "02": [3, 5, 18, 19], "020": 19, "03": [5, 19], "030": 19, "031": [5, 10], "032": 19, "034": 5, "036": 10, "04": [5, 19, 20], "040": [3, 18], "05": [5, 19], "054": 19, "05625": 5, "057": 10, "059": 19, "06": [5, 19], "060": 19, "063": 19, "068": 10, "07": [5, 10, 19], "071": 10, "072": 10, "073": 5, "08": [5, 10, 19], "080": 19, "087": 5, "09": [10, 19], "091": 19, "092": 5, "093": 5, "098": 5, "0e": 10, "0n": 10, "0w": 10, "1": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20], "10": [1, 2, 3, 4, 5, 10, 18, 19, 20], "100": [3, 10, 18], "1000": 5, "1000m": 20, "100g": [3, 18], "100m": 10, "101": 2, "103": 10, "106": 5, "10cm": 5, "11": [5, 10, 12, 19], "11532": 5, "11873": 5, "119": 10, "12": [3, 4, 5, 7, 10, 19], "1234": 19, "12345": 19, "125": 2, "127": 20, "129": 5, "13": [3, 5, 7, 10, 14, 19], "133": 5, "135": 10, "137": 5, "138": 19, "1381": 5, "1382": 5, "13d20": 5, "14": [5, 10, 19], "145": 5, "146": 5, "15": [5, 10, 19, 20], "157": 19, "16": [2, 4, 5, 10, 20], "161": [5, 10], "161b": 19, "161c": 19, "161d": 10, "1623": [5, 19], "1624": 5, "1626": 5, "163": 19, "17": [5, 10, 19], "171": 10, "172": 5, "1760": 5, "179": 10, "18": 10, "180": [0, 3, 5], "19": [3, 5, 10, 18], "190": 19, "1900": [2, 5], "1901": 4, "1903": 5, "192": 10, "1927": 4, "1950": 2, "1968": 5, "1976": 5, "1977": 5, "1983": [4, 5], "1985": 5, "1987": 5, "199": 2, "1990": 19, "1995": 2, "1996": 10, "1997data": 5, "1998": 13, "1998data": 5, "1999": 2, "19xx": [5, 20], "1e": 10, "1mm": [4, 20], "1n": 10, "1sd": 5, "1st": [2, 4], "1w": 10, "2": [3, 5, 8, 9, 10, 11, 14, 18, 19], "20": [5, 10, 19], "200": [2, 10], "2000": [2, 5, 11], "2001": [2, 5, 13], "2004": 5, "2007": 5, "2012": [14, 19], "2015": 5, "2018": 5, "202": [5, 19], "2020": [5, 13], "2022": 13, "2024": [3, 5, 7], "2025": [2, 13], "203": 19, "2049": 2, "205": 19, "2078": 5, "208": 10, "20cm": [5, 10], "20m": 19, "21": [5, 10, 19], "215": 19, "22": [5, 10], "221": 19, "222": 19, "226": 19, "23": [5, 10], "239": 5, "24": [10, 19], "249": 19, "25": [4, 5, 19], "250": 5, "251": 10, "252": [10, 19], "254": 19, "26": [5, 19], "262": 10, "263": 10, "27": [5, 10, 11], "271": 19, "28": [5, 19], "285": 10, "286": 10, "29": [5, 10, 19], "291": 10, "297": 5, "2a": 5, "2e": 10, "2n": 10, "2sd": 5, "2w": 10, "2yrgest": 5, "3": [1, 3, 5, 10, 11, 19, 20], "30": [5, 10], "300": 10, "3047996": 5, "3048006096012192": 5, "3048m": 5, "30cm": 5, "30m": 10, "31": [5, 19], "311": 5, "313800": 5, "326": 5, "32768": 5, "329": 19, "33": 5, "335": 19, "33n": 5, "34": [5, 10, 19], "34m": 5, "35": [10, 11, 19], "350km": 14, "36": [10, 19], "360": 5, "361": 19, "36670": 5, "37": [5, 19], "38": [5, 19], "3d": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 18, 20], "3d_version": [1, 3], "3dtopo": [3, 4, 18], "3e": 10, "3n": 10, "3w": 10, "4": [1, 2, 3, 4, 5, 7, 8, 10, 11, 19, 20], "40": [10, 19], "400": [5, 10], "40_entrance_tag": [3, 18], "40b_entrance_tag": [3, 18], "41": [5, 10], "4167": 5, "42": 10, "4232": 5, "43": [5, 10], "44": 5, "45": [0, 3, 5, 18], "45d": [3, 18], "463": 5, "47": [5, 10], "474": 5, "48": 10, "49": 2, "499": 19, "4e": 10, "4n": 10, "4w": 10, "5": [3, 5, 8, 10, 19, 20], "50": [1, 2, 3, 18, 19], "500": 10, "500mx500m": 10, "505": 19, "50g": [3, 18], "50m": 19, "52": 10, "5200000": 5, "53": [10, 19], "54": 19, "5427953": 5, "56": 5, "56789": 19, "577": 5, "58": 20, "59": 5, "5e": 10, "5n": 10, "5w": 10, "6": [1, 3, 4, 5, 10, 18, 19], "60": [5, 19], "6000": 5, "605": 19, "61": [5, 10, 20], "62": 19, "634": 19, "64": [5, 10, 11], "6400": 5, "67": [10, 19], "68": [1, 3, 5], "6_1": 5, "6_2": 5, "7": [1, 3, 5, 10, 11, 19], "70": 10, "73": [5, 10, 19], "74": 19, "75": 10, "76": 2, "77": 5, "78": 10, "8": [3, 5, 8, 10, 11, 18, 19, 20], "80": 19, "83317": 5, "84m": 5, "85": 19, "86": 10, "86723": 5, "89": 19, "8m": 19, "9": [1, 2, 3, 4, 5, 10, 11, 19, 20], "90": [0, 3, 5, 10, 14, 18, 19], "90d": [3, 18], "919": 5, "93": 10, "95": [1, 3, 5], "97": 5, "98": 19, "99": [1, 2, 3, 19], "A": [3, 4, 5, 11, 20], "And": [0, 3, 15], "As": [0, 3, 20], "At": 5, "But": 5, "By": [0, 1, 3, 5, 11, 16], "For": [0, 1, 3, 5, 7, 8, 10, 11, 19], "If": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 19, 20], "In": [0, 1, 3, 4, 5, 12, 18, 19, 20], "It": [0, 1, 2, 3, 4, 5, 11, 12, 14, 19, 20], "Its": 5, "No": 5, "On": 5, "One": [1, 3, 4], "Or": [4, 15], "Such": 5, "TO": 5, "The": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20], "Their": 5, "Then": [4, 5], "There": [0, 1, 2, 3, 5, 10, 15], "These": [1, 3, 4, 5, 17, 20], "To": [4, 5, 11, 19, 20], "With": 5, "_": 5, "__cplusplu": 12, "__stdc_version__": 12, "_extend": [3, 8], "a123": 20, "a16": 4, "a22": 4, "aa06": 5, "aa07": 5, "abc123": 20, "abi": 12, "abil": 11, "abl": [1, 2, 3, 4, 5, 10, 12, 19], "about": [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 19, 20], "abov": [3, 5, 10, 18, 20], "absolut": 5, "acceler": [0, 3], "accept": [5, 19, 20], "access": [3, 10, 11, 12, 14, 19], "accompani": 2, "accomplish": [11, 19], "accordingli": 5, "account": [5, 11], "accur": [5, 19], "accuraci": 13, "achiev": [4, 10, 14], "across": [4, 5, 13], "act": 2, "action": [0, 3, 11], "activ": [3, 4, 14, 18], "actual": [1, 3, 4, 5, 10, 19, 20], "ad": [1, 2, 3, 4, 5, 8, 10, 11], "add": [4, 5, 13, 20], "addit": [4, 5], "addition": 5, "address": 5, "adj": [0, 2, 3, 6, 7], "adjac": 19, "adjust": [1, 2, 3, 4, 5], "admin": 11, "administr": 11, "adopt": 5, "adv": 20, "advanc": 11, "advantag": [3, 5, 12], "affect": [0, 1, 3, 20], "after": [0, 1, 3, 4, 5, 8, 11, 16, 20], "again": [0, 3, 5], "against": 5, "ago": 2, "aid": 10, "aim": [3, 14, 20], "akin": 5, "algorithm": 19, "alia": [13, 20], "alias": 5, "align": 5, "all": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 14, 16, 17, 18, 19, 20], "allow": [0, 1, 3, 4, 5, 7, 10, 11, 12, 14, 19, 20], "almost": 5, "along": [0, 1, 3, 4, 5], "alphabet": 5, "alphanumer": 5, "alreadi": [5, 11, 14, 20], "also": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 18, 19, 20], "alter": 5, "altern": [5, 19], "although": 19, "altimet": 5, "altitud": 5, "altrout": 10, "alwai": [0, 1, 3, 5, 10, 18], "ambigu": 5, "american": [4, 5], "an": [0, 1, 3, 4, 5, 8, 11, 12, 13, 19, 20], "analog": 4, "angl": [0, 3, 4, 5, 19], "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 19, 20], "anim": [0, 3], "annot": 5, "anonym": [4, 13, 20], "anoth": [1, 3, 4, 5, 10, 12, 19], "anthoni": [5, 10], "anyon": 2, "anyth": [5, 12, 20], "anywher": [5, 12], "apart": [10, 19], "api": 13, "apostroph": [0, 3], "appar": [0, 3, 19, 20], "appear": [2, 5], "append": 3, "appli": [1, 3, 4, 5, 19, 20], "applic": [0, 3, 12], "approach": [3, 8, 12, 19], "appropri": [3, 4, 5, 19, 20], "approxim": [1, 3, 5, 10, 20], "ar": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20], "arbitrari": [5, 20], "arbitrarili": [3, 5, 8], "arc": 10, "arcgi": 5, "archaic": 5, "area": [4, 5, 14, 15], "aren": [3, 4, 5], "arg": 14, "argument": [5, 20], "around": [0, 3, 5, 14, 20], "arrang": 5, "articl": 5, "ascii": [4, 5], "ask": [12, 20], "assess": 5, "assist": 5, "associ": [1, 3, 11, 19], "assum": [1, 2, 3, 5, 19, 20], "assumpt": 4, "asterisk": 5, "attach": [1, 3, 8, 19, 20], "attempt": [4, 5], "austria": [5, 14, 19], "author": [3, 4, 15, 18], "auto": [0, 3, 5], "automat": [0, 3, 5, 11, 14, 19, 20], "auxiliari": [1, 3], "avail": [1, 3, 5, 10, 11, 12, 17, 19], "aven": [1, 4, 5, 8, 9, 10, 11, 13, 17, 18, 19, 20], "averag": [5, 19, 20], "avoid": [0, 3, 4, 5, 19], "awai": 5, "awar": [5, 12, 14], "ax": 5, "axi": [0, 3, 5], "azimuth": 4, "b": [0, 3, 5, 8], "b14": 4, "back": [0, 3, 5, 10], "backbear": 5, "backclino": 5, "backcompass": 5, "backgradi": 5, "backlength": 5, "backsight": [5, 20], "backtap": 5, "backward": 19, "bad": [1, 3], "band": 5, "bar": [0, 3], "base": [1, 2, 3, 4, 5, 8, 9, 12, 20], "basenam": [1, 3], "bash": 11, "basic": 10, "bat": 20, "bcra": [5, 13], "bcra3": 5, "bcra5": 5, "bear": [3, 5, 18], "becaus": [0, 1, 2, 3, 4, 5, 19, 20], "becom": 20, "beehiv": 5, "been": [3, 4, 5, 8, 11, 19], "befor": [1, 2, 3, 5, 8, 12, 18, 20], "begin": [4, 10, 13, 19], "behaviour": 20, "behind": [5, 10], "being": [1, 3, 4, 5, 7, 9, 10, 14, 19, 20], "below": [0, 3, 4, 5, 11, 17, 19, 20], "benchmark": 5, "benefit": [3, 8, 12], "bessel": 5, "best": [5, 11, 14, 15, 19], "bett": [5, 13, 19], "better": [0, 3, 5, 14, 15], "between": [0, 1, 2, 3, 5, 7, 8, 10], "beyond": [0, 3], "bg": 11, "big": 20, "binari": [1, 3], "bing": 5, "bit": [10, 11, 12, 20], "black": 19, "blank": 5, "block": [5, 19], "blunder": [1, 3, 5], "bob": [5, 12, 13], "bobsbit": 5, "bodi": 19, "bogu": 5, "bolt": 19, "both": [3, 4, 5, 10, 20], "bottom": [0, 3], "bottomless": 10, "bought": 14, "boulder": 5, "bound": [0, 3, 5], "boundari": [4, 19], "box": [0, 3, 5, 20], "bracket": 5, "branch": 5, "brazillian": 11, "break": [3, 5, 8], "brief": [1, 3], "british": 14, "broader": 2, "broken": [3, 8, 10, 20], "btoc": 19, "budget": 14, "bug": [2, 4, 5], "buggi": [2, 5], "build": [11, 12], "built": [9, 11], "bulgarian": 11, "bullet": 4, "button": [0, 3, 20], "byte": 4, "c": [0, 3, 4, 12, 13, 20], "c99": 12, "ca": 11, "cad": 11, "cairn": 10, "calcul": [4, 5], "calibr": [1, 3, 10, 13, 19], "call": [3, 8, 11, 12, 19], "cameroon": 5, "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 20], "cannot": 5, "capabl": [5, 11, 14], "card": 11, "cardin": 5, "care": 5, "carri": [4, 5], "cartesian": 13, "carto": [3, 4, 18], "cascad": [1, 3], "case": [1, 3, 4, 10, 13, 18, 19, 20], "catalan": 11, "catch": 5, "cater": 19, "caus": [1, 3, 4, 20], "cave": [0, 3, 4, 5, 8, 10, 13, 14, 17, 19, 20], "cave1": 19, "cave2": 19, "caveat": 5, "cavern": [0, 4, 8, 10, 11, 13, 17], "ce1": 4, "ceil": 5, "centr": [0, 3, 5, 18], "central": 2, "centrelin": 5, "centuri": 4, "certain": 20, "chamber": 5, "chang": [0, 1, 3, 4, 5, 8, 11, 13, 14], "chao": [10, 19], "char": 5, "charact": [2, 4, 5, 10, 13, 20], "check": [5, 19, 20], "china": 14, "chines": 11, "choic": [5, 19], "choos": [0, 3, 5, 11], "chosen": 5, "chosspot": 5, "circl": 5, "claim": 12, "clamp": [3, 18], "clarifi": 12, "clariti": 5, "clear": [1, 3], "clearer": 15, "clearli": 14, "click": [0, 3, 11, 20], "clickabl": [0, 1, 3], "clino": [0, 1, 3, 5, 10, 19, 20], "clock": 2, "close": [4, 5, 19, 20], "closur": [1, 2, 3, 4, 5, 19, 20], "clp": [1, 3, 13], "clpsx": 20, "cmap": [0, 3, 5, 6, 7, 8, 10, 12, 13, 18], "cmp": [0, 3], "co": 5, "code": [4, 5, 11, 13, 15, 20], "collat": 5, "collect": 2, "collid": [4, 20], "colon": 20, "colour": [0, 1, 3], "column": 2, "com": [5, 11, 15, 17], "combin": [4, 5, 10, 20], "come": 11, "comma": [5, 20], "command": [1, 4, 8, 10, 11, 13, 17, 19, 20], "comment": [3, 4, 5, 8, 10, 12, 15], "common": [1, 3, 4, 5, 11, 20], "commonli": [2, 19, 20], "compar": [1, 3, 5, 11, 20], "compass": [0, 1, 3, 5, 6, 7, 8, 10, 11, 12, 13, 18, 19, 20], "compassdata": 5, "compassfil": 4, "compassproject": 4, "compat": [5, 12], "compil": [1, 3, 11, 12], "complain": 5, "complaint": 20, "complet": [3, 5, 14, 17, 18, 19, 20], "complex": [3, 4, 8, 12, 14], "complic": [3, 8, 19], "compon": [1, 3, 5, 7, 20], "comprehens": 17, "comput": [2, 4, 5, 11, 14], "concept": 5, "condit": 20, "confid": 5, "configur": [3, 13, 18], "conform": 5, "confus": 5, "connect": [1, 3, 5, 19, 20], "connected": 19, "conserv": 12, "consid": [1, 3], "consist": [5, 20], "contact": [11, 14, 15], "contain": [1, 2, 3, 4, 5, 10, 11, 18, 19, 20], "content": 5, "context": 5, "continent": 5, "continu": [3, 5, 8, 9, 14], "contour": 19, "contribut": 15, "control": [4, 11, 12, 13], "conveni": [3, 7, 12], "convent": [5, 19, 20], "converg": [4, 5, 20], "convers": 2, "convert": [3, 4, 5, 7, 10, 11, 14, 19], "cookbook": 13, "coord": 5, "coordin": [2, 3, 4, 5, 7, 11, 18], "cope": 4, "copi": [5, 11, 12], "copyright": 13, "corner": [0, 3], "correct": [1, 3, 4, 5, 10, 18, 19, 20], "correctli": 20, "correspond": [0, 3, 5, 20], "could": [1, 3, 4, 5, 11, 15], "count": [1, 3, 5, 20], "counter": 5, "cov": 5, "covari": 5, "cover": [5, 11], "cp": 19, "cp10": 19, "cpoint10": 19, "cpu": [1, 3], "creat": [1, 3, 4, 5, 11, 13, 18], "criteria": [0, 3], "criterion": [3, 16], "cross": [0, 3, 5, 18], "crude": [3, 4, 18], "csh": 11, "csv": [3, 18], "ctrl": [0, 3], "cucc": [5, 10, 14, 19], "current": [0, 1, 2, 3, 4, 5, 10, 11, 12, 18, 19, 20], "cursor": [0, 3], "custom": 5, "cut": [3, 7], "cylpolar": [5, 19], "czechoslovak": 5, "d": [3, 4, 7, 15, 18, 19], "dai": [2, 5, 10, 11], "danger": 3, "dash": [3, 17, 18, 19], "dat": [1, 3, 5, 13], "data": [0, 1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 20], "dataset": [5, 10, 20], "date": [3, 4, 7, 10, 11, 13, 19, 20], "date1": 5, "date2": 5, "datfilewhichusesce1": 4, "datum": [4, 5, 20], "dav": 20, "david": 13, "dd": 20, "de": 11, "de_ch": 11, "dead": [1, 3], "deadend": [3, 8], "deal": [5, 10], "debian": 12, "debug": [3, 7, 11], "decim": 5, "decis": 12, "declin": [4, 13], "decoupl": 20, "deep": [3, 8], "deep_pit": [3, 8], "deep_pit_extend": [3, 8], "default": [0, 1, 2, 3, 4, 6, 7, 11, 12, 13, 16, 18, 19], "defin": [4, 5, 12, 19], "definit": 5, "deg": 5, "degre": [0, 3, 5, 19], "delet": [0, 3], "deliber": [0, 3, 19], "delight": 15, "delimit": 20, "delug": [1, 3], "demonstr": [19, 20], "depend": [4, 5, 11], "deprec": 5, "depth": [0, 3, 4, 5, 19], "depthchang": 5, "describ": [3, 4, 5, 14, 17], "descript": [5, 10, 11], "desktop": 11, "detail": [1, 3, 5, 10, 11, 15, 19, 20], "determin": [5, 20], "develop": [3, 4, 13, 14, 15, 18, 20], "deviat": [1, 3, 5, 19], "devic": 5, "di": [3, 4, 18], "diagnost": 5, "dialog": [0, 3, 20], "didn": [1, 3, 5], "differ": [1, 3, 4, 5, 6, 7, 10, 12, 19, 20], "diffpo": [4, 11, 13, 17], "digit": [2, 4, 5, 20], "digitis": 5, "dimens": [4, 5], "direct": [0, 3, 5, 8, 12, 14, 20], "directli": [0, 3, 5, 10], "directori": [1, 3, 5], "disabl": [0, 3], "discuss": 5, "displai": [0, 1, 3, 6, 7, 10, 16, 17, 18, 19], "distanc": [3, 4, 5, 6], "distinguish": 19, "disto": 5, "distort": 5, "distribut": [4, 5, 11, 19], "dive": [1, 3, 5, 13], "diver": [5, 19], "divid": [1, 3, 5, 19], "do": [0, 1, 3, 4, 5, 11, 12, 13, 14, 15, 19, 20], "doc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "document": [2, 4, 5, 10, 11, 12, 14, 15, 19, 20], "doe": [2, 3, 5, 20], "doesn": [0, 1, 3, 4, 5, 11, 14, 20], "dog": 5, "don": [2, 3, 4, 5, 7, 11, 12, 14, 19, 20], "donat": 14, "done": [5, 10, 11, 19], "dot": [3, 18], "doubl": [0, 3, 5, 11], "down": [0, 3, 5, 8, 10, 19], "download": [11, 15], "downsid": 5, "draenen": 14, "drag": [0, 3], "draw": [4, 12], "drawn": [4, 5], "dreamtim": 5, "drew": 5, "drip": 19, "driver": [9, 11], "drop": 11, "dtime": 5, "due": [1, 2, 3, 5, 20], "dummi": [4, 20], "dump": [3, 7, 11], "dump3d": [4, 11, 12, 13, 17], "duplic": [1, 3, 4, 5, 20], "dure": [0, 1, 3, 4, 5], "dx": 5, "dxf": 11, "dy": 5, "dz": 5, "e": [0, 1, 3, 4, 5, 7, 10, 11, 12, 19, 20], "each": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 17, 19, 20], "earlier": [4, 5, 11], "earth": 5, "easegil": 14, "easi": [3, 5, 7, 20], "easier": [3, 14], "easiest": [10, 11], "easili": [4, 9, 10, 19], "east": [1, 3, 5, 18], "easternmost": [1, 3], "ed": 5, "edg": 10, "edit": 11, "editor": [1, 3, 5, 10], "effect": [0, 1, 3, 4, 5, 10, 11, 14, 20], "effort": [12, 20], "either": [1, 3, 5, 19, 20], "el": 11, "elast": 10, "eleft": [3, 8], "element": 5, "elev": [0, 3, 8, 11, 13, 18], "elimin": 5, "ellipsoid": 5, "ellp": 5, "els": [5, 11, 12], "embed": [5, 20], "empti": [4, 5, 20], "en": 11, "en_u": 11, "enabl": [4, 5], "encapsul": [3, 18], "enclos": [3, 5, 19], "encod": 5, "encount": 2, "encourag": [5, 14], "end": [1, 3, 4, 10, 13, 18, 19, 20], "enforc": 20, "engin": [1, 3], "english": 11, "enough": [4, 5, 14], "ensur": 14, "enter": [5, 19], "entir": [4, 5, 15], "entpitch": 19, "entran": 5, "entranc": [1, 3, 4, 8, 10, 13, 18, 19, 20], "entri": [3, 5, 7, 11, 16], "environ": 11, "environment": 11, "eol": 5, "ep": [3, 18], "epsg": [4, 5, 20], "equal": 5, "equat": [1, 3, 4, 10, 13, 19], "equival": [3, 4, 5, 7, 18, 19], "eric": 13, "eright": [3, 8], "err": [1, 3, 5, 11, 16], "err_fil": [3, 16], "error": [0, 4, 5, 8, 11, 12, 13, 16, 19, 20], "escap": 4, "espec_fil": [3, 8], "especi": 5, "esri": 5, "essenti": [4, 5], "estim": 5, "eswap": [3, 8], "etc": [1, 3, 4, 5, 10, 11, 19, 20], "etern": 10, "eur79": 5, "eur79z30": 5, "europ": 5, "even": [2, 4, 5, 15, 20], "everi": 5, "everyon": 14, "everyth": [0, 3, 5, 10], "evolv": [9, 12], "ex": 20, "exact": [4, 5], "exactli": [5, 20], "exampl": [1, 2, 3, 4, 5, 8, 10, 11, 12, 18, 19, 20], "exceed": 4, "except": [5, 20], "exclud": [1, 3, 4, 20], "exist": [1, 3, 4, 5, 10, 11, 19, 20], "exit": [0, 1, 3, 6, 7, 16, 17, 18], "expect": [4, 5, 12, 19], "expedit": 14, "experi": 11, "experiment": [0, 3], "explain": [1, 3, 14], "explanatori": [1, 3], "explicit": [5, 10, 20], "explicitli": [3, 5, 8, 19, 20], "explo": 5, "explor": 5, "expo": 5, "export": [3, 10, 11, 13, 18, 19, 20], "express": [4, 5], "extend": [4, 5, 11, 13, 17], "extens": [1, 2, 3, 4, 5, 8, 10, 11, 14], "extern": 5, "extra": [4, 5], "extrem": [5, 14], "f": [0, 3, 5], "facilit": 5, "factor": [2, 3, 5, 16], "fail": [4, 5, 20], "fairli": [2, 3, 7, 11, 12], "fake": 10, "fall": 5, "fallen": 10, "fan": [1, 3], "far": 4, "farawai": 10, "fast": 10, "feasibl": 14, "featur": [3, 4, 5, 10, 14, 18, 19, 20], "feedback": [1, 3, 14], "feel": [0, 3, 15], "feet": [2, 5], "few": [5, 10, 11, 19], "field": [11, 13], "figur": 5, "file": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 18, 19, 20], "file1": [3, 4, 6], "file2": [3, 4, 6], "file3": 4, "filenam": [1, 5, 8, 13], "filetyp": 5, "fill": 5, "filter": 5, "find": [2, 5, 11, 12, 14, 15, 20], "fine": 11, "first": [1, 2, 3, 5, 8, 10, 11, 12, 20], "fisco": 5, "fish": [12, 13], "fit": 4, "fix": [1, 3, 4, 13, 18, 19, 20], "fix_a": 19, "flag": [1, 2, 3, 4, 8, 13, 19, 20], "flapjack": 5, "flat": [1, 3, 19], "flatten": 10, "flexibl": [5, 19], "float": 20, "floor": 5, "focu": 20, "fold": [3, 8, 10], "folder": 5, "follow": [0, 1, 3, 4, 5, 7, 10, 11, 14, 17, 19, 20], "foot": 5, "forc": [0, 3, 5], "foresight": [5, 20], "form": [3, 4, 5, 7, 10, 19], "formal": 5, "format": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 17, 20], "forward": 19, "fossil": 5, "found": [1, 3, 5, 11, 17], "fr": 11, "fraction": 5, "framework": 9, "free": [5, 13, 14, 15], "freeli": 11, "french": 11, "frog": 19, "from": [0, 1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 19, 20], "fromcount": 5, "fromdepth": 5, "frustrat": [0, 3], "ft": 5, "full": [3, 4, 5, 11, 18], "fulli": 5, "function": [3, 7, 10, 11, 12], "further": [3, 8], "futur": [5, 10, 13, 14], "g": [0, 1, 3, 4, 5, 7, 10, 11, 12, 18, 19, 20], "gaug": [4, 5, 19], "gcc": [1, 3], "gebirg": 5, "gener": [1, 3, 4, 5, 12, 13, 14, 18, 19, 20], "genuin": 20, "geodata": [5, 20], "geoid": 5, "geomagnet": 5, "german": 11, "get": [0, 1, 2, 3, 4, 5, 7, 13, 15, 18, 19], "give": [0, 1, 3, 4, 5, 8, 10, 11, 12, 14, 19, 20], "given": [2, 3, 4, 5, 8, 14, 16, 19, 20], "gnu": 17, "go": [0, 1, 3, 5, 8, 10, 14], "goe": [0, 3, 19], "gon": 5, "gone": 13, "good": [1, 3, 19], "googl": 5, "gp": 5, "gpx": [3, 5, 18], "grad": 5, "grade": [5, 13], "grade3": 19, "gradient": 5, "granular": 5, "graphic": 11, "greatli": 11, "greek": 11, "grid": [0, 3, 5, 13, 18, 20], "ground": [3, 18], "group": [5, 11, 14], "guarante": 12, "guess": 5, "gui": 9, "gz": 11, "h": [1, 3, 5, 12, 16], "ha": [0, 3, 4, 5, 8, 9, 11, 12, 14, 18, 19, 20], "had": [4, 5, 10], "half": [2, 3, 8], "hand": [5, 11], "handbook": 5, "handheld": 5, "handi": 5, "handl": [0, 2, 3, 4, 5, 8, 19, 20], "hang": 20, "happen": [2, 5], "hard": 14, "harder": 5, "hardwar": [4, 14], "hasn": 11, "have": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 17, 19, 20], "have_": 12, "have_snprintf": 12, "haven": [5, 20], "head": 19, "header": [3, 12, 18], "hear": 15, "height": [1, 3, 5, 18], "held": [0, 3, 5], "help": [0, 1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 18, 20], "helper": 5, "hemispher": 5, "henc": 5, "here": [4, 5, 10, 11, 19, 20], "hex": [4, 5], "hgt": 10, "hidden": [5, 20], "hide": [0, 3], "hierarch": [5, 19], "hierarchi": 5, "high": 19, "higher": 19, "highest": [1, 3, 5, 8, 12, 19], "highlight": [5, 20], "histor": 5, "hold": [0, 3], "holder": 5, "homebrew": 11, "hong": 14, "horizont": [0, 1, 3, 5, 11, 16, 19, 20], "how": [0, 1, 2, 3, 4, 5, 11, 12, 13, 15, 19, 20], "how_mani": [3, 16], "howev": [5, 11], "hpgl": [3, 18], "htm": [5, 19], "html": [5, 15, 17], "http": [5, 11, 15, 17, 19, 20], "hu": 11, "human": [3, 8], "hungarian": 11, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "icon": [1, 3, 11], "id": 11, "idea": 10, "ident": [4, 20], "identifi": [1, 3, 5], "ignor": [2, 4, 5, 10, 20], "ignoreal": [5, 10], "igrf": 5, "ijtsk": 5, "ijtsk03": 5, "img": [3, 4, 6, 7, 13, 18], "img_rewind": [3, 7], "imgtest": 12, "immedi": 11, "implement": [2, 4, 20], "implicit": 5, "implicitli": 5, "import": [3, 4, 5, 11, 13, 14, 18], "imposs": 5, "improv": [4, 15], "inch": 20, "includ": [1, 3, 4, 8, 12, 13, 14, 16, 18, 19, 20], "inclus": 2, "incomplet": 20, "incorrect": [1, 3, 5, 20], "incorrectli": [5, 20], "increas": 5, "increment": 4, "indefinit": 5, "indian": 5, "indic": [1, 4, 5, 12, 19], "individu": [3, 5, 8, 17], "indonesian": 11, "inevit": 20, "infer": [4, 13, 19, 20], "info": [5, 10, 19], "inform": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 16, 17, 18, 19], "inher": 5, "inherit": 20, "initi": 11, "input": [3, 5, 6, 8, 16, 18], "input_fil": [3, 7, 8, 18], "insensit": 5, "insert": 5, "insid": [5, 11], "insist": 5, "inspect": 10, "inst": [5, 19], "instal": 13, "instanc": 20, "instead": [0, 1, 3, 5, 7, 19, 20], "instruct": 11, "instrument": [1, 3, 4, 10, 13, 19, 20], "integ": 5, "integr": 9, "intend": [3, 4, 5, 14, 18, 19], "intent": [5, 10], "intention": 20, "interact": [3, 5, 8], "interest": 11, "interfac": [3, 8, 19], "interleav": 5, "intern": [5, 11], "internationalis": 11, "interpret": [2, 4, 5, 20], "intervent": [3, 8], "introduc": 5, "introduct": 13, "invalid": 5, "invent": [4, 5], "invert": [0, 3], "investig": 14, "involv": 5, "io": 5, "irrelev": 5, "isn": [1, 3, 4, 5, 10, 11, 19], "iso": [3, 5, 7], "isol": 20, "issu": [5, 19, 20], "italian": 11, "item": [0, 3, 5, 7, 10, 11, 18], "its": [4, 10, 20], "itself": [1, 3, 4, 5, 10, 18], "januari": 4, "jenni": 19, "join": [3, 5, 8, 13, 14, 15], "json": [3, 18], "jtsk": 5, "jtsk03": 5, "juli": 10, "jump": [1, 3], "junction": [1, 3, 8], "june": 5, "junk": 20, "just": [0, 1, 2, 3, 4, 5, 10, 11, 14, 19, 20], "k": 5, "kaninchenh\u00f6hl": 5, "keen": 2, "keep": [4, 5, 19], "kei": [0, 3, 20], "kept": 2, "keyboard": 14, "keyword": [5, 10], "kilometr": 5, "kml": [3, 5, 18], "knot": 5, "know": [4, 5, 10, 14, 15, 19, 20], "known": [2, 4, 5, 19, 20], "kt114_96": 5, "l": [0, 3, 4, 7, 16, 20], "label": [0, 1, 3, 18], "lack": [3, 4], "land": 5, "landgraf": 13, "lang": 11, "languag": [3, 12, 13, 15, 18], "larg": [0, 1, 3, 4, 5, 10, 20], "largest": 4, "larri": [12, 13], "last": [4, 5], "lat": 5, "lat_0": 5, "later": [2, 4, 5, 11, 14, 19, 20], "latest": [1, 3, 11], "latitud": 5, "layer": [3, 18], "lead": [5, 11, 20], "leak": 19, "leap": 19, "least": [1, 2, 3, 4, 5, 8, 12, 20], "leav": [5, 10], "left": [0, 1, 3, 4, 5, 8, 18], "leftward": [3, 8], "leg": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 16, 18, 20], "legaci": 5, "length": [0, 1, 3, 5, 10, 19, 20], "less": [1, 3, 5, 19], "let": [4, 5, 14, 15, 20], "letter": [3, 5, 20], "level": [4, 5, 11, 19, 20], "librari": [3, 4, 6, 7, 11, 13, 18], "like": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 14, 19, 20], "limit": [4, 5, 20], "line": [0, 1, 4, 5, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20], "link": [0, 1, 2, 3, 4, 5, 12, 19], "linux": [9, 13, 14], "list": [1, 3, 4, 5, 11, 12, 13, 14, 18, 20], "liter": 5, "littl": [0, 3, 14], "littlebit": 5, "ll": [4, 5, 11, 12, 19], "load": [0, 1, 3, 4, 5, 7, 10, 11, 18], "local": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "localtim": 2, "locat": [1, 3, 4, 5, 17], "log": [0, 1, 3, 5, 10], "logbook": 19, "lon_0": 5, "long": [1, 2, 5, 13, 17, 20], "longer": [1, 2, 3, 4, 5, 18, 20], "longitud": 5, "look": [1, 3, 4, 5, 10, 20], "loop": [1, 2, 3, 4, 5, 8, 10, 19, 20], "loser": [5, 14], "lost": [0, 3, 4, 5], "lot": 10, "love": 15, "low": [12, 14, 19], "lower": [0, 1, 3, 4, 5, 10, 20], "lowercas": 4, "lowest": [1, 3], "lrud": [4, 10, 20], "m": [3, 5, 11, 12, 18], "machin": [0, 3, 14], "maco": [9, 13, 14], "macro": 12, "made": [4, 5, 10, 15, 19], "magic": 19, "magnet": [4, 5], "mai": [2, 3, 4, 5, 7, 10, 11, 12, 19, 20], "mail": [12, 13, 14], "maillist": 15, "main": [3, 5, 10], "maintain": [4, 10, 14], "major": 14, "mak": [1, 3, 5, 13], "make": [0, 1, 3, 5, 12, 15, 19, 20], "mammoth": 20, "man": 17, "manag": [2, 11, 20], "mani": [1, 3, 5, 8, 10, 11, 12, 14], "manipul": [0, 3], "manomet": 5, "manual": [10, 11, 17], "manufactur": 11, "map": [4, 5, 19, 20], "mark": [3, 4, 5, 8, 13, 19, 20], "marker": [3, 5, 18], "marker_s": [3, 18], "master": 14, "match": 5, "maximum": 5, "mckenzi": 13, "mean": [2, 3, 5, 9, 10, 12, 18, 19, 20], "measur": [1, 3, 5, 10, 19, 20], "meigui": 14, "memori": 4, "mention": [5, 20], "menu": [0, 3, 9, 10, 11], "merc": 5, "mercat": 5, "mere": 5, "messag": [5, 11, 12], "meta": [1, 3], "meter": 5, "metr": [2, 3, 5, 6, 18, 19], "metric": 5, "microsoft": [3, 9, 13, 14], "middl": [0, 1, 3, 5], "might": [1, 3, 4, 5, 19], "migrat": [5, 10, 20], "mil": 5, "militari": 5, "minimum": 5, "minu": 5, "minut": 5, "misclosur": [1, 3, 5], "mislead": [3, 7], "mismatch": 2, "miss": [5, 15, 20], "mission": 5, "mistak": [1, 3, 4], "mix": [4, 5, 10, 20], "mixtur": 5, "mm": 20, "mode": 5, "model": [4, 5], "modern": [3, 5, 12], "modif": 5, "modifi": 5, "month": 5, "more": [0, 1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 19, 20], "most": [0, 3, 4, 5, 8, 10, 11, 19, 20], "mostli": [5, 20], "mous": 14, "move": [0, 1, 3, 4, 5, 6, 7, 12, 19], "movement": [0, 3], "much": [1, 2, 3, 4, 5, 14, 19], "multi": [5, 14], "multipl": [1, 3, 4, 19], "must": [1, 3, 4, 5, 20], "my": 13, "n": [0, 3, 5], "n0e": 5, "n90e": 5, "name": [0, 2, 3, 4, 7, 10, 11, 12, 13, 18, 19, 20], "nasa": 10, "nation": 5, "nativ": [1, 3, 4, 10, 11], "nato": 5, "natur": [0, 1, 3, 5], "navig": 11, "nb": 5, "ne": [0, 3], "nearbi": 5, "nearli": [1, 3, 10], "necessari": 5, "need": [1, 2, 3, 4, 5, 10, 11, 19, 20], "needless": 19, "neg": 5, "nest": 5, "network": [1, 3, 5], "neugrad": 5, "never": 2, "new": [4, 5, 11, 13, 20], "newer": 4, "newli": 5, "newlin": 5, "next": [5, 11], "nick": [5, 10], "node": [1, 3], "noisi": 20, "non": [0, 3, 4, 5, 11], "none": [5, 12], "norm": 3, "normal": [1, 3, 5, 19], "north": [0, 1, 3, 4, 5, 18], "northern": 5, "northernmost": [1, 3], "nosurvei": [5, 10, 20], "notat": 5, "note": [1, 3, 4, 5, 6, 10, 11, 19, 20], "notebook": 5, "notepad": 11, "notic": 19, "now": [1, 2, 3, 5, 9, 10, 11, 18, 19], "number": [1, 2, 3, 4, 5, 10, 12, 14, 18, 19], "numer": [13, 20], "nw": [0, 3], "nzgd2000": 5, "o": [0, 1, 3, 5], "obscur": [3, 20], "observ": 5, "obsolet": [2, 4], "obtain": [5, 13, 19], "obvious": 14, "occasion": [5, 11], "occur": [3, 4, 18], "ofd": 14, "off": [0, 2, 3, 5, 13], "offend": [1, 3], "offer": 10, "offset": [1, 3], "often": [3, 10, 14], "ogof": 14, "ok": [5, 11], "old": [2, 3, 4, 5, 12, 18], "older": [2, 4, 5], "olli": [5, 13, 19], "omit": [1, 3, 5, 19, 20], "onc": [5, 19], "one": [1, 3, 4, 5, 6, 8, 11, 13, 14, 15, 19], "oner": 19, "ones": 19, "onli": [0, 1, 2, 3, 4, 5, 7, 8, 10, 16, 18, 19, 20], "onlin": [5, 17, 19], "onto": [3, 18], "open": [0, 1, 3, 5, 11, 12, 13, 14], "opengl": 11, "openstreetmap": 5, "oper": [3, 5, 11], "opportun": 5, "opposit": [0, 3, 5], "option": [5, 8, 10, 12, 13, 20], "order": [1, 3, 5, 10, 13, 18, 20], "ordin": 5, "ordnanc": 5, "org": [19, 20], "organis": 13, "origin": [1, 2, 3, 4, 5, 10, 11, 18, 19], "osgb": 5, "other": [0, 1, 3, 4, 5, 6, 8, 9, 12, 13, 14, 15, 19, 20], "otherwis": [3, 4, 5, 7, 19, 20], "oucc": 14, "ought": 20, "our": [3, 9, 11], "out": [0, 3, 5, 7, 8, 9, 11, 15, 19], "outlin": 14, "output": [0, 5, 6, 7, 8, 10, 12, 16, 17, 18, 20], "output_3d_fil": [3, 8], "output_fil": [3, 18], "outsid": [0, 3, 4, 5, 12], "over": [5, 14, 19], "overlai": [5, 13, 20], "overlap": [0, 3], "overnight": 5, "overrid": [1, 3, 11, 13, 20], "own": [4, 13], "p": [0, 3, 4, 8, 16, 19, 20], "p157": 19, "p163": [5, 19], "p25": 20, "p34": 5, "packag": [5, 11, 12, 13, 14], "page": [10, 11, 17], "pair": 5, "pan": [0, 3, 14], "panel": 11, "paramet": [3, 4, 16], "parent": 5, "pars": [1, 3, 5, 7, 12, 20], "parsons_nos": 5, "part": [1, 3, 4, 5, 11, 14, 18, 19], "partial": 5, "particular": [0, 3, 4, 5, 8, 17, 20], "particularli": 10, "partli": 5, "pass": [3, 8], "passag": [3, 4, 5, 18], "path": 5, "pdf": 17, "peopl": [0, 3, 5, 20], "pep": 20, "per": [1, 3, 5, 11, 13, 16], "percent": 5, "percentag": [1, 3, 5, 11, 16], "perform": [5, 11], "period": [5, 12], "perman": 5, "permit": 5, "person": 5, "phase": 10, "phone": 14, "physic": 5, "pic": 5, "pick": [5, 11], "pico": 14, "pictur": [5, 10, 11], "piec": [1, 3], "pit": [5, 10], "pitch": [10, 19], "pl": 11, "place": [2, 3, 4, 5, 18, 19, 20], "plain": [5, 17], "plan": [0, 3, 9, 18], "plane": 19, "plateau": [5, 14], "platform": [3, 9, 11, 14], "plausibl": [1, 3], "pleas": [2, 4, 5, 12, 14, 20], "plenti": 15, "plf": [3, 6, 7, 11, 13], "plot": [4, 5, 11], "plotter": [3, 18], "plt": [0, 3, 6, 7, 8, 11, 13, 18], "plu": [0, 3, 5], "plumb": [1, 3, 5, 10, 13], "po": [0, 6, 7, 11, 12], "pocket": 5, "pockettopo": 19, "point": [0, 1, 3, 4, 5, 8, 13, 14, 15, 18, 19, 20], "polar": 20, "pole": 5, "polish": 11, "popular": [1, 3], "portugues": 11, "posit": [0, 3, 4, 5, 11, 19, 20], "possibl": [2, 4, 5, 10, 11], "postscript": [3, 18], "potenti": [3, 5], "pound": 20, "power": [5, 10], "practic": [19, 20], "pre": 11, "prebuilt": 11, "preced": 5, "precis": [4, 14], "predict": 5, "predominantli": 5, "prefer": [4, 5, 10, 13, 19], "prefix": [3, 4, 7, 12, 13, 18, 19, 20], "present": [1, 3, 4, 5, 7], "preserv": [4, 5], "press": [0, 3], "presum": 4, "prevent": [5, 19], "previou": [4, 5, 19], "previous": [5, 20], "primarili": [3, 18, 20], "princip": [3, 4, 18], "print": [0, 3, 5, 11, 17], "printer": 9, "printout": 10, "prior": [1, 3, 5], "prioritis": 20, "probabl": [0, 2, 3, 5, 11, 20], "probe": 12, "problem": [1, 3, 4, 5, 14, 15, 20], "problemat": [0, 1, 3, 20], "proce": 11, "process": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 14, 17, 19, 20], "proctor": [5, 10], "produc": [1, 2, 3, 8, 11, 18, 19], "program": [0, 4, 5, 8, 9, 11, 12, 13, 17], "progress": 9, "proj": [4, 5], "proj4": 4, "project": [4, 5, 10, 14, 20], "promin": 10, "promptli": 5, "proport": 5, "provid": [0, 3, 4, 5, 7, 10, 11, 12, 15, 19, 20], "pt": 11, "pt2": 19, "pt3": 10, "pt_br": 11, "pull": [3, 7, 9], "purpos": [4, 5], "put": [3, 5, 8, 19], "q": [1, 3], "qq": [1, 3], "quad": 5, "quadrant": 5, "qualifi": [4, 5], "quantiti": 5, "quicker": 3, "quickli": [0, 3, 14], "quiet": [1, 3], "quietli": [4, 5, 20], "quirk": 20, "quit": [3, 19], "quot": [3, 5], "r": [0, 3, 7, 16], "radial": 5, "radioloc": 13, "random": [1, 3], "rang": [1, 3, 5, 7], "ranger": 5, "rank": [1, 3], "rather": [0, 3, 4, 5, 11, 12, 14, 18], "ratio": [3, 16], "raw": 4, "re": [1, 2, 3, 4, 5, 7, 11, 14, 15, 16, 20], "reach": [5, 9], "read": [0, 1, 2, 3, 6, 7, 8, 10, 11, 12, 13, 20], "real": [4, 5, 14, 20], "realist": [1, 3], "realli": [2, 5, 20], "rearrang": 5, "reason": [4, 5, 19], "rebuild": 12, "receiv": 5, "recent": [5, 11], "recognis": [4, 5], "recommend": [1, 3, 4, 5], "record": [0, 3, 5], "redempt": 10, "redirect": 10, "redistribut": 11, "redraw": 5, "reduc": 5, "reel": 5, "ref": 13, "refer": [4, 5, 13, 19], "refind": 5, "regard": [5, 19], "region": [11, 20], "registri": 20, "rel": [1, 3, 5], "relat": [0, 3, 5], "releas": [2, 5, 10, 11, 15], "relev": [10, 12, 19], "reli": 5, "rememb": 3, "remov": [3, 5, 18], "renam": 10, "render": [10, 11], "reorder": 11, "repeat": [5, 13], "replac": [3, 4, 5, 8, 16, 20], "report": [1, 3, 4, 5, 6, 10, 11, 20], "repres": [4, 5, 19], "request": 11, "requir": [3, 4, 8, 11, 13, 18, 19], "reset": [0, 1, 3, 5, 20], "resiz": [0, 3], "resolv": [2, 5], "resourc": 5, "respect": [0, 1, 3], "respons": [14, 20], "rest": [5, 19], "restor": [5, 20], "restrict": [3, 5, 8, 12, 19, 20], "restructur": 14, "result": [3, 5, 8, 11, 20], "resurvei": 14, "retain": 5, "return": [0, 2, 3, 4, 5, 12, 16], "reus": 12, "revers": 5, "revis": [5, 12], "rewind": [3, 7], "rig": 19, "right": [0, 1, 3, 5, 8, 11, 20], "ro": 11, "rock": 10, "role": 5, "romanian": 11, "root": [5, 11], "rope": 19, "rotat": [0, 3, 5, 14], "roughli": 5, "round": 19, "rpt": 20, "ru": 11, "rule": [1, 3], "ruler": 5, "run": [0, 1, 3, 10, 11, 14], "russian": 11, "s34e": 5, "sadli": [3, 4, 18, 20], "sai": [4, 5, 15, 19, 20], "same": [0, 1, 3, 4, 5, 10, 12, 14, 19, 20], "samoa": 5, "sampl": [2, 11], "save": [4, 10, 20], "scale": [0, 2, 3, 5, 18], "scene": 10, "scientif": 5, "scope": [5, 14], "screen": [1, 11, 13], "script": [3, 7, 11], "scroll": 10, "scrollwheel": [0, 3], "sd": [4, 13, 19, 20], "se": [0, 3, 5], "sea": 5, "second": [3, 4, 5, 7, 10, 14, 16], "section": [0, 1, 3, 4, 5, 8, 10, 11, 14, 15, 18, 19], "see": [0, 1, 3, 4, 5, 11, 12, 13, 14, 19, 20], "seem": [1, 2, 3, 4, 5, 12, 18, 20], "seen": [4, 20], "segment": 20, "select": [0, 3, 5, 8, 13, 20], "self": [1, 3], "semant": 5, "semicolon": 20, "send": [1, 3, 14], "sens": [5, 14], "sensibl": [5, 12], "sensit": [3, 4, 5, 19], "sent": [3, 5, 16], "separ": [3, 4, 5, 7, 10, 11, 12, 18, 20], "seri": [3, 5, 7, 9], "set": [1, 2, 3, 4, 10, 11, 13, 19, 20], "setenv": 11, "sever": 5, "sh": 11, "shaft": 5, "shape": [4, 20], "shapefil": 20, "share": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "shift": [0, 3], "shinwel": 13, "short": [0, 1, 4, 5, 6, 7, 8, 10, 13, 16, 17, 18], "shortcut": [0, 3], "shorten": 4, "shot": [2, 4, 20], "should": [0, 1, 3, 4, 5, 11, 12, 19, 20], "shouldn": 5, "show": [0, 1, 3, 4, 5, 7, 8, 12], "shown": [0, 3], "sht": [0, 2, 3, 6, 7, 8], "sicili": 5, "side": [3, 5, 8], "sidewai": 5, "sight": 5, "sign": [1, 3, 5, 20], "signific": [4, 5], "significantli": 5, "silent": 5, "similar": [3, 5, 8, 10, 11], "similarli": 4, "simpl": [3, 5, 7, 8, 10, 11, 19, 20], "simpler": 10, "simpli": [5, 12, 19], "simplifi": 11, "sinc": [1, 3, 4, 5, 7, 11, 14, 18, 19, 20], "singl": [2, 3, 4, 5, 19], "site": [5, 9], "situat": [1, 3, 4, 5, 8, 20], "size": [0, 1, 3, 18], "sk": 11, "sketch": 5, "skill": 15, "skip": [0, 3, 5, 20], "slash": [0, 3, 5], "slightli": 4, "slope": 5, "slovak": 11, "slow": [0, 3, 11, 14], "slowli": 12, "small": [1, 3, 10, 19], "smap": 5, "snap": [0, 3], "snprintf": 12, "so": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 14, 15, 18, 19, 20], "softwar": [1, 3, 5, 10, 11, 12, 13, 14], "sole": 5, "solut": 4, "solv": 13, "some": [0, 3, 4, 5, 8, 10, 11, 14, 19, 20], "somebodi": 5, "someon": [5, 11], "someth": [1, 3, 5], "sometim": [5, 11, 20], "somewher": [5, 19], "sort": [1, 2, 3, 5, 11, 16, 18], "sorterr": [1, 11, 13, 17], "sourc": [5, 11, 12, 13, 14], "south": [1, 3, 5], "southernmost": [1, 3], "space": [0, 3, 4, 5, 7, 18, 20], "span": [1, 3, 19], "spanish": 11, "spec": [11, 14], "specfil": [3, 8], "special": [4, 5, 13, 20], "specif": [2, 3, 4, 12, 18], "specifi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 16, 20], "speed": [0, 3], "spheric": 5, "spider": 3, "splai": [1, 3, 4, 5, 18, 20], "split": 5, "spot": 14, "spread": 5, "spreadsheet": 5, "spur": 19, "squar": 5, "src": 12, "srtm": 10, "srv": [1, 3, 5, 20], "stabil": 12, "standard": [1, 5, 12, 13, 19], "standardis": [5, 12], "start": [3, 4, 5, 8, 10, 13, 17, 18, 19, 20], "state": 5, "static": 13, "station": [0, 1, 2, 3, 4, 6, 8, 11, 12, 13, 14, 18, 19, 20], "statist": [1, 3, 10, 19], "std": 5, "stdout": [3, 16], "step": [5, 9], "stick": 5, "still": [1, 3, 4, 5, 11, 14, 20], "stop": [1, 3, 5, 19], "store": [4, 5], "string": [3, 4, 5, 18, 20], "strongli": 5, "structur": [3, 4, 18], "style": [5, 10, 19], "style_div": 4, "sub": [0, 3, 7, 8, 11, 18], "subject": [4, 10], "subsequ": [5, 12], "subset": 12, "subtract": 5, "succe": 20, "success": [0, 1, 3], "successfulli": [1, 3, 20], "suffic": [3, 8], "suffix": [3, 5, 18], "suggest": [0, 3, 4, 5, 10, 14, 15], "suit": [3, 5, 17], "suitabl": [5, 10, 11, 19], "sum": [1, 3], "summari": [1, 3], "super": 14, "supersed": 5, "suppli": [11, 19], "support": [1, 2, 3, 5, 9, 10, 11, 12, 13, 14, 17, 18, 20], "suppos": [10, 19], "suppress": [5, 20], "sure": [5, 19, 20], "surfac": [0, 1, 3, 4, 5, 8, 13, 18, 20], "surface1": 19, "surface2": 19, "survei": [0, 1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 20], "survex": [0, 1, 2, 4, 6, 7, 8, 9, 10, 12, 15, 16, 18, 19, 20], "survexlang": 11, "survexport": [4, 11, 13, 17], "survey1": 4, "survey2": 4, "survey_data_fil": [1, 3], "survey_fil": [0, 3], "surveyor": 13, "surveyor87": 5, "suspect": [1, 3, 19, 20], "sv10": [3, 18], "sv11": [3, 18], "sv8": [3, 18], "sv8a": [3, 18], "sv8b": [3, 18], "sv8c": [3, 18], "sv9": [3, 18], "svg": [3, 18], "svx": [1, 3, 4, 5, 10, 11, 13], "svxfilewhichusesce1": 4, "sw": [0, 3], "swiss": 11, "switch": [3, 8], "synonym": 5, "synopsi": 5, "syntact": 5, "syntax": [5, 17], "system": [3, 4, 5, 8, 11, 12, 19], "systemat": 20, "t": [0, 1, 2, 3, 4, 5, 7, 10, 11, 12, 14, 18, 19, 20], "tab": [5, 11, 20], "tabl": 5, "tablet": 14, "tag": 19, "take": [0, 3, 5, 10, 12, 19], "taken": [5, 19], "tape": [1, 3, 5, 10, 19, 20], "tar": 11, "target": 5, "task": 11, "tcsh": 11, "team": [4, 10, 13, 19], "techniqu": 19, "tell": [1, 3, 5, 19], "templat": 10, "tend": [1, 3], "term": 5, "termin": 5, "terminologi": 13, "terrain": [5, 10], "test": [3, 7, 12, 14, 15, 20], "text": [1, 3, 5, 10, 12, 14, 17, 18, 20], "text_height": [3, 18], "textual": [3, 7], "thailand": 20, "than": [1, 3, 4, 5, 6, 11, 12, 13, 14, 19, 20], "thei": [0, 1, 3, 4, 5, 10, 12, 18, 19, 20], "them": [1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 19, 20], "theodolit": 13, "therion": 5, "thi": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 18, 19, 20], "thigh": 10, "thing": [0, 3, 5, 10, 14, 19, 20], "those": [3, 5, 18, 19], "though": [3, 4, 5, 18, 20], "three": [1, 3, 5, 20], "threshold": [3, 5, 6, 20], "through": [0, 3, 11, 19], "throughout": 14, "thrun": [12, 13], "thu": 19, "tie": 5, "tight": 5, "tilt": [0, 3, 18], "time": [1, 3, 4, 5, 7, 14], "timestamp": 2, "timezon": [2, 5], "tip": 10, "titl": [10, 13, 19], "tmerc": 5, "tocount": 5, "todai": 5, "todepth": 5, "togeth": [4, 13], "toggl": [0, 3], "tolow": 5, "tomorrow": 5, "too": [4, 5, 10, 11, 19, 20], "took": [1, 3], "tool": [1, 3, 4, 5, 7, 10, 11, 18], "toolbar": [1, 3], "top": [3, 11, 16], "topo": 5, "topofil": 5, "topographi": 13, "toporobot": 5, "total": [1, 3, 20], "tote": 5, "touch": 2, "toupper": 5, "toward": [9, 20], "towgs84": 5, "trail": 5, "transcript": 5, "translat": [3, 4, 5, 11, 12, 15, 18], "transpar": [0, 3, 8, 10], "travers": [1, 3, 5, 7, 11, 12, 20], "treat": [4, 5, 19, 20], "tree": [4, 12], "trial": [3, 8], "triassic": [5, 10], "trigger": [1, 3, 5, 20], "trip": [4, 5, 13, 14, 19], "tripl": 5, "true": [5, 10], "truncat": 13, "try": [0, 1, 2, 3, 5, 11, 15, 20], "tube": [4, 5], "turn": [0, 1, 3, 4, 5, 19], "twice": 5, "two": [1, 2, 3, 4, 5, 7, 10, 11, 14, 17, 20], "type": [1, 2, 3, 5, 11, 12, 19, 20], "typeab": 20, "typevb": 20, "typic": [1, 3, 4, 5, 10, 19], "typo": 5, "u": [1, 3, 4, 5, 10, 11, 14, 15, 19, 20], "uk": [5, 11, 19, 20], "una": [0, 2, 3, 6, 7], "unadjust": 2, "unalia": 5, "unclear": [1, 3, 12], "unconnect": 5, "under": 14, "underground": [2, 3, 4, 8, 14, 18, 19], "understand": [0, 1, 3, 4, 5, 11, 14], "underwat": [5, 19], "undocu": 20, "unexplor": 5, "unfortun": 20, "unhelp": 5, "uninstal": 11, "uniqu": [4, 5, 19], "unit": [0, 3, 13, 20], "unix": [3, 9, 13, 14], "unknown": [4, 20], "unless": [1, 3, 5, 20], "unlik": [2, 4, 5, 19, 20], "unpack": 11, "unprefix": 20, "unprocess": [0, 1, 3, 4, 10, 20], "unspecifi": 5, "unsurvei": 5, "until": 5, "unus": 20, "unusu": 5, "up": [0, 2, 3, 4, 5, 10, 11, 18, 19, 20], "updat": [0, 3, 5, 10, 12], "upgrad": [5, 11], "upon": 5, "upper": [0, 3, 5, 20], "upsid": [0, 3], "upward": 5, "upwardli": 12, "url": 4, "us": [0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14, 18, 19, 20], "usabl": [5, 14], "usag": 5, "usefulli": 12, "user": [0, 1, 2, 3, 4, 5, 11, 14, 15, 18, 20], "usr": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "usual": [1, 3, 4, 5, 8, 12, 17, 20], "utc": [2, 5], "utf": 5, "util": 9, "utilis": 5, "utm": [4, 5, 20], "utm30": 5, "utm60": 5, "uv": 20, "uvh": 20, "uvv": 20, "v": [0, 1, 3, 16, 19], "valid": 5, "valu": [1, 3, 4, 5, 11, 19, 20], "vari": [0, 3, 5, 19], "variabl": 11, "varianc": 20, "variant": [2, 5], "variou": [1, 3, 5, 10, 12, 19], "ve": [2, 3, 4, 5, 18, 20], "vector": 20, "veri": [3, 4, 5, 8, 10, 11, 12, 14, 19], "version": [0, 1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 17, 18, 19], "vertic": [0, 1, 3, 5, 11, 16, 19, 20], "via": [4, 5, 11, 12], "view": [0, 1, 2, 3, 5, 8, 10, 11, 17, 18], "viewer": [11, 14], "viewpoint": [0, 3], "visit": 15, "visualis": [3, 8], "vunit": 5, "w": [0, 1, 3, 5], "wa": [1, 2, 3, 4, 5, 11, 12, 14, 18, 19, 20], "wai": [0, 3, 4, 5, 8, 10, 11, 12, 14, 15, 19, 20], "wall": [1, 3, 4, 5, 10, 13, 18], "walls32": 20, "wallsdata": 5, "want": [1, 2, 3, 4, 5, 7, 10, 11, 12, 19, 20], "warn": [0, 1, 3, 4, 5, 13, 20], "wasn": 2, "water": [5, 13], "we": [0, 1, 2, 3, 4, 5, 9, 10, 12, 14, 15, 18, 19, 20], "web": [5, 9], "websit": [5, 11], "welcom": [1, 3, 11, 15], "well": [2, 10, 14, 19], "were": [1, 3, 4, 5, 10, 18, 19], "weren": 5, "west": [1, 3, 5], "westernmost": [1, 3], "wgs84": [5, 20], "what": [0, 1, 2, 3, 4, 5, 10, 11, 14, 19, 20], "whatev": 5, "when": [0, 1, 2, 3, 4, 5, 10, 11, 14], "where": [0, 1, 2, 3, 4, 5, 10, 14, 19, 20], "wherea": [5, 12], "whether": 4, "which": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 19, 20], "whichev": 5, "while": [0, 3, 4, 5, 11, 18, 20], "who": [3, 11], "whole": [4, 5, 20], "why": 5, "wide": [5, 12], "wiki": 10, "window": [0, 1, 3, 9, 13, 14], "wish": 5, "within": [0, 1, 3, 4, 5, 19], "without": [3, 4, 5, 10, 20], "wizard": 11, "won": [4, 5, 11, 14, 20], "wonder": 5, "wookei": [5, 13], "word": [3, 5, 14, 20], "work": [0, 1, 3, 4, 5, 6, 7, 11, 14, 20], "world": [5, 10, 14, 20], "worri": [5, 14], "wors": 5, "worst": [1, 3], "worth": 20, "would": [3, 4, 5, 8, 12], "wpj": [1, 3, 5, 20], "wrap": [4, 19], "write": [3, 4, 5, 7, 12], "written": [1, 2, 3, 5, 10, 11, 12], "www": 19, "wxwidget": 9, "x": [0, 3, 5, 6, 18, 20], "x09x20": 5, "x0ax0d": 5, "x20": 5, "x_0": 5, "xx1": 4, "xyz": [2, 3, 18], "y": [3, 5, 6, 18], "y_0": 5, "yard": 5, "year": [2, 5, 20], "year1": 5, "year2": 5, "yet": [5, 19], "you": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 18, 19, 20], "your": [0, 1, 3, 5, 10, 13, 15, 19, 20], "yy": 20, "yyyi": 20, "z": [0, 3, 5, 6, 18], "zero": [4, 5, 20], "zeroerror": 5, "zh_cn": 11, "zone": [4, 5, 20], "zoom": [0, 3, 14], "zz6": 5}, "titles": ["aven", "cavern", "Bob Thrun\u2019s CMAP", "Survex Programs", "Larry Fish\u2019s Compass", "Survex data files", "diffpos", "dump3d", "extend", "Future Developments", "General: How do I?", "Getting Started", "Using the img library", "Survex 1.4.17 Manual", "Introduction", "Mailing List", "sorterr", "survex", "survexport", ".svx Cookbook", "David McKenzie\u2019s Walls"], "titleterms": {"": [2, 4, 20], "1": 13, "17": 13, "4": 13, "On": [0, 3], "about": 14, "accuraci": [5, 19], "across": 19, "add": 10, "alia": 5, "also": 17, "an": 10, "anonym": 5, "api": 12, "aven": [0, 3], "bcra": 19, "begin": 5, "bob": 2, "c": 5, "calibr": 5, "cartesian": 5, "case": 5, "cavern": [1, 3, 5], "chang": 19, "charact": 19, "clp": 4, "cmap": 2, "code": 12, "command": [3, 5], "compass": 4, "configur": 11, "control": [0, 3, 10], "cookbook": 19, "copyright": 5, "creat": 10, "dat": 4, "data": [5, 10, 19], "date": 5, "david": 20, "declin": 5, "default": 5, "descript": [0, 1, 3, 6, 7, 8, 16, 17, 18], "develop": 9, "diffpo": [3, 6], "dive": 19, "do": 10, "dump3d": [3, 7], "dxf": [3, 18], "elev": 10, "end": 5, "entranc": 5, "equat": 5, "error": [1, 3, 10], "export": [4, 5], "extend": [3, 8, 10], "field": 5, "file": 5, "filenam": 3, "fish": 4, "fix": [5, 10], "flag": 5, "format": [3, 18], "from": 10, "futur": 9, "gener": 10, "get": 11, "gone": 10, "grade": 19, "grid": 10, "have": 10, "how": 10, "i": 10, "img": 12, "import": 10, "includ": 5, "indic": [0, 3], "infer": 5, "instal": 11, "instrument": 5, "introduct": 14, "join": 19, "keyboard": [0, 3], "languag": 11, "larri": 4, "leg": 19, "librari": 12, "line": 3, "linux": 11, "list": 15, "long": 3, "maco": 11, "mail": 15, "mak": 4, "manual": [13, 14], "mckenzi": 20, "messag": [1, 3], "microsoft": 11, "more": 10, "mous": [0, 3], "my": 10, "name": 5, "new": 10, "numer": 5, "obtain": 11, "off": 10, "one": 10, "option": [0, 1, 3, 6, 7, 16, 17, 18], "order": 19, "organis": 10, "other": [10, 11], "output": [1, 3], "overlai": 10, "overrid": 19, "own": 12, "per": 10, "plf": 4, "plt": 4, "plumb": 19, "po": [3, 18], "point": 10, "prefer": 11, "prefix": 5, "program": [3, 10], "radioloc": 19, "read": [4, 5, 19], "ref": 5, "refer": 3, "repeat": 19, "requir": 5, "screen": [0, 3, 10], "sd": 5, "see": [10, 17], "select": 11, "set": 5, "short": 3, "solv": 5, "sorterr": [3, 16], "special": 19, "specifi": 19, "standard": 3, "start": 11, "static": 19, "station": 5, "support": 4, "surfac": [10, 19], "survei": [5, 10, 19], "survex": [3, 5, 11, 13, 14, 17], "survexport": [3, 18], "svx": 19, "synopsi": [0, 1, 3, 6, 7, 8, 16, 18], "team": 5, "terminologi": 14, "than": 10, "theodolit": 19, "thi": 14, "thrun": 2, "titl": 5, "togeth": 19, "topographi": 10, "trip": 10, "truncat": 5, "unit": 5, "unix": 11, "us": [11, 12], "version": 11, "wall": 20, "warn": 10, "water": 19, "window": 11, "your": [11, 12]}})
\ No newline at end of file
+Search.setIndex({"alltitles":{".svx Cookbook":[[19,null]],"ALIAS":[[5,"alias"]],"API":[[12,"api"]],"About Survex":[[14,"about-survex"]],"About this Manual":[[14,"about-this-manual"]],"Accuracy":[[5,"accuracy"]],"Add surface topography":[[10,"add-surface-topography"]],"Anonymous Stations":[[5,"anonymous-stations"]],"BEGIN":[[5,"begin"]],"Bob Thrun\u2019s CMAP":[[2,null]],"CALIBRATE":[[5,"calibrate"]],"CARTESIAN":[[5,"cartesian"]],"CASE":[[5,"case"]],"COPYRIGHT":[[5,"copyright"]],"CS":[[5,"cs"]],"Cavern Commands":[[5,"cavern-commands"]],"Change special characters":[[19,"change-special-characters"]],"Command Reference":[[3,"command-reference"]],"Compass .CLP support":[[4,"compass-clp-support"]],"Compass .DAT support":[[4,"compass-dat-support"]],"Compass .MAK support":[[4,"compass-mak-support"]],"Compass .PLF/.PLT support":[[4,"compass-plf-plt-support"]],"Configuration":[[11,"configuration"]],"Create a new survey":[[10,"create-a-new-survey"]],"Create an Extended Elevation":[[10,"create-an-extended-elevation"]],"DATA":[[5,"data"]],"DATE":[[5,"date"]],"DECLINATION":[[5,"declination"]],"DEFAULT":[[5,"default"]],"DESCRIPTION":[[0,"description"],[1,"description"],[3,"description"],[3,"id2"],[3,"id6"],[3,"id10"],[3,"id14"],[3,"id17"],[3,"id21"],[6,"description"],[7,"description"],[8,"description"],[16,"description"],[17,"description"],[18,"description"]],"DXF Format":[[3,"dxf-format"],[18,"dxf-format"]],"David McKenzie\u2019s Walls":[[20,null]],"Diving Data":[[19,"diving-data"]],"END":[[5,"end"]],"ENTRANCE":[[5,"entrance"]],"EQUATE":[[5,"equate"]],"EXPORT":[[5,"export"]],"Error Messages":[[1,"error-messages"],[3,"error-messages"]],"Exporting Compass .PLT":[[4,"exporting-compass-plt"]],"FIX":[[5,"fix"]],"FLAGS":[[5,"flags"]],"Filenames on the Command Line":[[3,"filenames-on-the-command-line"]],"Fixed Points (Control Points)":[[10,"fixed-points-control-points"]],"Future Developments":[[9,null]],"General: How do I?":[[10,null]],"Getting Started":[[11,null]],"INCLUDE":[[5,"include"]],"INFER":[[5,"infer"]],"INSTRUMENT":[[5,"instrument"]],"Import data from other programs":[[10,"import-data-from-other-programs"]],"Installing Survex":[[11,"installing-survex"]],"Introduction":[[14,null]],"Join surveys together":[[19,"join-surveys-together"]],"Keyboard Control":[[0,"keyboard-control"],[3,"keyboard-control"]],"Larry Fish\u2019s Compass":[[4,null]],"Legs across static water":[[19,"legs-across-static-water"]],"Linux":[[11,"linux"]],"Mailing List":[[15,null]],"Microsoft Windows":[[11,"microsoft-windows"]],"More than one survey per trip":[[10,"more-than-one-survey-per-trip"]],"Mouse Control":[[0,"mouse-control"],[3,"mouse-control"]],"Numeric fields":[[5,"numeric-fields"]],"OPTIONS":[[0,"options"],[1,"options"],[3,"options"],[3,"id3"],[3,"id7"],[3,"id11"],[3,"id18"],[3,"id22"],[6,"options"],[7,"options"],[16,"options"],[17,"options"],[18,"options"]],"OUTPUT":[[1,"output"],[3,"output"]],"Obtaining Survex":[[11,"obtaining-survex"]],"On-Screen Indicators":[[0,"on-screen-indicators"],[3,"on-screen-indicators"]],"Organise my surveys":[[10,"organise-my-surveys"]],"Other versions of UNIX":[[11,"other-versions-of-unix"]],"Overlay a grid":[[10,"overlay-a-grid"]],"Override accuracy for a leg":[[19,"override-accuracy-for-a-leg"]],"POS Format":[[3,"pos-format"],[18,"pos-format"]],"PREFIX":[[5,"prefix"]],"Plumbs":[[19,"plumbs"]],"REF":[[5,"ref"]],"REQUIRE":[[5,"require"]],"Radiolocation Data":[[19,"radiolocation-data"]],"Reading Compass .PLF/.PLT":[[4,"reading-compass-plf-plt"]],"Reading order":[[19,"reading-order"]],"Readings":[[5,"readings"]],"Repeated Readings":[[19,"repeated-readings"]],"SD":[[5,"sd"]],"SEE ALSO":[[17,"see-also"]],"SET":[[5,"set"]],"SOLVE":[[5,"solve"]],"SYNOPSIS":[[0,"synopsis"],[1,"synopsis"],[3,"synopsis"],[3,"id1"],[3,"id5"],[3,"id9"],[3,"id13"],[3,"id16"],[3,"id20"],[6,"synopsis"],[7,"synopsis"],[8,"synopsis"],[16,"synopsis"],[18,"synopsis"]],"See errors and warnings that have gone off the screen":[[10,"see-errors-and-warnings-that-have-gone-off-the-screen"]],"Selecting Your Preferred Language":[[11,"selecting-your-preferred-language"]],"Short and Long Options":[[3,"short-and-long-options"]],"Specify a BCRA grade":[[19,"specify-a-bcra-grade"]],"Standard Options":[[3,"standard-options"]],"Surface survey data":[[19,"surface-survey-data"]],"Survex 1.4.22 Manual":[[13,null]],"Survex Programs":[[3,null]],"Survex data files":[[5,null]],"Survey Station Names":[[5,"survey-station-names"]],"TEAM":[[5,"team"]],"TITLE":[[5,"title"]],"TRUNCATE":[[5,"truncate"]],"Terminology":[[14,"terminology"]],"Theodolite data":[[19,"theodolite-data"]],"UNITS":[[5,"units"]],"Using Survex":[[11,"using-survex"]],"Using img in your own code":[[12,"using-img-in-your-own-code"]],"Using the img library":[[12,null]],"aven":[[0,null],[3,"aven"]],"cavern":[[1,null],[3,"cavern"]],"diffpos":[[3,"diffpos"],[6,null]],"dump3d":[[3,"dump3d"],[7,null]],"extend":[[3,"extend"],[8,null]],"macOS":[[11,"macos"]],"sorterr":[[3,"sorterr"],[16,null]],"survex":[[17,null]],"survexport":[[3,"survexport"],[18,null]]},"docnames":["aven","cavern","cmap","cmdline","compass","datafile","diffpos","dump3d","extend","future","genhowto","getstart","img","index","intro","maillist","sorterr","survex","survexport","svxhowto","walls"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["aven.rst","cavern.rst","cmap.rst","cmdline.rst","compass.rst","datafile.rst","diffpos.rst","dump3d.rst","extend.rst","future.rst","genhowto.rst","getstart.rst","img.rst","index.rst","intro.rst","maillist.rst","sorterr.rst","survex.rst","survexport.rst","svxhowto.rst","walls.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"01m":[3,6],"0e":10,"0n":10,"0s":10,"0w":10,"1000m":20,"100g":[3,18],"100m":10,"10cm":5,"13d20":5,"161b":19,"161c":19,"161d":10,"1997data":5,"1998data":5,"19xx":[5,20],"1e":10,"1mm":[4,20],"1n":10,"1s":10,"1sd":5,"1st":[2,4],"1w":10,"20cm":[5,10],"20m":19,"2a":5,"2e":10,"2n":10,"2s":10,"2sd":5,"2w":10,"2yrgest":5,"3048m":5,"30cm":5,"30m":10,"33n":5,"33s":5,"34m":5,"350km":14,"3d":[0,1,3,4,5,6,7,8,11,12,18,20],"3d_version":[1,3],"3dtopo":[3,4,18],"3e":10,"3n":10,"3s":10,"3w":10,"40_entrance_tag":[3,18],"40b_entrance_tag":[3,18],"45d":[3,18],"4e":10,"4n":10,"4s":10,"4w":10,"500mx500m":10,"50g":[3,18],"50m":19,"5e":10,"5n":10,"5s":10,"5w":10,"6_1":5,"6_2":5,"84m":5,"8m":19,"90d":[3,18],"A":[3,4,5,11,20],"About":13,"After":5,"All":[0,3,5,10,11,17,19],"An":[5,20],"And":[0,3,15],"As":[0,3,20],"At":5,"Both":[5,20],"But":5,"By":[0,1,3,5,11,16],"DOWN":[5,10,19],"Each":[1,3,5,19],"FROM":5,"For":[0,1,3,5,7,8,10,11,19,20],"From":[4,5],"Here":[4,5,10,11,19],"How":[1,3,13],"I":[5,12,13],"If":[0,1,2,3,4,5,7,8,10,11,12,14,15,19,20],"In":[0,1,3,4,5,12,18,19,20],"It":[0,1,2,3,4,5,11,12,14,19,20],"Its":5,"More":[3,8,9,13],"Most":[5,11,19],"No":5,"On":5,"Or":[4,15],"Other":[13,20],"Our":3,"Over":19,"So":[5,10],"Some":[4,10,20],"Such":5,"TO":5,"The":[0,1,2,3,4,5,7,8,9,10,11,12,14,15,17,18,19,20],"Their":5,"Then":[4,5],"There":[0,1,2,3,5,10,15],"These":[1,3,4,5,17,20],"They":[4,5],"This":[0,1,2,3,4,5,8,10,11,13,14,18,19,20],"To":[4,5,11,19,20],"UP":[5,19],"UPS":20,"Up":[3,5,18],"We":[0,1,2,3,5,14,15,19,20],"When":[5,10],"While":[3,18],"With":5,"YOU":20,"You":[0,1,3,4,5,10,11,19],"Your":13,"_":[4,5],"__cplusplus":12,"__stdc_version__":12,"_extend":[3,8],"a123":20,"a16":4,"a22":4,"aa06":5,"aa07":5,"abc123":20,"abi":12,"abil":11,"abl":[1,2,3,4,5,10,12,19],"abov":[3,4,5,10,18,20],"absolut":5,"acceler":[0,3],"accept":[5,19,20],"access":[3,10,11,12,14,19],"accompani":2,"accomplish":[11,19,20],"accord":5,"account":[5,11,20],"accur":[5,19],"accuraci":13,"achiev":[4,10,14],"across":[4,5,13,20],"act":2,"action":[0,3,11],"activ":[3,4,5,14,18],"actual":[1,3,4,5,10,19,20],"ad":20,"add":[1,2,3,4,5,8,11,13,20],"addit":[4,5],"address":5,"adj":[0,2,3,6,7],"adjac":19,"adjust":[1,2,3,4,5],"admin":11,"administr":11,"adopt":5,"adv":20,"advanc":11,"advantag":[3,5,12],"affect":[0,1,3,5,20],"ago":2,"aid":10,"aim":[3,14,20],"akin":5,"algorithm":19,"alia":[13,20],"alias":5,"align":5,"allow":[0,1,3,4,5,7,10,11,12,14,19,20],"almost":5,"along":[0,1,3,4,5],"alphabet":5,"alphanumer":5,"alreadi":[5,11,14,20],"also":[0,1,3,4,5,6,7,8,10,11,12,14,18,19,20],"alter":5,"altern":[5,19],"although":19,"altimet":5,"altitud":5,"altrout":10,"alway":[0,1,3,5,10,18],"ambigu":5,"american":[4,5],"amount":20,"analog":4,"andi":20,"angl":[0,3,4,5,19,20],"ani":[0,1,2,3,4,5,6,7,8,10,11,12,14,19,20],"anim":[0,3],"anonym":[4,13,20],"anoth":[1,3,4,5,10,12,19],"anthoni":[5,10],"anyon":2,"anyth":[5,12,20],"anywher":[5,12],"apart":[10,19],"api":13,"apostroph":[0,3],"appar":[0,3,19,20],"appear":[2,5],"append":3,"appli":[1,3,4,5,19,20],"applic":[0,3,12],"approach":[3,8,12,19],"appropri":[3,4,5,19,20],"approxim":[1,3,5,10,20],"arbitrari":[5,20],"arbitrarili":[3,5,8],"arc":10,"arcgi":5,"archaic":5,"archiv":20,"area":[4,5,14,15],"aren":[3,4,5],"arg":14,"argument":[5,20],"around":[0,3,5,14,20],"arrang":5,"articl":5,"ascii":[4,5],"asid":20,"ask":[4,12,20],"assess":5,"assist":5,"associ":[1,3,11,19],"assum":[1,2,3,5,19,20],"assumpt":4,"asterisk":5,"attach":[1,3,8,19,20],"attempt":[4,5],"austria":[5,14,19],"author":[3,4,15,18],"auto":[0,3,5],"automat":[0,3,5,11,14,19,20],"auxiliari":[1,3],"avail":[1,3,5,10,11,12,17,19],"aven":[1,4,5,8,9,10,11,13,17,18,19,20],"averag":[5,19,20],"avoid":[0,3,4,5,19],"awar":[5,12,14],"away":5,"axe":5,"axi":[0,3,5],"azimuth":4,"b":[0,3,5,8],"b14":4,"back":[0,3,5,10],"backbear":5,"backclino":5,"backcompass":5,"backgradi":5,"backlength":5,"backsight":[5,20],"backtap":5,"backward":19,"bad":[1,3],"band":5,"bar":[0,3],"base":[1,2,3,4,5,8,9,12,20],"basenam":[1,3],"bash":11,"basic":10,"bat":20,"bcra":[5,13],"bcra3":5,"bcra5":5,"bear":[3,5,18],"becam":4,"becaus":[0,1,2,3,4,5,19,20],"becom":[4,20],"beehiv":5,"befor":[1,2,3,5,8,12,18,20],"begin":[4,10,13,19],"behaviour":20,"behind":[5,10],"benchmark":5,"benefit":[3,5,8,12],"bessel":5,"best":[5,11,14,15,19],"bett":[5,13,19],"better":[0,3,5,14,15],"beyond":[0,3],"bg":11,"big":20,"binari":[1,3],"bing":5,"bit":[10,11,12,20],"black":19,"blank":5,"block":[5,19],"blue":5,"blunder":[1,3,5],"bob":[5,12,13],"bobsbit":5,"bodi":19,"bogus":5,"bolt":19,"bosch":5,"bottom":[0,3],"bottomless":10,"bought":14,"boulder":5,"bound":[0,3,5],"boundari":[4,19],"box":[0,3,5,20],"bracket":5,"branch":5,"brazilian":11,"break":[3,5,8],"british":14,"broader":2,"broken":[3,8,10,20],"btoc":19,"budget":14,"bug":[2,4,5,20],"buggi":[2,5],"build":[11,12,20],"built":[9,11],"bulgarian":11,"bullet":4,"button":[0,3,20],"byte":4,"c":[0,3,4,5,12,13,20],"c99":12,"ca":11,"cad":11,"cairn":10,"calcul":[4,5,20],"calibr":[1,3,10,13,19],"call":[3,8,11,12,19],"came":20,"cameroon":5,"can":[0,1,2,3,4,5,6,7,8,9,10,11,12,14,17,18,19,20],"capabl":[5,11,14],"card":11,"cardin":5,"care":5,"carri":[4,5],"cartesian":13,"carto":[3,4,18],"cascad":[1,3],"case":[1,3,4,10,13,18,19,20],"catalan":11,"catch":5,"cater":19,"caus":[1,3,4,20],"cave":[0,3,4,5,8,10,13,14,17,19,20],"cave1":19,"cave2":19,"caveat":5,"cavern":[0,4,8,10,11,13,17,20],"ce1":4,"ceil":5,"centr":[0,3,5,18],"central":2,"centrelin":5,"centuri":4,"certain":20,"chamber":5,"chang":[0,1,3,4,5,8,11,13,14],"chao":[10,19],"char":5,"charact":[2,4,5,10,13,20],"check":[5,19,20],"china":14,"chines":11,"choic":[5,19],"choos":[0,3,5,11,20],"chosen":[5,20],"chosspot":5,"circl":5,"claim":12,"clamp":[3,18],"clarifi":12,"clariti":5,"clear":[1,3,5,14],"clearer":15,"click":[0,3,11,20],"clickabl":[0,1,3],"clino":[0,1,3,5,10,19,20],"clock":2,"close":[4,5,19,20],"closur":[1,2,3,4,5,19,20],"clp":[1,3,13],"clpsx":20,"cmap":[0,3,5,6,7,8,10,12,13,18],"cmp":[0,3],"co":5,"code":[4,5,11,13,15,20],"collat":5,"collect":2,"collid":[4,20],"colon":20,"colour":[0,1,3,20],"column":2,"com":[5,11,15,17],"combin":[4,5,10,20],"come":[5,11,20],"comma":[5,20],"command":[1,4,8,10,11,13,17,19,20],"comment":[3,4,5,8,10,12,15],"common":[1,2,3,4,5,11,19,20],"compar":[1,3,5,11,20],"compass":[0,1,3,5,6,7,8,10,11,12,13,18,19,20],"compassdata":5,"compassfil":4,"compassproject":4,"compat":[5,12],"compil":[1,3,11,12],"complaint":20,"complet":[3,5,14,17,18,19,20],"complex":[3,4,8,12,14],"complic":[3,8,19],"compon":[1,3,5,7,20],"comprehens":17,"comput":[2,4,5,11,14],"concept":5,"condit":20,"confid":5,"configur":[3,13,18],"conform":5,"confus":5,"connect":[1,3,5,19,20],"connected":19,"conserv":12,"consid":[1,3],"consist":[5,20],"contact":[11,14,15],"contain":[1,2,3,4,5,10,11,18,19,20],"content":5,"context":5,"continent":5,"continu":[3,5,8,9,14],"contour":19,"contribut":15,"control":[4,11,12,13],"conveni":[3,7,12],"convent":[5,19,20],"converg":[4,5,20],"convers":[2,5],"convert":[3,4,5,7,10,11,14,19],"cookbook":13,"coord":5,"coordin":[2,3,4,5,7,11,18],"cope":4,"copi":[5,11,12],"copyright":13,"corner":[0,3],"correct":[1,3,4,5,10,18,19,20],"correspond":[0,3,4,5,20],"count":[1,3,5,20],"counter":[4,5],"cov":5,"covari":5,"cover":[5,11],"cp":19,"cp10":19,"cpoint10":19,"cpu":[1,3],"creat":[1,3,4,5,11,13,18],"criteria":[0,3],"criterion":[3,16],"cross":[0,3,5,18],"crude":[3,18],"cs":[11,13],"csh":11,"csv":[3,18],"ct":20,"ctrl":[0,3,5],"cucc":[5,10,14,19],"current":[0,1,2,3,4,5,10,11,12,18,19,20],"cursor":[0,3],"custom":5,"cut":[3,7],"cylpolar":[5,19],"czech":11,"czechoslovak":5,"d":[3,4,7,15,18,19,20],"da":20,"dash":[3,17,18,19],"dat":[1,3,5,13],"data":[0,1,2,3,4,7,8,11,12,13,14,17,20],"dataset":[5,10,20],"date":[3,4,7,10,11,13,19,20],"date1":5,"date2":5,"datfilewhichusesce1":4,"datum":[4,5,20],"dav":20,"david":13,"day":[2,5,10,11],"dd":20,"de":11,"de_ch":11,"dead":[1,3],"deadend":[3,8],"deal":[5,10],"debian":12,"debug":[3,7,11],"decid":5,"decim":5,"decis":12,"declin":[4,13,20],"decoupl":20,"deep":[3,8],"deep_pit":[3,8],"deep_pit_extend":[3,8],"default":[0,1,2,3,4,6,7,11,12,13,16,18,19,20],"defin":[4,5,12,19,20],"definit":[5,20],"deg":5,"degre":[0,3,5,19,20],"delet":[0,3],"deliber":[0,3,19],"delight":15,"delimit":20,"delug":[1,3],"demonstr":[19,20],"depend":[4,5,11],"deprec":5,"depth":[0,3,4,5,19,20],"depthchang":5,"describ":[3,4,5,14,17],"descript":[5,10,11],"desktop":11,"destruct":3,"detail":[1,3,5,10,11,15,19,20],"detect":4,"determin":[5,20],"develop":[3,4,13,14,15,18,20],"deviat":[1,3,5,19],"devic":5,"diagnost":5,"dialog":[0,3,20],"didn":[1,3,4,5,20],"die":[3,4,18],"differ":[1,3,4,5,6,7,10,12,19,20],"diffpo":[4,11,13,17],"digit":[2,4,5,20],"digitis":5,"dimens":[4,5],"direct":[0,3,5,8,10,12,14,20],"directori":[1,3,5],"disabl":[0,3],"disallow":4,"discern":20,"discov":5,"discuss":5,"disk":20,"display":[0,1,3,6,7,10,16,17,18,19],"distanc":[3,4,5,6],"distinguish":19,"disto":5,"distort":5,"distox2":5,"distribut":[4,5,11,19],"dive":[1,3,5,13,20],"diver":[5,19],"divid":[1,3,5,19],"doc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"document":[2,4,5,10,11,12,14,15,19,20],"doe":[2,3,5,20],"doesn":[0,1,3,4,5,11,14,20],"dog":5,"don":[2,3,4,5,7,11,12,14,19,20],"donat":14,"done":[5,10,11,19],"dos":5,"dot":[3,18],"doubl":[0,3,5,11],"downgrad":20,"download":[11,15],"downsid":5,"draenen":14,"drag":[0,3],"draw":[4,12],"drawback":4,"drawn":[4,5],"dreamtim":5,"drew":5,"drip":19,"driver":[9,11],"drop":11,"dtime":5,"due":[1,2,3,5,20],"dummi":[4,20],"dump":[3,7,11],"dump3d":[4,11,12,13,17],"duplic":[1,3,4,5,20],"dure":[0,1,3,4,5],"dx":5,"dxf":11,"dy":5,"dz":5,"e":[0,1,3,4,5,7,10,11,12,19,20],"earlier":[4,5,11],"earth":5,"easegil":14,"easi":[3,5,7,14,20],"easier":3,"easiest":[10,11],"easili":[4,9,10,19],"east":[0,1,3,5,18],"easternmost":[1,3],"ed":5,"edg":10,"edit":11,"editor":[1,3,5,10],"edm":5,"edward":20,"effect":[0,1,3,4,5,10,11,14,20],"effort":[12,20],"either":[1,3,5,19,20],"el":11,"elast":10,"eleft":[3,8],"element":5,"elev":[0,3,8,11,13,18],"elimin":5,"ellipsoid":5,"ellp":5,"els":[5,11,12],"embed":[5,20],"empti":[4,5,20],"en":11,"en_us":11,"enabl":[4,20],"encapsul":[3,18],"enclos":[3,5,19],"encod":[4,5],"encount":2,"encourag":[5,14],"end":[1,3,4,10,13,18,19,20],"enforc":20,"engin":[1,3],"english":11,"enough":[4,5,14],"ensur":[4,14],"enter":[5,19],"entir":[4,5,15,20],"entpitch":19,"entran":5,"entranc":[1,3,4,8,10,13,18,19,20],"entri":[3,4,5,7,11,16],"environ":11,"environment":11,"eol":5,"ep":[3,18],"epsg":[4,5,20],"equal":5,"equat":[1,3,4,10,13,19],"equival":[3,4,5,7,18,19],"eric":13,"eright":[3,8],"err":[1,3,5,11,16],"err_fil":[3,16],"error":[0,4,5,8,11,12,13,16,19,20],"es":11,"escap":4,"espec_fil":[3,8],"especi":5,"esri":5,"essenti":[4,5],"estim":5,"eswap":[3,8],"etc":[1,3,4,5,10,11,19,20],"etern":10,"eur79":5,"eur79z30":5,"europ":5,"even":[2,4,5,15,20],"event":5,"everi":[5,20],"everyon":14,"everyth":[0,3,5,10],"evolv":[9,12],"exact":[4,5,20],"exampl":[1,2,3,4,5,8,10,11,12,18,19,20],"exceed":4,"except":[5,20],"exclud":[1,3,4,20],"exe":20,"exist":[1,3,4,5,10,11,19,20],"exit":[0,1,3,6,7,16,17,18],"expect":[4,5,12,19],"expedit":14,"experi":11,"experiment":[0,3],"explain":[1,3,14],"explanatori":[1,3],"explicit":[3,4,5,8,10,19,20],"explo":5,"explor":5,"expo":5,"export":[3,10,11,13,18,19,20],"express":[4,5,20],"extend":[4,5,11,13,17],"extens":[1,2,3,4,5,8,10,11,14],"extern":5,"extra":[4,5],"extrem":[5,14],"f":[0,3,5],"facilit":5,"factor":[2,3,5,16],"fail":[4,5,20],"fair":[2,3,7,11,12],"fake":10,"fall":5,"fallen":10,"fan":[1,3],"far":4,"faraway":10,"fast":10,"faulti":5,"feasibl":14,"featur":[3,4,5,10,14,18,19,20],"feedback":[1,3,14],"feel":[0,3,15],"feet":[2,5],"field":[11,13],"figur":5,"file":[0,1,2,3,4,6,7,8,10,11,12,13,14,16,18,19,20],"file1":[3,4,6],"file2":[3,4,6],"file3":4,"filenam":[1,5,8,13,20],"filetyp":5,"fill":5,"filter":5,"final":20,"find":[2,5,11,12,14,15,20],"fine":11,"first":[1,2,3,4,5,8,10,11,12,20],"fisco":5,"fish":[12,13],"fit":4,"fix":[1,3,4,13,14,18,19,20],"fix_a":19,"flag":[1,2,3,4,8,13,19,20],"flapjack":5,"flat":[1,3,19],"flatten":10,"flexibl":[5,19],"float":20,"floor":5,"focus":20,"fold":[3,8,10],"folder":5,"follow":[0,1,3,4,5,7,10,11,14,17,19,20],"foot":5,"forc":[0,3,5],"foresight":[5,20],"form":[3,4,5,7,10,19],"formal":5,"format":[0,1,2,4,5,6,7,8,10,11,12,14,17,20],"forward":19,"fossil":5,"found":[1,3,5,11,17,20],"fr":11,"fraction":5,"framework":9,"free":[5,13,14,15],"freeli":11,"french":11,"frog":19,"fromcount":5,"fromdepth":5,"frustrat":[0,3],"ft":5,"full":[3,4,5,11,18],"fulli":[5,20],"function":[3,7,10,11,12],"futur":[5,10,13,14],"g":[0,1,3,4,5,7,10,11,12,18,19,20],"gaug":[4,5,19],"gcc":[1,3],"gebirg":5,"general":[1,3,5,12,13,19,20],"generat":[3,4,10,14,18],"genuin":20,"geodata":[5,20],"geoid":5,"geomagnet":5,"german":11,"get":[0,1,2,3,4,5,7,13,15,18,19],"give":[0,1,3,4,5,8,10,11,12,14,19,20],"given":[2,3,4,5,8,14,16,19,20],"gnu":17,"go":[0,1,3,5,8,10,14],"goe":[0,3,19],"gon":5,"gone":13,"good":[1,3,19],"googl":5,"gps":5,"gpx":[3,5,18],"grad":5,"grade":[5,13],"grade3":19,"gradient":[5,20],"granular":5,"graphic":11,"great":11,"greek":11,"grid":[0,3,4,5,13,18,20],"ground":[3,18],"group":[5,11,14],"guarante":12,"guess":5,"gui":9,"gz":11,"h":[1,3,5,12,16],"half":[2,3,8],"hand":[5,11],"handbook":5,"handheld":5,"handi":5,"handl":[0,2,3,4,5,8,19,20],"hang":20,"happen":[2,5],"hard":[14,20],"harder":5,"hardwar":[4,14],"hasn":11,"have_":12,"have_snprintf":12,"haven":[5,20],"head":19,"header":[3,12,18],"hear":15,"height":[1,3,5,18,20],"held":[0,3,5],"help":[0,1,3,4,5,6,7,10,11,14,15,16,17,18,20],"helper":5,"hemispher":5,"henc":5,"hex":[4,5],"hgt":10,"hidden":[5,20],"hide":[0,3],"hierarch":[5,19],"hierarchi":5,"high":19,"higher":19,"highest":[1,3,5,8,12,19],"highlight":[5,20],"histor":5,"hold":[0,3],"holder":5,"homebrew":11,"hong":14,"horizont":[0,1,3,5,11,16,19,20],"how_mani":[3,16],"howev":[4,5,11,20],"hpgl":[3,18],"htm":[5,19],"html":[5,15,17],"https":[5,11,15,17,19,20],"hu":11,"human":[3,8],"hungarian":11,"icon":[1,3,11],"id":11,"idea":10,"ident":[4,20],"identifi":[1,3,4,5],"ignor":[2,4,5,10,20],"ignoreal":[5,10],"igrf":[5,20],"igrf14":20,"ijtsk":5,"ijtsk03":5,"img":[3,4,6,7,13,18],"img_rewind":[3,7],"imgtest":12,"immedi":11,"implement":[2,4,5,20],"implicit":5,"import":[3,4,5,11,13,14,18],"imposs":5,"improv":[4,15,20],"inch":20,"inclin":20,"includ":[1,3,4,8,12,13,14,16,18,19,20],"inclus":2,"incomplet":20,"incorrect":[1,3,5,20],"increas":5,"increment":4,"indefinit":5,"indian":5,"indic":[1,4,5,12,19],"individu":[3,5,8,17],"indonesian":11,"inevit":20,"infer":[4,13,19,20],"info":[5,10,19],"inform":[0,1,3,4,5,6,7,9,11,14,16,17,18,19],"inher":5,"inherit":20,"initi":[11,20],"input":[3,5,6,8,16,18],"input_fil":[3,7,8,18],"insensit":[5,20],"insert":5,"insid":[5,11],"insist":5,"inspect":10,"inst":[5,19],"instal":13,"instanc":20,"instead":[0,1,3,4,5,7,19,20],"instruct":11,"instrument":[1,3,4,10,13,19,20],"integ":5,"integr":9,"intend":[3,4,5,14,18,19,20],"intent":[5,10,20],"interact":[3,5,8,20],"interest":[11,20],"interfac":[3,8,19],"interleav":5,"internal":5,"internat":[5,11],"internationalis":11,"interpret":[2,4,5,20],"interval":20,"interven":20,"intervent":[3,8],"introduc":5,"introduct":13,"invalid":[5,20],"invent":[4,5],"invert":[0,3],"investig":14,"involv":5,"io":5,"irrelev":5,"isn":[1,3,4,5,10,11,19,20],"iso":[3,5,7],"isol":20,"issu":[4,5,19,20],"italian":11,"item":[0,3,5,7,10,11,18],"januari":4,"jenni":19,"join":[3,5,8,13,14,15],"json":[3,18],"jtsk":5,"jtsk03":5,"juli":10,"jump":[1,3],"junction":[1,3,5,8],"june":5,"junk":20,"just":[0,1,2,3,4,5,10,11,14,19,20],"k":5,"kaninchenh\u00f6hl":5,"keen":2,"keep":[4,5,19],"kept":2,"key":[0,3,20],"keyboard":14,"keyword":[5,10],"kilometr":5,"kml":[3,5,18],"knot":5,"know":[4,5,10,14,15,19,20],"known":[2,4,5,19,20],"kt114_96":5,"l":[0,3,4,7,16,20],"label":[0,1,3,18],"lack":[3,4],"land":5,"landgraf":13,"lang":11,"languag":[3,12,13,15,18],"larg":[0,1,3,4,5,10,20],"largest":4,"larri":[12,13],"last":[4,5,20],"lat":5,"lat_0":5,"late":20,"later":[2,4,5,11,14,19,20],"latest":[1,3,11],"latitud":5,"layer":[3,18],"lead":[5,11,20],"leafnam":20,"leak":19,"leap":19,"least":[1,2,3,4,5,8,12,20],"leav":[5,10],"left":[0,1,3,4,5,8,18],"leftward":[3,8],"leg":[0,1,2,3,4,5,7,8,10,11,12,13,14,16,18,20],"legaci":5,"length":[0,1,3,5,10,19,20],"less":[1,3,5,19],"let":[4,5,14,15,20],"letter":[3,5,20],"level":[4,5,11,19,20],"librari":[3,4,6,7,11,13,18],"like":[0,1,2,3,4,5,9,10,11,12,14,19,20],"limit":[4,5,20],"line":[0,1,4,5,7,10,11,12,13,14,17,18,19,20],"link":[0,1,2,3,4,5,12,19],"linux":[9,13,14],"list":[1,3,4,5,11,12,13,14,18,20],"liter":5,"littl":[0,3,14],"littlebit":5,"ll":[4,5,11,12,19,20],"load":[0,1,3,4,5,7,10,11,18],"local":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"localtim":2,"locat":[1,3,4,5,14,17,20],"log":[0,1,3,5,10],"logbook":19,"lon_0":5,"long":[1,2,4,5,13,17,20],"longer":[1,2,3,4,5,18,20],"longitud":5,"look":[0,1,3,4,5,10,20],"loop":[1,2,3,4,5,8,10,19,20],"loser":[5,14],"lost":[0,3,4,5],"lot":[5,10],"love":15,"low":[12,14,19],"lower":[0,1,3,4,5,10,20],"lowercas":[4,20],"lowest":[1,3],"lrud":[4,10,20],"m":[3,5,12,18],"machin":[0,3,14],"maco":[9,13,14],"macro":12,"made":[4,5,10,15,19,20],"magic":19,"magnet":[4,5,20],"mail":[12,13,14],"maillist":15,"main":[3,5,10],"maintain":[4,10,14],"mak":[1,3,5,13],"make":[0,1,3,5,12,15,19,20],"mammoth":20,"man":17,"manag":[2,11,20],"mani":[1,3,5,8,10,11,12,14],"manipul":[0,3],"manomet":5,"manual":[10,11,17,20],"manufactur":11,"map":[4,5,19,20],"mark":[3,4,5,8,13,19,20],"marker":[3,5,18,20],"marker_s":[3,18],"match":[4,5,20],"maximum":5,"may":[2,3,4,5,7,10,11,12,19,20],"maze":5,"mckenzi":13,"mean":[2,3,5,9,10,12,18,19,20],"meant":4,"measur":[1,3,5,10,19],"meigui":14,"memori":4,"mention":[5,20],"menu":[0,3,10,11],"menus":9,"merc":5,"mercat":5,"mere":5,"messag":[5,11,12],"meta":[1,3],"meter":5,"method":20,"metr":[2,3,5,6,18,19],"metric":5,"microsoft":[3,9,13,14,20],"middl":[0,1,3,5],"might":[1,3,4,5,19],"migrat":[5,10,20],"mil":5,"militari":5,"minimum":5,"minus":5,"minut":[5,20],"mis":5,"miscalibr":5,"misclosur":[1,3,5],"mislead":[3,7],"mismatch":2,"miss":[5,15,20],"mission":5,"mistak":[1,3,4,14],"mix":[4,5,10,20],"mixtur":5,"mm":20,"mode":5,"model":[4,5,20],"modern":[3,5,12],"modif":5,"modifi":5,"month":5,"mostly":[5,20],"mous":14,"move":[0,1,3,4,5,6,7,12,19],"movement":[0,3],"ms":11,"much":[1,2,3,4,5,19,20],"multi":[5,14],"multipl":[1,3,4,5,19,20],"must":[1,3,4,5,20],"n":[0,3,5],"n0e":5,"n90e":5,"nad27":4,"nad83":4,"name":[0,2,3,4,7,10,11,12,13,18,19,20],"nasa":10,"nation":5,"nativ":[1,3,4,10,11,20],"nato":5,"natur":[0,1,3,5],"navig":11,"nb":5,"ne":[0,3],"near":[1,3,10],"nearbi":5,"necessari":5,"need":[1,2,3,4,5,10,11,19,20],"needless":19,"negat":5,"nest":5,"network":[1,3,5],"neugrad":5,"never":[2,5],"new":[4,5,11,13,20],"newer":[4,20],"newli":5,"newlin":5,"next":[4,5,11],"nick":[5,10],"nnnn":4,"node":[1,3],"noisi":20,"non":[0,3,4,5,11],"none":[5,12],"norm":3,"normal":[1,3,5,19],"north":[0,1,3,4,5,18],"northern":5,"northernmost":[1,3],"nosurvey":[5,10,20],"notat":5,"note":[1,3,4,5,6,10,11,19,20],"noteal":5,"notebook":5,"notepad":11,"notic":19,"now":[1,2,3,5,9,10,11,18,19,20],"number":[1,2,3,4,5,10,12,14,18,19],"numer":[13,20],"nw":[0,3],"nzgd2000":5,"o":[0,1,3,5],"obscur":[3,20],"observ":[5,20],"obsolet":[2,4],"obtain":[5,13,19],"obvious":14,"occasion":[5,11],"occur":[3,4,18],"ofd":14,"offend":[1,3],"offer":10,"offset":[1,3,20],"often":[3,10,14],"ogof":14,"ok":[5,11],"old":[2,3,4,5,12,18],"older":[2,4,5],"olli":[5,13,19],"omit":[1,3,5,19,20],"onc":[5,19],"one":[1,3,4,5,6,8,11,13,14,15,19,20],"oner":19,"onli":[0,1,2,3,4,5,7,8,10,16,18,19,20],"onlin":[5,17,19],"onto":[3,18],"open":[0,1,3,5,11,12,13,14,20],"opengl":11,"openstreetmap":5,"oper":[3,5,11],"opportun":5,"opposit":[0,3,5],"option":[5,8,10,12,13,20],"order":[1,3,5,10,13,18,20],"ordin":5,"ordnanc":5,"org":[19,20],"organis":13,"origin":[1,2,3,4,5,10,11,18,19],"osgb":5,"others":[5,11],"otherwis":[3,4,5,7,19,20],"oucc":14,"outlin":14,"output":[0,5,6,7,8,10,12,16,17,18,20],"output_3d_fil":[3,8],"output_fil":[3,18],"outsid":[0,3,4,5,12,20],"overlap":[0,3],"overlay":[5,13,20],"overnight":5,"overrid":[1,3,11,13,20],"p":[0,3,4,8,16,19,20],"p157":19,"p163":[5,19],"p25":20,"p34":5,"packag":[5,11,12,13,14],"page":[10,11,17],"pair":5,"pan":[0,3,14],"panel":11,"paramet":[3,4,16],"parent":5,"pars":[1,3,4,5,7,12,20],"parsons_nos":5,"part":[1,3,4,5,11,14,18,19,20],"partial":5,"particular":[0,3,4,5,8,10,17,20],"pass":[3,8],"passag":[3,4,5,18],"path":5,"pattern":20,"pdf":17,"peopl":[0,3,5,20],"pep":20,"per":[1,3,5,11,13,16],"percent":5,"percentag":[1,3,5,11,16,20],"perform":[5,11],"period":[5,12,20],"perman":5,"permit":5,"person":5,"phase":[5,10],"phone":14,"physic":5,"pic":5,"pick":[5,11,20],"pico":14,"pictur":[5,10,11],"piec":[1,3],"pit":[5,10],"pitch":[10,19],"pl":11,"place":[2,3,4,5,18,19,20],"plain":[5,17],"plan":[0,3,9,18],"plane":19,"plateau":[5,14],"platform":[3,9,11,14,20],"plausibl":[1,3],"pleas":[2,4,5,12,14,20],"plenti":15,"plf":[3,6,7,11,13],"plot":[4,5,11],"plotter":[3,18],"plt":[0,3,6,7,8,11,13,18],"plumb":[1,3,5,10,13],"plus":[0,3,5],"pocket":5,"pockettopo":19,"point":[0,1,3,4,5,8,13,14,15,18,19,20],"polar":20,"pole":5,"polish":11,"popular":[1,3],"portugues":11,"pos":[0,6,7,11,12],"posit":[0,3,4,5,11,19,20],"possibl":[2,4,5,10,11,20],"postscript":[3,18],"potenti":[3,5],"pound":20,"power":[5,10],"practic":[19,20],"pre":11,"prebuilt":11,"preced":5,"precis":[4,14],"predict":[5,20],"predomin":5,"prefer":[4,5,10,13,19],"prefix":[3,4,7,12,13,18,19,20],"present":[1,3,4,5,7],"preserv":[4,5],"press":[0,3],"presum":4,"prevent":[5,19],"previous":[4,5,19,20],"primarili":[3,18,20],"princip":[3,4,18],"print":[0,3,5,11,17],"printer":9,"printout":10,"prior":[1,3,5],"prioritis":20,"prj":20,"probabl":[0,2,3,5,11,20],"probe":12,"problem":[1,3,4,5,14,15,20],"problemat":[0,1,3,20],"proceed":11,"process":[0,1,2,3,4,5,7,8,10,11,12,14,17,19,20],"proctor":[5,10],"produc":[1,2,3,8,11,18,19],"program":[0,4,5,8,9,11,12,13,17],"progress":9,"proj":[4,5],"proj4":4,"project":[4,5,10,14,20],"promin":10,"prompt":5,"proport":5,"provid":[0,3,4,5,7,10,11,12,15,19,20],"pt":11,"pt2":19,"pt3":10,"pt_br":11,"pull":[3,7,9],"pure":20,"purpos":[4,5],"put":[3,5,8,19],"q":[1,3],"qq":[1,3],"quad":5,"quadrant":5,"qualifi":[4,5],"quantiti":5,"quick":[0,3,14],"quicker":3,"quiet":[1,3,4,5,20],"quirk":20,"quit":[3,19],"quot":[3,5],"r":[0,3,7,16,20],"radial":5,"radioloc":13,"random":[1,3],"rang":[1,3,5,7],"ranger":5,"rank":[1,3],"rather":[0,3,5,11,12,14,18],"ratio":[3,16],"raw":4,"re":[1,2,3,4,5,7,11,14,15,16,20],"reach":[5,9],"read":[0,1,2,3,6,7,8,10,11,12,13,20],"real":[4,5,14,20],"realist":[1,3],"realli":[2,5,20],"rearrang":5,"reason":[4,5,19],"rebuild":12,"receiv":5,"recent":[5,11],"recognis":[4,5],"recommend":[1,3,4,5],"record":[0,3,5],"redempt":10,"redirect":10,"redistribut":11,"redraw":5,"reduc":5,"reel":5,"ref":13,"refer":[4,5,13,19],"refind":5,"regard":[5,19],"region":[11,20],"registri":20,"relat":[0,1,3,5],"relax":5,"releas":[2,5,10,11,15,20],"relev":[10,12,19],"reli":5,"reliabl":20,"rememb":3,"remov":[3,5,18],"renam":10,"render":[10,11],"reorder":11,"repeat":[1,3,5,13],"replac":[3,4,5,8,16,20],"report":[1,3,4,5,6,10,11,20],"repres":[4,5,19],"request":11,"requir":[3,4,8,11,13,18,19],"reset":[0,1,3,5,20],"resiz":[0,3],"resolv":[2,5],"resourc":5,"respect":[0,1,3,4,20],"respons":[14,20],"rest":[5,19],"restor":[5,20],"restrict":[3,5,8,12,19,20],"restructur":14,"result":[3,5,8,11,20],"resurvey":[5,14],"retain":5,"return":[0,2,3,5,12,16],"reus":12,"revers":[4,5],"revis":[5,12],"rewind":[3,7],"rig":19,"right":[0,1,3,5,8,11,20],"ro":11,"rock":10,"role":5,"romanian":11,"root":[5,11],"rope":19,"rotat":[0,3,5,14],"rough":5,"round":19,"rpts":20,"ru":11,"rule":[1,3],"ruler":5,"run":[0,1,3,10,11,14,20],"russian":11,"s":[0,1,3,5,7,8,10,11,12,13,14,15,17,18,19],"s34e":5,"sad":[3,4,18,20],"samoa":5,"sampl":[2,11],"sap":5,"save":[4,10,20],"say":[4,5,15,19,20],"scale":[0,2,3,5,18],"scene":10,"scientif":5,"scope":[5,14],"screen":[1,11,13],"script":[3,7,11],"scroll":10,"scrollwheel":[0,3],"sd":[13,19,20],"sds":[4,19,20],"se":[0,3,5],"sea":5,"second":[3,4,5,7,10,14,16,20],"section":[0,1,3,4,5,8,10,11,14,15,18,19],"see":[0,1,3,4,5,11,12,13,14,19,20],"seem":[1,2,3,4,5,12,18,20],"seen":[4,5,20],"segment":20,"select":[0,3,5,8,13,20],"self":[1,3],"semant":5,"semicolon":20,"send":[1,3,14],"sens":[5,14],"sensibl":[5,12],"sensit":[3,4,5,19,20],"sent":[3,5,16],"separ":[3,4,5,7,10,11,12,18,20],"seri":[3,5,7,9],"set":[1,2,3,4,10,11,13,19,20],"setenv":11,"sever":5,"sh":11,"shaft":5,"shape":[4,20],"shapefil":20,"share":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"shift":[0,3],"shinwel":13,"short":[0,1,4,5,6,7,8,10,13,16,17,18],"shortcut":[0,3],"shorten":4,"shot":[2,4,20],"shouldn":5,"show":[0,1,3,4,5,7,8,12],"shown":[0,3,20],"sht":[0,2,3,6,7,8],"sic":20,"sicili":5,"side":[3,5,8],"sideway":5,"sight":5,"sign":[1,3,5,20],"signific":[4,5,14],"silent":5,"similar":[3,4,5,8,10,11],"simpl":[3,5,7,8,10,11,19,20],"simpler":10,"simpli":[5,12,19],"simplifi":11,"sinc":[1,3,4,5,7,11,14,18,19,20],"singl":[2,3,4,5,19],"site":[5,9],"situat":[1,3,4,5,8,20],"size":[0,1,3,18],"sk":11,"sketch":5,"skill":15,"skip":[0,3,5,20],"slash":[0,3,5],"slight":4,"slope":5,"slovak":11,"slow":[0,3,11,14],"slowli":12,"small":[1,3,10,19],"smap":5,"snap":[0,3],"snprintf":12,"softwar":[1,3,5,10,11,12,13,14],"sole":5,"solut":4,"solv":13,"somebodi":5,"someon":[5,11],"someth":[1,3,5],"sometim":[5,11,20],"somewher":[5,19,20],"sort":[1,2,3,5,11,16,18],"sorterr":[1,11,13,17],"sourc":[5,11,12,13,14],"south":[0,1,3,5],"southernmost":[1,3],"space":[0,3,4,5,7,18,20],"span":[1,3,19],"spanish":11,"speak":5,"spec":[11,14],"specfil":[3,8],"special":[4,5,13,20],"specif":[2,3,4,12,18,20],"specifi":[0,1,2,3,4,5,6,7,8,10,11,13,16,20],"speed":[0,3],"spell":14,"spheric":5,"spider":3,"splay":[1,3,4,5,18,20],"split":5,"spot":14,"spread":5,"spreadsheet":5,"spur":19,"squar":5,"src":12,"srtm":10,"srv":[1,3,5,20],"ss":20,"stabil":12,"stage":[1,3],"standard":[1,5,12,13,19],"standardis":[5,12],"start":[3,4,5,8,10,13,17,18,19,20],"state":5,"static":13,"station":[0,1,2,3,4,6,8,11,12,13,14,18,19,20],"statist":[1,3,10,19],"std":5,"stdout":[3,16],"step":[5,9],"stick":5,"still":[1,3,4,5,11,14,20],"stop":[1,3,5,19],"store":[4,5],"strict":5,"string":[3,4,5,18,20],"strong":5,"structur":[3,18],"style":[5,10,19],"style_div":4,"sub":[0,3,7,8,11,18],"subject":[4,10],"subsequ":[5,12],"subset":12,"subtract":5,"succeed":20,"success":[0,1,3,20],"suffic":[3,8],"suffix":[3,5,18],"suggest":[0,3,4,5,10,14,15],"suit":[3,5,17],"suitabl":[5,10,11,19],"sum":[1,3],"summari":3,"super":14,"supersed":5,"suppli":[11,19],"support":[1,2,3,5,9,10,11,12,13,14,17,18,20],"suppos":[10,19],"suppress":[1,3,5,20],"sure":[5,19,20],"surfac":[0,1,3,4,5,8,13,18,20],"surface1":19,"surface2":19,"survex":[0,1,2,4,6,7,8,9,10,12,15,16,18,19,20],"survexlang":11,"survexport":[4,11,13,17],"survey":[0,1,2,3,4,7,8,11,12,13,14,17,18,20],"survey1":4,"survey2":4,"survey_data_fil":[1,3],"survey_fil":[0,3],"surveyor":13,"surveyor87":5,"suspect":[1,3,19,20],"suunto":5,"sv10":[3,18],"sv11":[3,18],"sv8":[3,18],"sv8a":[3,18],"sv8b":[3,18],"sv8c":[3,18],"sv9":[3,18],"svg":[3,18],"svx":[1,3,4,5,10,11,13],"svxfilewhichusesce1":4,"sw":[0,3],"swiss":11,"switch":[3,8],"symbol":20,"synonym":5,"synopsi":5,"syntact":5,"syntax":[5,17],"system":[3,4,5,8,11,12,19],"systemat":20,"t":[0,1,2,3,4,5,7,10,11,12,14,18,19,20],"tab":[5,11,20],"tabl":5,"tablet":14,"tag":19,"take":[0,3,5,10,12,19,20],"taken":[5,19],"tape":[1,3,5,10,19,20],"tar":11,"target":[5,20],"task":11,"tcsh":11,"team":[4,10,13,19],"techniqu":19,"tell":[1,3,5,19],"templat":10,"tend":[1,3],"term":5,"termin":5,"terminolog":13,"terrain":[5,10],"test":[3,7,12,14,15,20],"text":[1,3,5,10,12,14,17,18,20],"text_height":[3,18],"textual":[3,7],"thailand":20,"thank":20,"theodolit":13,"therion":5,"thigh":10,"thing":[0,3,5,10,14,19,20],"though":[3,4,5,18,20],"three":[1,3,5,20],"threshold":[3,5,6,20],"throughout":14,"thrun":[12,13],"thus":19,"tie":5,"tight":5,"tilt":[0,3,18],"time":[1,3,4,5,7,14,20],"timestamp":2,"timezon":[2,5],"tini":20,"tip":10,"titl":[10,13,19],"tmerc":5,"tocount":5,"today":5,"todepth":5,"togeth":[4,13],"toggl":[0,3],"tolow":5,"tomorrow":5,"took":[1,3],"tool":[1,3,4,5,7,10,11,18,20],"toolbar":[1,3],"top":[3,11,16],"topo":5,"topodroid":5,"topofil":5,"topographi":13,"toporobot":5,"total":[1,3,20],"tote":5,"touch":2,"toupper":5,"toward":[9,20],"towgs84":5,"trail":5,"transcript":5,"translat":[3,4,5,11,12,15,18],"transpar":[0,3,8,10],"travers":[1,3,5,7,11,12,20],"treat":[4,5,19,20],"tree":[4,12],"tri":[0,1,2,3,5,11,15,20],"trial":[3,8],"triassic":[5,10],"trick":20,"trigger":[1,3,5,20],"trip":[4,5,13,14,19],"tripl":5,"true":[5,10],"truncat":13,"tube":[4,5],"turn":[0,1,3,4,5,19],"twice":5,"two":[1,2,3,4,5,7,10,11,14,17,20],"type":[1,2,3,5,11,12,19,20],"typeab":20,"typevb":20,"typic":[1,3,4,5,10,19],"typo":[4,5,14],"u":[19,20],"uk":[5,11,19,20],"una":[0,2,3,6,7],"unadjust":2,"unalia":5,"unclear":[1,3,12],"unconnect":5,"underground":[2,3,4,8,14,18,19],"understand":[0,1,3,4,5,11,14],"underwat":[5,19,20],"undocu":[4,20],"unexplor":5,"unfortun":20,"unhelp":[4,5],"uninstal":11,"uniqu":[4,5,19],"unit":[0,3,13,20],"unix":[3,9,13,14],"unknown":[4,20],"unless":[1,3,5,20],"unlik":[2,4,5,19,20],"unpack":[11,20],"unprefix":20,"unprocess":[0,1,3,4,10,20],"unspecifi":5,"unsurvey":5,"unus":20,"unusu":5,"unzip":20,"updat":[0,3,5,10,12,20],"upgrad":[5,11],"upon":5,"upper":[0,3,5,20],"upsid":[0,3],"upward":[5,12],"url":4,"us":[1,3,4,5,10,11,14,15,20],"usabl":[5,14],"usag":5,"use":[0,1,2,3,4,5,7,8,10,13,14,18,19,20],"user":[0,1,2,3,4,5,11,14,15,18,20],"usr":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"usual":[1,3,4,5,8,12,17,20],"utc":[2,5],"utf":5,"util":9,"utilis":5,"utm":[4,5,20],"utm30":5,"utm60":5,"uv":20,"uvh":20,"uvv":20,"v":[0,1,3,5,16,19],"valid":[5,20],"valu":[1,3,4,5,11,19,20],"vari":[0,3,5,19],"variabl":11,"varianc":20,"variant":[2,5],"variat":20,"various":[1,3,5,10,12,19],"ve":[2,3,4,5,18,20],"vector":20,"veri":[3,4,5,8,10,11,12,14,19],"version":[0,1,2,3,4,5,6,7,9,12,13,14,16,17,18,19,20],"vertic":[0,1,3,5,11,16,19,20],"via":[4,5,11,12,20],"view":[0,1,2,3,5,8,10,11,17,18],"viewer":[4,11,14],"viewpoint":[0,3],"visit":15,"visualis":[3,8],"vunit":5,"w":[0,1,3,5],"wall":[1,3,4,5,10,13,18],"walls32":20,"wallsdata":5,"want":[1,2,3,4,5,7,10,11,12,14,19,20],"warn":[0,1,3,4,5,13,20],"wasn":2,"water":[5,13,20],"way":[0,3,4,5,8,10,11,12,14,15,19,20],"web":[5,9],"websit":[5,11],"welcom":[1,3,11,15],"well":[2,10,14,19],"weren":5,"west":[0,1,3,5],"westernmost":[1,3],"wgs84":[5,20],"whatev":5,"wherea":[5,12],"whether":[4,5],"whi":5,"whichev":5,"whitespac":20,"whole":[4,5,20],"wide":[5,12],"wiki":10,"will":[0,1,2,3,4,5,8,10,11,14,18,19,20],"window":[0,1,3,9,13,14,20],"wish":5,"within":[0,1,3,4,5,19],"without":[3,4,5,10,20],"wizard":11,"won":[4,5,11,14,20],"wonder":5,"wookey":[5,13],"word":[3,5,14,20],"work":[0,1,3,4,5,6,7,11,14,20],"workaround":20,"world":[4,5,10,14,20],"worri":[5,14],"wors":5,"worst":[1,3],"worth":[5,20],"wouldn":4,"wpj":[1,3,5,20],"wrap":[4,19],"write":[3,4,5,7,12,20],"written":[1,2,3,5,10,11,12],"www":19,"wxwidget":9,"x":[0,3,5,6,18,20],"x09x20":5,"x0ax0dx1a":5,"x1a":5,"x20":5,"x_0":5,"xx1":4,"xyz":[2,3,18],"y":[3,5,6,18],"y_0":5,"yard":5,"year":[2,5,20],"year1":5,"year2":5,"yet":[5,19],"yy":20,"yyyi":20,"z":[0,3,4,5,6,18],"zero":[4,5,20],"zeroerror":5,"zh_cn":11,"zip":20,"zone":[4,5,20],"zoom":[0,3,14],"zz6":5},"titles":["aven","cavern","Bob Thrun\u2019s CMAP","Survex Programs","Larry Fish\u2019s Compass","Survex data files","diffpos","dump3d","extend","Future Developments","General: How do I?","Getting Started","Using the img library","Survex 1.4.22 Manual","Introduction","Mailing List","sorterr","survex","survexport",".svx Cookbook","David McKenzie\u2019s Walls"],"titleterms":{"About":14,"How":10,"I":10,"More":10,"On":[0,3],"Other":11,"Your":11,"accuraci":[5,19],"across":19,"add":10,"alia":5,"also":17,"anonym":5,"api":12,"aven":[0,3],"bcra":19,"begin":5,"bob":2,"calibr":5,"cartesian":5,"case":5,"cavern":[1,3,5],"chang":19,"charact":19,"clp":4,"cmap":2,"code":12,"command":[3,5],"compass":4,"configur":11,"control":[0,3,10],"cookbook":19,"copyright":5,"creat":10,"cs":5,"dat":4,"data":[5,10,19],"date":5,"david":20,"declin":5,"default":5,"descript":[0,1,3,6,7,8,16,17,18],"develop":9,"diffpo":[3,6],"dive":19,"dump3d":[3,7],"dxf":[3,18],"elev":10,"end":5,"entranc":5,"equat":5,"error":[1,3,10],"export":[4,5],"extend":[3,8,10],"field":5,"file":5,"filenam":3,"fish":4,"fix":[5,10],"flag":5,"format":[3,18],"futur":9,"general":10,"get":11,"gone":10,"grade":19,"grid":10,"img":12,"import":10,"includ":5,"indic":[0,3],"infer":5,"instal":11,"instrument":5,"introduct":14,"join":19,"keyboard":[0,3],"languag":11,"larri":4,"leg":19,"librari":12,"line":3,"linux":11,"list":15,"long":3,"maco":11,"mail":15,"mak":4,"manual":[13,14],"mckenzi":20,"messag":[1,3],"microsoft":11,"mous":[0,3],"name":5,"new":10,"numer":5,"obtain":11,"one":10,"option":[0,1,3,6,7,16,17,18],"order":19,"organis":10,"output":[1,3],"overlay":10,"overrid":19,"per":10,"plf":4,"plt":4,"plumb":19,"point":10,"pos":[3,18],"prefer":11,"prefix":5,"program":[3,10],"radioloc":19,"read":[4,5,19],"ref":5,"refer":3,"repeat":19,"requir":5,"s":[2,4,20],"screen":[0,3,10],"sd":5,"see":[10,17],"select":11,"set":5,"short":3,"solv":5,"sorterr":[3,16],"special":19,"specifi":19,"standard":3,"start":11,"static":19,"station":5,"support":4,"surfac":[10,19],"survex":[3,5,11,13,14,17],"survexport":[3,18],"survey":[5,10,19],"svx":19,"synopsi":[0,1,3,6,7,8,16,18],"team":5,"terminolog":14,"theodolit":19,"thrun":2,"titl":5,"togeth":19,"topographi":10,"trip":10,"truncat":5,"unit":5,"unix":11,"use":[11,12],"version":11,"wall":20,"warn":10,"water":19,"window":11}})
\ No newline at end of file
diff -Nru survex-1.4.17/doc/manual/sorterr.htm survex-1.4.22/doc/manual/sorterr.htm
--- survex-1.4.17/doc/manual/sorterr.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/sorterr.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- sorterr — Survex 1.4.17 documentation
-
-
-
-
-
+ sorterr — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -83,7 +84,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -132,8 +132,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/survex.htm survex-1.4.22/doc/manual/survex.htm
--- survex-1.4.17/doc/manual/survex.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/survex.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- survex — Survex 1.4.17 documentation
-
-
-
-
-
+ survex — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -77,7 +78,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -126,8 +126,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/survexport.htm survex-1.4.22/doc/manual/survexport.htm
--- survex-1.4.17/doc/manual/survexport.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/survexport.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- survexport — Survex 1.4.17 documentation
-
-
-
-
-
+ survexport — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -178,7 +179,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -227,8 +227,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/svxhowto.htm survex-1.4.22/doc/manual/svxhowto.htm
--- survex-1.4.17/doc/manual/svxhowto.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/svxhowto.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- .svx Cookbook — Survex 1.4.17 documentation
-
-
-
-
-
+ .svx Cookbook — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -364,7 +365,16 @@
-Navigation
+
+
+
+
+
+
+Navigation
-
- Quick search
-
-
-
-
-
@@ -429,8 +429,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
diff -Nru survex-1.4.17/doc/manual/walls.htm survex-1.4.22/doc/manual/walls.htm
--- survex-1.4.17/doc/manual/walls.htm 2025-03-20 00:17:14.000000000 +0000
+++ survex-1.4.22/doc/manual/walls.htm 2026-06-23 21:24:30.000000000 +0000
@@ -5,12 +5,13 @@
- David McKenzie’s Walls — Survex 1.4.17 documentation
-
-
-
-
-
+ David McKenzie’s Walls — Survex 1.4.22 documentation
+
+
+
+
+
+
@@ -67,9 +68,48 @@
probably ought to be an error except Walls quietly accepts them so we
don’t want to fail processing because of them.
If you want a way to suppress the “unused fixed point” warning, using the
-station in a #NOTE or #FLAG command counts as a “use” so you
+station in a #NOTE or #FLAG directive counts as a “use” so you
can suppress these with e.g. #NOTE ABC123 /unused for each such
-fixed point.
+fixed point. (This works fully since Survex 1.4.21 - before this it only
+worked if the #FIX came first, and didn’t work for #FLAG without
+any flags.)
+
+Walls only runs on Microsoft Windows, where filenames are case-insensitive
+and you may find the case of filenames in the .PRJ file doesn’t match
+the actual case of the filename on disk. If processing a Walls dataset on a
+platform where filenames are case-sensitive this can cause problems.
+This same issue can affect native Survex datasets too, and the same
+workaround is used when opening .SRV files: if the file isn’t found
+cavern will try a few variations of the case. First it will try all lower
+case, then all lower case except with the first character of the leafname
+in upper case, and finally all upper case.
+If the filename on disk has mixed case (aside from the initial character)
+and the .PRJ file doesn’t specify it with this case then this workaround
+won’t help.
+One specific trick the workaround enables which is worth noting is that you
+can unpack a ZIP archive using unzip -L which will unpack all the
+filenames in lower case and then cavern should successfully process it
+thanks to the “try lowercase” part of the workaround.
+
+Both Walls and Survex support calculating magnetic declinations based on
+location and survey date. However David’s last Walls release was “Version
+2, Build 2016-11-18” in 2016 which uses IGRF 12 (released in late 2015 and
+the current model at the time). This model is only intended to support dates
+up to the end of 2019, and is only definitive up to the end of 2009 - for
+dates in 2010-2019 it is predictive based on observations before this period.
+A new version of the IGRF model is released every 5 years, and Survex has
+been updated each time so is using a model multiple versions newer than
+Walls. For dates up to the end of 2009 any differences in calculated
+declinations should be tiny, but for 2010-2019 Survex is using a definitive
+model, while for dates after 2020 Survex is (at the time of writing in 2026)
+using a predictive model while Walls is using a model outside of its interval
+of validity. For any dates after 2009 you’ll likely see Walls and Survex
+calculate different declinations - Survex’s should be more reliable.
+If you have survey data from 2010 or later you may need to take this into
+account if you are comparing the processed output from Walls with that from
+Survex to check that Survex is interpreting the data in the same way as
+Walls. Andy Edwards has made a build of Walls updated to use IGRF14 which may
+be of interest if you are in this situation.
If an isolated LRUD (LRUD not on a leg, e.g. specified for the start or end
station of a traverse) is missing its closing delimiter, Walls will parse
@@ -88,7 +128,7 @@
This warning will also be triggered if you have a “to” station which actually
starts with * or < , if the station name was not previously seen.
This condition provides a simple way to suppress the warning - just add a
-dummy #NOTE command before the line of data like so:
+dummy #NOTE directive before the line of data like so:
#note *8 ; Suppress Survex warning that this looks like broken LRUD
P25 *8 5 16 3.58
@@ -138,12 +178,20 @@
Walls FLAG values seem to be arbitrary text strings. We try to
infer appropriate Survex station flags by checking for certain key
-words in that text (currently we map words ENTRANCE and FIX
-to the corresponding Survex station flags) and otherwise ignore FLAG
-values.
+words in that text and otherwise ignore
FLAG values.
+
Currently we map ENTRANCE to the corresponding Survex station flag;
+Survex <= 1.4.20 also mapped FIX but we set that for a station used
+in #FIX so inferring it based on FLAG values doesn’t seem useful.
+
#NOTE is parsed and the station name is marked as “used” (which
suppresses the unused fixed point warning) but the note text is
currently ignored.
+
#SYMBOL directives are quietly ignored. In Walls they specify a symbol
+shape and colour to use for a named flag, which doesn’t usefully map into
+Survex. The Walls manual notes Since it’s now easy to accomplished [sic]
+this interactively via the Flag and Marker Symbols dialog, you may choose not
+to use #Symbol directives at all and they don’t seem to be used much in
+Walls datasets we’ve seen.
We don’t currently support all the datum names which Walls does
because we haven’t managed to find an EPSG code for any UTM zones
in some of these datums. This probably means they’re not actually
@@ -158,8 +206,21 @@
Walls32.exe to determine exactly how this works (and if RESET is
also special).
LRUD data is currently ignored.
-
The TAPE= option is currently quietly skipped, and tape
-measurements are assumed to be station to station.
+
Since Survex 1.4.21, the TAPE= option is checked for validity, and
+the combination of TAPE=SS with ORDER=DA or ORDER=AD is mapped to
+diving data, since the Walls manual says “In the SRV data format, underwater
+vectors are defined by compass and tape (CT) data lines in which the taping
+method is station-to-station (#UNITS Order=DA Tape=SS) and the
+instrument/target “heights” are actually station depths (expressed as
+positive values) below the water’s surface. In effect, both instrument and
+target are treated as if they were at the surface, where the inclination can
+be assumed zero.”. Other combinations of TAPE= and ORDER= are
+currently not implemented and instrument heights are parsed but ignored;
+instrument and target are assumed to be on their respective stations (or
+offset from them by the same amount).
+Survex < 1.4.21 just skipped over TAPE= entirely (so invalid values
+were also quietly ignored).
+
In TYPEAB= and TYPEVB= , the threshold is ignored, as is the X
meaning to only use foresights (but still check backsights).
Survex uses a threshold based on the specified instrument SDs, and
@@ -194,7 +255,17 @@
colons, semicolons, commas, pound signs (#), or embedded tabs or spaces. but
it actually allows # in station names (though it can’t be used as the
first character of the from station name as that will be interpreted as a
-command. Since Survex 1.4.10.
+directive. Since Survex 1.4.10.
+
Walls uses : as a separator between prefixes and between any prefix and
+the station name. Since Survex 1.4.21, cavern takes into account which
+characters are allowed in Walls station names when picking the separator to
+use in the .3d file - for a pure Walls dataset, it will pick : , so
+Walls station names shown by aven and other tools should match the names
+as shown in Walls. If you have a dataset which mixes data in Walls format
+with Survex and/or Compass data, then it’s possible : is used in a Survex
+or Compass station name - if so a different separator will be chosen. Before
+Survex 1.4.21, . would be used as the .3d file separator for a pure
+Walls dataset, even though if it was used in station names.
Walls ignores junk after the numeric argument in TYPEAB= , TYPEVB= ,
UV= , UVH= , and UVV= . Survex warns and skips the junk. Since
Survex 1.4.10.
@@ -213,6 +284,30 @@
space in, so can’t collide with a real Walls station name which can’t contain
a space) - so
PEP: in Walls becomes
PEP.empty name in Survex.
Since Survex 1.4.10.
+
Explicit units on clino readings are supported since Survex 1.4.10. Survex
+1.4.20 improved support: P /p for percentage gradient is now
+supported, and a bug fixed in the handling of explicit units when the default
+has been set to percentage gradient.
+
Explicit degree:minute:second angle readings are supported since Survex
+1.4.20.
+
Walls doesn’t issue an error for some directive lines which seem like they
+are invalid (at least there’s no documented meaning), for example all of
+these are quietly accepted:
+ #
+#<L,R,U,D>
+#<,>
+#*,>
+#!,"
+#THANK,YOU
+
+
+Survex 1.4.21 and later downgrades the “Unknown command” error to a warning
+for these. The complete pattern for what is accepted by Walls is hard to
+reliably discern (it seems to be either empty directives or those with a
+comma somewhere on the line after the invalid directive with no intervening
+whitespace) so it’s possible there are cases which are still errors should
+also be warnings - please report any you come across.
+
If you find some Walls data which Survex doesn’t handle or handles
incorrectly, and it is not already noted above, please let us know.
@@ -237,7 +332,16 @@
-
Navigation
+
+
+
+
+
+
+
Navigation
-
- Quick search
-
-
-
-
-
@@ -288,8 +382,8 @@
©1998-2025.
|
- Powered by Sphinx 8.1.3
- & Alabaster 0.7.16
+ Powered by Sphinx 9.1.0
+ & Alabaster 1.0.0
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/doc/manual.pdf and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/doc/manual.pdf differ
diff -Nru survex-1.4.17/doc/sorterr.1 survex-1.4.22/doc/sorterr.1
--- survex-1.4.17/doc/sorterr.1 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/sorterr.1 2026-06-23 21:24:18.000000000 +0000
@@ -1,4 +1,5 @@
-.\" Man page generated from reStructuredText.
+.\" Man page generated from reStructuredText
+.\" by the Docutils 0.22.4 manpage writer.
.
.
.nr rst2man-indent-level 0
@@ -27,7 +28,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SORTERR" "1" "Mar 20, 2025" "" "Survex"
+.TH "SORTERR" "1" "Jun 23, 2026" "" "Survex"
.SH NAME
sorterr \- re-sort .err file by various criteria
.SH SYNOPSIS
@@ -70,7 +71,6 @@
.SH SEE ALSO
.sp
\fBaven\fP(1), \fBcavern\fP(1), \fBdiffpos\fP(1), \fBdump3d\fP(1), \fBextend\fP(1), \fBsurvexport\fP(1)
-.SH COPYRIGHT
+.SH Copyright
1998-2025
-.\" Generated by docutils manpage writer.
-.
+.\" End of generated man page.
diff -Nru survex-1.4.17/doc/survex.7 survex-1.4.22/doc/survex.7
--- survex-1.4.17/doc/survex.7 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/survex.7 2026-06-23 21:24:18.000000000 +0000
@@ -1,4 +1,5 @@
-.\" Man page generated from reStructuredText.
+.\" Man page generated from reStructuredText
+.\" by the Docutils 0.22.4 manpage writer.
.
.
.nr rst2man-indent-level 0
@@ -27,7 +28,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SURVEX" "7" "Mar 20, 2025" "" "Survex"
+.TH "SURVEX" "7" "Jun 23, 2026" "" "Survex"
.SH NAME
survex \- cave surveying software
.SH DESCRIPTION
@@ -57,7 +58,6 @@
.sp
\fBThe Survex Manual\fP (located in \fI/usr/local/share/doc/survex\fP),
\fBaven\fP(1), \fBcavern\fP(1), \fBdiffpos\fP(1), \fBdump3d\fP(1), \fBextend\fP(1), \fBsorterr\fP(1), \fBsurvexport\fP(1)
-.SH COPYRIGHT
+.SH Copyright
1998-2025
-.\" Generated by docutils manpage writer.
-.
+.\" End of generated man page.
diff -Nru survex-1.4.17/doc/survexport.1 survex-1.4.22/doc/survexport.1
--- survex-1.4.17/doc/survexport.1 2025-03-20 00:17:03.000000000 +0000
+++ survex-1.4.22/doc/survexport.1 2026-06-23 21:24:18.000000000 +0000
@@ -1,4 +1,5 @@
-.\" Man page generated from reStructuredText.
+.\" Man page generated from reStructuredText
+.\" by the Docutils 0.22.4 manpage writer.
.
.
.nr rst2man-indent-level 0
@@ -27,7 +28,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SURVEXPORT" "1" "Mar 20, 2025" "" "Survex"
+.TH "SURVEXPORT" "1" "Jun 23, 2026" "" "Survex"
.SH NAME
survexport \- convert a processed survey data file to another format
.SH SYNOPSIS
@@ -201,7 +202,6 @@
.SH SEE ALSO
.sp
\fBaven\fP(1), \fBcavern\fP(1), \fBdiffpos\fP(1), \fBdump3d\fP(1), \fBextend\fP(1), \fBsorterr\fP(1)
-.SH COPYRIGHT
+.SH Copyright
1998-2025
-.\" Generated by docutils manpage writer.
-.
+.\" End of generated man page.
diff -Nru survex-1.4.17/doc/walls.rst survex-1.4.22/doc/walls.rst
--- survex-1.4.17/doc/walls.rst 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/doc/walls.rst 2026-06-20 21:58:35.000000000 +0000
@@ -40,9 +40,54 @@
don't want to fail processing because of them.
If you want a way to suppress the "unused fixed point" warning, using the
- station in a ``#NOTE`` or ``#FLAG`` command counts as a "use" so you
+ station in a ``#NOTE`` or ``#FLAG`` directive counts as a "use" so you
can suppress these with e.g. ``#NOTE ABC123 /unused`` for each such
- fixed point.
+ fixed point. (This works fully since Survex 1.4.21 - before this it only
+ worked if the ``#FIX`` came first, and didn't work for ``#FLAG`` without
+ any flags.)
+
+- Walls only runs on Microsoft Windows, where filenames are case-insensitive
+ and you may find the case of filenames in the ``.PRJ`` file doesn't match
+ the actual case of the filename on disk. If processing a Walls dataset on a
+ platform where filenames are case-sensitive this can cause problems.
+
+ This same issue can affect native Survex datasets too, and the same
+ workaround is used when opening ``.SRV`` files: if the file isn't found
+ cavern will try a few variations of the case. First it will try all lower
+ case, then all lower case except with the first character of the leafname
+ in upper case, and finally all upper case.
+
+ If the filename on disk has mixed case (aside from the initial character)
+ and the ``.PRJ`` file doesn't specify it with this case then this workaround
+ won't help.
+
+ One specific trick the workaround enables which is worth noting is that you
+ can unpack a ZIP archive using ``unzip -L`` which will unpack all the
+ filenames in lower case and then ``cavern`` should successfully process it
+ thanks to the "try lowercase" part of the workaround.
+
+- Both Walls and Survex support calculating magnetic declinations based on
+ location and survey date. However David's last Walls release was "Version
+ 2, Build 2016-11-18" in 2016 which uses IGRF 12 (released in late 2015 and
+ the current model at the time). This model is only intended to support dates
+ up to the end of 2019, and is only definitive up to the end of 2009 - for
+ dates in 2010-2019 it is predictive based on observations before this period.
+
+ A new version of the IGRF model is released every 5 years, and Survex has
+ been updated each time so is using a model multiple versions newer than
+ Walls. For dates up to the end of 2009 any differences in calculated
+ declinations should be tiny, but for 2010-2019 Survex is using a definitive
+ model, while for dates after 2020 Survex is (at the time of writing in 2026)
+ using a predictive model while Walls is using a model outside of its interval
+ of validity. For any dates after 2009 you'll likely see Walls and Survex
+ calculate different declinations - Survex's should be more reliable.
+
+ If you have survey data from 2010 or later you may need to take this into
+ account if you are comparing the processed output from Walls with that from
+ Survex to check that Survex is interpreting the data in the same way as
+ Walls. Andy Edwards has made `a build of Walls updated to use IGRF14
+ `_ which may
+ be of interest if you are in this situation.
- If an isolated LRUD (LRUD not on a leg, e.g. specified for the start or end
station of a traverse) is missing its closing delimiter, Walls will parse
@@ -61,7 +106,7 @@
This warning will also be triggered if you have a "to" station which actually
starts with ``*`` or ``<``, if the station name was not previously seen.
This condition provides a simple way to suppress the warning - just add a
- dummy ``#NOTE`` command before the line of data like so::
+ dummy ``#NOTE`` directive before the line of data like so::
#note *8 ; Suppress Survex warning that this looks like broken LRUD
P25 *8 5 16 3.58
@@ -111,14 +156,23 @@
- Walls ``FLAG`` values seem to be arbitrary text strings. We try to
infer appropriate Survex station flags by checking for certain key
- words in that text (currently we map words ``ENTRANCE`` and ``FIX``
- to the corresponding Survex station flags) and otherwise ignore ``FLAG``
- values.
+ words in that text and otherwise ignore ``FLAG`` values.
+
+ Currently we map ``ENTRANCE`` to the corresponding Survex station flag;
+ Survex <= 1.4.20 also mapped ``FIX`` but we set that for a station used
+ in ``#FIX`` so inferring it based on ``FLAG`` values doesn't seem useful.
- ``#NOTE`` is parsed and the station name is marked as "used" (which
suppresses the unused fixed point warning) but the note text is
currently ignored.
+- ``#SYMBOL`` directives are quietly ignored. In Walls they specify a symbol
+ shape and colour to use for a named flag, which doesn't usefully map into
+ Survex. The Walls manual notes *Since it's now easy to accomplished [sic]
+ this interactively via the Flag and Marker Symbols dialog, you may choose not
+ to use #Symbol directives at all* and they don't seem to be used much in
+ Walls datasets we've seen.
+
- We don't currently support all the datum names which Walls does
because we haven't managed to find an EPSG code for any UTM zones
in some of these datums. This probably means they're not actually
@@ -137,8 +191,21 @@
- LRUD data is currently ignored.
-- The ``TAPE=`` option is currently quietly skipped, and tape
- measurements are assumed to be station to station.
+- Since Survex 1.4.21, the ``TAPE=`` option is checked for validity, and
+ the combination of ``TAPE=SS`` with ``ORDER=DA`` or ``ORDER=AD`` is mapped to
+ diving data, since the Walls manual says "In the SRV data format, underwater
+ vectors are defined by compass and tape (CT) data lines in which the taping
+ method is station-to-station (#UNITS Order=DA Tape=SS) and the
+ instrument/target "heights" are actually station depths (expressed as
+ positive values) below the water's surface. In effect, both instrument and
+ target are treated as if they were at the surface, where the inclination can
+ be assumed zero.". Other combinations of ``TAPE=`` and ``ORDER=`` are
+ currently not implemented and instrument heights are parsed but ignored;
+ instrument and target are assumed to be on their respective stations (or
+ offset from them by the same amount).
+
+ Survex < 1.4.21 just skipped over ``TAPE=`` entirely (so invalid values
+ were also quietly ignored).
- In ``TYPEAB=`` and ``TYPEVB=``, the threshold is ignored, as is the ``X``
meaning to only use foresights (but still check backsights).
@@ -185,7 +252,18 @@
colons, semicolons, commas, pound signs (#), or embedded tabs or spaces.` but
it actually allows ``#`` in station names (though it can't be used as the
first character of the from station name as that will be interpreted as a
- command. Since Survex 1.4.10.
+ directive. Since Survex 1.4.10.
+
+- Walls uses ``:`` as a separator between prefixes and between any prefix and
+ the station name. Since Survex 1.4.21, cavern takes into account which
+ characters are allowed in Walls station names when picking the separator to
+ use in the ``.3d`` file - for a pure Walls dataset, it will pick ``:``, so
+ Walls station names shown by ``aven`` and other tools should match the names
+ as shown in Walls. If you have a dataset which mixes data in Walls format
+ with Survex and/or Compass data, then it's possible ``:`` is used in a Survex
+ or Compass station name - if so a different separator will be chosen. Before
+ Survex 1.4.21, ``.`` would be used as the ``.3d`` file separator for a pure
+ Walls dataset, even though if it was used in station names.
- Walls ignores junk after the numeric argument in ``TYPEAB=``, ``TYPEVB=``,
``UV=``, ``UVH=``, and ``UVV=``. Survex warns and skips the junk. Since
@@ -209,6 +287,34 @@
a space) - so ``PEP:`` in Walls becomes ``PEP.empty name`` in Survex.
Since Survex 1.4.10.
+- Explicit units on clino readings are supported since Survex 1.4.10. Survex
+ 1.4.20 improved support: ``P``/``p`` for percentage gradient is now
+ supported, and a bug fixed in the handling of explicit units when the default
+ has been set to percentage gradient.
+
+- Explicit ``degree:minute:second`` angle readings are supported since Survex
+ 1.4.20.
+
+- Walls doesn't issue an error for some directive lines which seem like they
+ are invalid (at least there's no documented meaning), for example all of
+ these are quietly accepted:
+
+ ::
+
+ #
+ #
+ #<,>
+ #*,>
+ #!,"
+ #THANK,YOU
+
+ Survex 1.4.21 and later downgrades the "Unknown command" error to a warning
+ for these. The complete pattern for what is accepted by Walls is hard to
+ reliably discern (it seems to be either empty directives or those with a
+ comma somewhere on the line after the invalid directive with no intervening
+ whitespace) so it's possible there are cases which are still errors should
+ also be warnings - please report any you come across.
+
If you find some Walls data which Survex doesn't handle or handles
incorrectly, and it is not already noted above, please let us know.
If you can provide some data demonstrating the problem, that's really
diff -Nru survex-1.4.17/install-sh survex-1.4.22/install-sh
--- survex-1.4.17/install-sh 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/install-sh 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2025-06-18.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -533,9 +533,9 @@
done
# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru survex-1.4.17/lib/ChineseSimplified.isl survex-1.4.22/lib/ChineseSimplified.isl
--- survex-1.4.17/lib/ChineseSimplified.isl 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/lib/ChineseSimplified.isl 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; *** Inno Setup version 6.1.0+ Chinese Simplified messages ***
+; *** Inno Setup version 6.5.0+ Chinese Simplified messages ***
;
; To download user-contributed translations of this file, go to:
; https://jrsoftware.org/files/istrans/
@@ -23,17 +23,17 @@
; About LanguageID, to reference link:
; https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c
LanguageID=$0804
+; About CodePage, to reference link:
+; https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
LanguageCodePage=936
; If the language you are translating to requires special font faces or
; sizes, uncomment any of the following entries and change them accordingly.
;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
+;DialogFontSize=9
+;DialogFontBaseScaleWidth=7
+;DialogFontBaseScaleHeight=15
+;WelcomeFontName=Segoe UI
+;WelcomeFontSize=14
[Messages]
@@ -50,51 +50,51 @@
; *** SetupLdr messages
SetupLdrStartupMessage=现在将安装 %1。您想要继续吗?
-LdrCannotCreateTemp=不能创建临时文件。安装中断。
-LdrCannotExecTemp=不能执行临时目录中的文件。安装中断。
+LdrCannotCreateTemp=无法创建临时文件。安装程序已中止
+LdrCannotExecTemp=无法执行临时目录中的文件。安装程序已中止
HelpTextNote=
; *** 启动错误消息
-LastErrorMessage=%1.%n%n错误 %2: %3
-SetupFileMissing=安装目录中的文件 %1 丢失。请修正这个问题或者获取程序的新副本。
+LastErrorMessage=%1。%n%n错误 %2: %3
+SetupFileMissing=安装目录中缺少文件 %1。请修正这个问题或者获取程序的新副本。
SetupFileCorrupt=安装文件已损坏。请获取程序的新副本。
SetupFileCorruptOrWrongVer=安装文件已损坏,或是与这个安装程序的版本不兼容。请修正这个问题或获取新的程序副本。
InvalidParameter=无效的命令行参数:%n%n%1
SetupAlreadyRunning=安装程序正在运行。
-WindowsVersionNotSupported=这个程序不支持当前计算机运行的Windows版本。
-WindowsServicePackRequired=这个程序需要 %1 服务包 %2 或更高。
-NotOnThisPlatform=这个程序将不能运行于 %1。
-OnlyOnThisPlatform=这个程序必须运行于 %1。
-OnlyOnTheseArchitectures=这个程序只能在为下列处理器结构设计的Windows版本中进行安装:%n%n%1
-WinVersionTooLowError=这个程序需要 %1 版本 %2 或更高。
-WinVersionTooHighError=这个程序不能安装于 %1 版本 %2 或更高。
-AdminPrivilegesRequired=在安装这个程序时您必须以管理员身份登录。
-PowerUserPrivilegesRequired=在安装这个程序时您必须以管理员身份或有权限的用户组身份登录。
-SetupAppRunningError=安装程序发现 %1 当前正在运行。%n%n请先关闭所有运行的窗口,然后点击“确定”继续,或按“取消”退出。
-UninstallAppRunningError=卸载程序发现 %1 当前正在运行。%n%n请先关闭所有运行的窗口,然后点击“确定”继续,或按“取消”退出。
+WindowsVersionNotSupported=此程序不支持当前计算机运行的 Windows 版本。
+WindowsServicePackRequired=此程序需要 %1 服务包 %2 或更高版本。
+NotOnThisPlatform=此程序不能在 %1 上运行。
+OnlyOnThisPlatform=此程序只能在 %1 上运行。
+OnlyOnTheseArchitectures=此程序只能安装到为下列处理器架构设计的 Windows 版本中:%n%n%1
+WinVersionTooLowError=此程序需要 %1 版本 %2 或更高。
+WinVersionTooHighError=此程序不能安装于 %1 版本 %2 或更高。
+AdminPrivilegesRequired=在安装此程序时您必须以管理员身份登录。
+PowerUserPrivilegesRequired=在安装此程序时您必须以管理员身份或有权限的用户组身份登录。
+SetupAppRunningError=安装程序发现 %1 当前正在运行。%n%n请先关闭正在运行的程序,然后点击“确定”继续,或点击“取消”退出。
+UninstallAppRunningError=卸载程序发现 %1 当前正在运行。%n%n请先关闭正在运行的程序,然后点击“确定”继续,或点击“取消”退出。
; *** 启动问题
PrivilegesRequiredOverrideTitle=选择安装程序模式
PrivilegesRequiredOverrideInstruction=选择安装模式
PrivilegesRequiredOverrideText1=%1 可以为所有用户安装(需要管理员权限),或仅为您安装。
-PrivilegesRequiredOverrideText2=%1 只能为您安装,或为所有用户安装(需要管理员权限)。
+PrivilegesRequiredOverrideText2=%1 可以仅为您安装,或为所有用户安装(需要管理员权限)。
PrivilegesRequiredOverrideAllUsers=为所有用户安装(&A)
PrivilegesRequiredOverrideAllUsersRecommended=为所有用户安装(&A) (建议选项)
-PrivilegesRequiredOverrideCurrentUser=只为我安装(&M)
-PrivilegesRequiredOverrideCurrentUserRecommended=只为我安装(&M) (建议选项)
+PrivilegesRequiredOverrideCurrentUser=仅为我安装(&M)
+PrivilegesRequiredOverrideCurrentUserRecommended=仅为我安装(&M) (建议选项)
-; *** 其它错误
-ErrorCreatingDir=安装程序不能创建目录“%1”。
-ErrorTooManyFilesInDir=不能在目录“%1”中创建文件,因为里面的文件太多
+; *** 其他错误
+ErrorCreatingDir=安装程序无法创建目录“%1”
+ErrorTooManyFilesInDir=无法在目录“%1”中创建文件,因为里面包含太多文件
; *** 安装程序公共消息
ExitSetupTitle=退出安装程序
-ExitSetupMessage=安装程序还未完成安装。如果您现在退出,程序将不能安装。%n%n您可以以后再运行安装程序完成安装。%n%n现在退出安装程序吗?
+ExitSetupMessage=安装程序尚未完成。如果现在退出,将不会安装该程序。%n%n您之后可以再次运行安装程序完成安装。%n%n现在退出安装程序吗?
AboutSetupMenuItem=关于安装程序(&A)...
AboutSetupTitle=关于安装程序
AboutSetupMessage=%1 版本 %2%n%3%n%n%1 主页:%n%4
AboutSetupNote=
-TranslatorNote=
+TranslatorNote=简体中文翻译由Kira(847320916@qq.com)维护。项目地址:https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation
; *** 按钮
ButtonBack=< 上一步(&B)
@@ -113,40 +113,40 @@
; *** “选择语言”对话框消息
SelectLanguageTitle=选择安装语言
-SelectLanguageLabel=选择安装时要使用的语言。
+SelectLanguageLabel=选择安装时使用的语言。
; *** 公共向导文字
ClickNext=点击“下一步”继续,或点击“取消”退出安装程序。
BeveledLabel=
BrowseDialogTitle=浏览文件夹
-BrowseDialogLabel=在下列列表中选择一个文件夹,然后点击“确定”。
+BrowseDialogLabel=在下面的列表中选择一个文件夹,然后点击“确定”。
NewFolderName=新建文件夹
; *** “欢迎”向导页
WelcomeLabel1=欢迎使用 [name] 安装向导
-WelcomeLabel2=现在将安装 [name/ver] 到您的电脑中。%n%n推荐您在继续安装前关闭所有其它应用程序。
+WelcomeLabel2=现在将安装 [name/ver] 到您的电脑中。%n%n建议您在继续安装前关闭所有其他应用程序。
; *** “密码”向导页
WizardPassword=密码
PasswordLabel1=这个安装程序有密码保护。
PasswordLabel3=请输入密码,然后点击“下一步”继续。密码区分大小写。
PasswordEditLabel=密码(&P):
-IncorrectPassword=您所输入的密码不正确,请重试。
+IncorrectPassword=您输入的密码不正确,请重新输入。
; *** “许可协议”向导页
WizardLicense=许可协议
-LicenseLabel=继续安装前请阅读下列重要信息。
-LicenseLabel3=请仔细阅读下列许可协议。您在继续安装前必须同意这些协议条款。
+LicenseLabel=请在继续安装前阅读以下重要信息。
+LicenseLabel3=请仔细阅读下列许可协议。在继续安装前您必须同意这些协议条款。
LicenseAccepted=我同意此协议(&A)
LicenseNotAccepted=我不同意此协议(&D)
; *** “信息”向导页
WizardInfoBefore=信息
-InfoBeforeLabel=请在继续安装前阅读下列重要信息。
-InfoBeforeClickLabel=如果您想继续安装,点击“下一步”。
+InfoBeforeLabel=请在继续安装前阅读以下重要信息。
+InfoBeforeClickLabel=准备好继续安装后,点击“下一步”。
WizardInfoAfter=信息
-InfoAfterLabel=请在继续安装前阅读下列重要信息。
-InfoAfterClickLabel=如果您想继续安装,点击“下一步”。
+InfoAfterLabel=请在继续安装前阅读以下重要信息。
+InfoAfterClickLabel=准备好继续安装后,点击“下一步”。
; *** “用户信息”向导页
WizardUserInfo=用户信息
@@ -159,15 +159,15 @@
; *** “选择目标目录”向导页
WizardSelectDir=选择目标位置
SelectDirDesc=您想将 [name] 安装在哪里?
-SelectDirLabel3=安装程序将安装 [name] 到下列文件夹中。
-SelectDirBrowseLabel=点击“下一步”继续。如果您想选择其它文件夹,点击“浏览”。
+SelectDirLabel3=安装程序将安装 [name] 到下面的文件夹中。
+SelectDirBrowseLabel=点击“下一步”继续。如果您想选择其他文件夹,点击“浏览”。
DiskSpaceGBLabel=至少需要有 [gb] GB 的可用磁盘空间。
DiskSpaceMBLabel=至少需要有 [mb] MB 的可用磁盘空间。
CannotInstallToNetworkDrive=安装程序无法安装到一个网络驱动器。
-CannotInstallToUNCPath=安装程序无法安装到一个UNC路径。
-InvalidPath=您必须输入一个带驱动器卷标的完整路径,例如:%n%nC:\APP%n%n或下列形式的UNC路径:%n%n\\server\share
-InvalidDrive=您选定的驱动器或 UNC 共享不存在或不能访问。请选选择其它位置。
-DiskSpaceWarningTitle=没有足够的磁盘空间
+CannotInstallToUNCPath=安装程序无法安装到一个 UNC 路径。
+InvalidPath=您必须输入一个带驱动器卷标的完整路径,例如:%n%nC:\APP%n%n或UNC路径:%n%n\\server\share
+InvalidDrive=您选定的驱动器或 UNC 共享不存在或不能访问。请选择其他位置。
+DiskSpaceWarningTitle=磁盘空间不足
DiskSpaceWarning=安装程序至少需要 %1 KB 的可用空间才能安装,但选定驱动器只有 %2 KB 的可用空间。%n%n您一定要继续吗?
DirNameTooLong=文件夹名称或路径太长。
InvalidDirName=文件夹名称无效。
@@ -179,18 +179,18 @@
; *** “选择组件”向导页
WizardSelectComponents=选择组件
-SelectComponentsDesc=您想安装哪些程序的组件?
-SelectComponentsLabel2=选择您想要安装的组件;清除您不想安装的组件。然后点击“下一步”继续。
+SelectComponentsDesc=您想安装哪些程序组件?
+SelectComponentsLabel2=选中您想安装的组件;取消您不想安装的组件。然后点击“下一步”继续。
FullInstallation=完全安装
; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
CompactInstallation=简洁安装
CustomInstallation=自定义安装
NoUninstallWarningTitle=组件已存在
-NoUninstallWarning=安装程序检测到下列组件已在您的电脑中安装:%n%n%1%n%n取消选定这些组件将不能卸载它们。%n%n您一定要继续吗?
+NoUninstallWarning=安装程序检测到下列组件已安装在您的电脑中:%n%n%1%n%n取消选中这些组件不会卸载它们。%n%n确定要继续吗?
ComponentSize1=%1 KB
ComponentSize2=%1 MB
-ComponentsDiskSpaceGBLabel=当前选择的组件至少需要 [gb] GB 的磁盘空间。
-ComponentsDiskSpaceMBLabel=当前选择的组件至少需要 [mb] MB 的磁盘空间。
+ComponentsDiskSpaceGBLabel=当前选择的组件需要至少 [gb] GB 的磁盘空间。
+ComponentsDiskSpaceMBLabel=当前选择的组件需要至少 [mb] MB 的磁盘空间。
; *** “选择附加任务”向导页
WizardSelectTasks=选择附加任务
@@ -200,64 +200,74 @@
; *** “选择开始菜单文件夹”向导页
WizardSelectProgramGroup=选择开始菜单文件夹
SelectStartMenuFolderDesc=安装程序应该在哪里放置程序的快捷方式?
-SelectStartMenuFolderLabel3=安装程序现在将在下列开始菜单文件夹中创建程序的快捷方式。
-SelectStartMenuFolderBrowseLabel=点击“下一步”继续。如果您想选择其它文件夹,点击“浏览”。
+SelectStartMenuFolderLabel3=安装程序将在下列“开始”菜单文件夹中创建程序的快捷方式。
+SelectStartMenuFolderBrowseLabel=点击“下一步”继续。如果您想选择其他文件夹,点击“浏览”。
MustEnterGroupName=您必须输入一个文件夹名。
GroupNameTooLong=文件夹名或路径太长。
-InvalidGroupName=文件夹名是无效的。
+InvalidGroupName=无效的文件夹名字。
BadGroupName=文件夹名不能包含下列任何字符:%n%n%1
NoProgramGroupCheck2=不创建开始菜单文件夹(&D)
; *** “准备安装”向导页
WizardReady=准备安装
-ReadyLabel1=安装程序现在准备开始安装 [name] 到您的电脑中。
-ReadyLabel2a=点击“安装”继续此安装程序。如果您想要回顾或修改设置,请点击“上一步”。
-ReadyLabel2b=点击“安装”继续此安装程序?
+ReadyLabel1=安装程序准备就绪,现在可以开始安装 [name] 到您的电脑。
+ReadyLabel2a=点击“安装”继续此安装程序。如果您想重新考虑或修改任何设置,点击“上一步”。
+ReadyLabel2b=点击“安装”继续此安装程序。
ReadyMemoUserInfo=用户信息:
ReadyMemoDir=目标位置:
ReadyMemoType=安装类型:
-ReadyMemoComponents=选定组件:
+ReadyMemoComponents=已选择组件:
ReadyMemoGroup=开始菜单文件夹:
ReadyMemoTasks=附加任务:
-; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=正在下载附加文件...
+; *** TExtractionWizardPage 向导页面与 ExtractArchive
+ExtractingLabel=正在解压文件...
+ButtonStopExtraction=停止解压(&S)
+StopExtraction=您确定要停止解压吗?
+ErrorExtractionAborted=解压已中止
+ErrorExtractionFailed=解压失败:%1
+
+; *** 压缩文件解压失败详情
+ArchiveIncorrectPassword=压缩文件密码不正确
+ArchiveIsCorrupted=压缩文件已损坏
+ArchiveUnsupportedFormat=不支持的压缩文件格式
+
+; *** TDownloadWizardPage 向导页面和 DownloadTemporaryFile
+DownloadingLabel2=正在下载文件...
ButtonStopDownload=停止下载(&S)
StopDownload=您确定要停止下载吗?
ErrorDownloadAborted=下载已中止
ErrorDownloadFailed=下载失败:%1 %2
ErrorDownloadSizeFailed=获取下载大小失败:%1 %2
-ErrorFileHash1=校验文件哈希失败:%1
-ErrorFileHash2=无效的文件哈希:预期 %1,实际 %2
-ErrorProgress=无效的进度:%1,总共%2
+ErrorProgress=无效的进度:%1 / %2
ErrorFileSize=文件大小错误:预期 %1,实际 %2
; *** “正在准备安装”向导页
WizardPreparing=正在准备安装
-PreparingDesc=安装程序正在准备安装 [name] 到您的电脑中。
-PreviousInstallNotCompleted=先前程序的安装/卸载未完成。您需要重新启动您的电脑才能完成安装。%n%n在重新启动电脑后,再运行安装完成 [name] 的安装。
+PreparingDesc=安装程序正在准备安装 [name] 到您的电脑。
+PreviousInstallNotCompleted=先前的程序安装或卸载未完成,您需要重启您的电脑以完成。%n%n在重启电脑后,再次运行安装程序以完成 [name] 的安装。
CannotContinue=安装程序不能继续。请点击“取消”退出。
-ApplicationsFound=下列应用程序正在使用的文件需要更新设置。它是建议您允许安装程序自动关闭这些应用程序。
-ApplicationsFound2=下列应用程序正在使用的文件需要更新设置。它是建议您允许安装程序自动关闭这些应用程序。安装完成后,安装程序将尝试重新启动应用程序。
-CloseApplications=自动关闭该应用程序(&A)
-DontCloseApplications=不要关闭该应用程序(&D)
-ErrorCloseApplications=安装程序无法自动关闭所有应用程序。在继续之前,我们建议您关闭所有使用需要更新的安装程序文件。
-PrepareToInstallNeedsRestart=安装程序必须重新启动计算机。重新启动计算机后,请再次运行安装程序以完成 [name] 的安装。%n%n是否立即重新启动?
+ApplicationsFound=以下应用程序正在使用将由安装程序更新的文件。建议您允许安装程序自动关闭这些应用程序。
+ApplicationsFound2=以下应用程序正在使用将由安装程序更新的文件。建议您允许安装程序自动关闭这些应用程序。安装完成后,安装程序将尝试重新启动这些应用程序。
+CloseApplications=自动关闭应用程序(&A)
+DontCloseApplications=不要关闭应用程序(&D)
+ErrorCloseApplications=安装程序无法自动关闭所有应用程序。建议您在继续之前,关闭所有在使用需要由安装程序更新的文件的应用程序。
+PrepareToInstallNeedsRestart=安装程序必须重启您的计算机。计算机重启后,请再次运行安装程序以完成 [name] 的安装。%n%n是否立即重新启动?
; *** “正在安装”向导页
WizardInstalling=正在安装
-InstallingLabel=安装程序正在安装 [name] 到您的电脑中,请稍等。
+InstallingLabel=安装程序正在安装 [name] 到您的电脑,请稍候。
; *** “安装完成”向导页
FinishedHeadingLabel=[name] 安装完成
FinishedLabelNoIcons=安装程序已在您的电脑中安装了 [name]。
-FinishedLabel=安装程序已在您的电脑中安装了 [name]。此应用程序可以通过选择安装的快捷方式运行。
+FinishedLabel=安装程序已在您的电脑中安装了 [name]。您可以通过已安装的快捷方式运行此应用程序。
ClickFinish=点击“完成”退出安装程序。
-FinishedRestartLabel=要完成 [name] 的安装,安装程序必须重新启动您的电脑。您想要立即重新启动吗?
-FinishedRestartMessage=要完成 [name] 的安装,安装程序必须重新启动您的电脑。%n%n您想要立即重新启动吗?
+FinishedRestartLabel=为完成 [name] 的安装,安装程序必须重新启动您的电脑。要立即重启吗?
+FinishedRestartMessage=为完成 [name] 的安装,安装程序必须重新启动您的电脑。%n%n要立即重启吗?
ShowReadmeCheck=是,我想查阅自述文件
-YesRadio=是,立即重新启动电脑(&Y)
-NoRadio=否,稍后重新启动电脑(&N)
+YesRadio=是,立即重启电脑(&Y)
+NoRadio=否,稍后重启电脑(&N)
; used for example as 'Run MyProg.exe'
RunEntryExec=运行 %1
; used for example as 'View Readme.txt'
@@ -267,20 +277,24 @@
ChangeDiskTitle=安装程序需要下一张磁盘
SelectDiskLabel2=请插入磁盘 %1 并点击“确定”。%n%n如果这个磁盘中的文件可以在下列文件夹之外的文件夹中找到,请输入正确的路径或点击“浏览”。
PathLabel=路径(&P):
-FileNotInDir2=文件“%1”不能在“%2”定位。请插入正确的磁盘或选择其它文件夹。
+FileNotInDir2=“%2”中找不到文件“%1”。请插入正确的磁盘或选择其他文件夹。
SelectDirectoryLabel=请指定下一张磁盘的位置。
-; *** 安装状态消息
+; *** 安装阶段消息
SetupAborted=安装程序未完成安装。%n%n请修正这个问题并重新运行安装程序。
AbortRetryIgnoreSelectAction=选择操作
AbortRetryIgnoreRetry=重试(&T)
AbortRetryIgnoreIgnore=忽略错误并继续(&I)
AbortRetryIgnoreCancel=关闭安装程序
+RetryCancelSelectAction=选择操作
+RetryCancelRetry=重试(&T)
+RetryCancelCancel=取消(&C)
; *** 安装状态消息
StatusClosingApplications=正在关闭应用程序...
StatusCreateDirs=正在创建目录...
-StatusExtractFiles=正在解压缩文件...
+StatusExtractFiles=正在提取文件...
+StatusDownloadFiles=正在下载文件...
StatusCreateIcons=正在创建快捷方式...
StatusCreateIniEntries=正在创建 INI 条目...
StatusCreateRegistryEntries=正在创建注册表条目...
@@ -290,12 +304,12 @@
StatusRestartingApplications=正在重启应用程序...
StatusRollback=正在撤销更改...
-; *** 其它错误
+; *** 其他错误
ErrorInternal2=内部错误:%1
ErrorFunctionFailedNoCode=%1 失败
ErrorFunctionFailed=%1 失败;错误代码 %2
ErrorFunctionFailedWithMessage=%1 失败;错误代码 %2.%n%3
-ErrorExecutingProgram=不能执行文件:%n%1
+ErrorExecutingProgram=无法执行文件:%n%1
; *** 注册表错误
ErrorRegOpenKey=打开注册表项时出错:%n%1\%2
@@ -303,69 +317,79 @@
ErrorRegWriteKey=写入注册表项时出错:%n%1\%2
; *** INI 错误
-ErrorIniEntry=在文件“%1”中创建INI条目时出错。
+ErrorIniEntry=在文件“%1”中创建 INI 条目时出错。
; *** 文件复制错误
-FileAbortRetryIgnoreSkipNotRecommended=跳过这个文件(&S) (不推荐)
+FileAbortRetryIgnoreSkipNotRecommended=跳过此文件(&S) (不推荐)
FileAbortRetryIgnoreIgnoreNotRecommended=忽略错误并继续(&I) (不推荐)
SourceIsCorrupted=源文件已损坏
SourceDoesntExist=源文件“%1”不存在
-ExistingFileReadOnly2=无法替换现有文件,因为它是只读的。
+SourceVerificationFailed=源文件验证失败: %1
+VerificationSignatureDoesntExist=签名文件“%1”不存在
+VerificationSignatureInvalid=签名文件“%1”无效
+VerificationKeyNotFound=签名文件“%1”使用了未知密钥
+VerificationFileNameIncorrect=文件名不正确
+VerificationFileTagIncorrect=文件标签不正确
+VerificationFileSizeIncorrect=文件大小不正确
+VerificationFileHashIncorrect=文件哈希值不正确
+ExistingFileReadOnly2=无法替换现有文件,它是只读的。
ExistingFileReadOnlyRetry=移除只读属性并重试(&R)
ExistingFileReadOnlyKeepExisting=保留现有文件(&K)
ErrorReadingExistingDest=尝试读取现有文件时出错:
FileExistsSelectAction=选择操作
FileExists2=文件已经存在。
-FileExistsOverwriteExisting=覆盖已经存在的文件(&O)
+FileExistsOverwriteExisting=覆盖已存在的文件(&O)
FileExistsKeepExisting=保留现有的文件(&K)
-FileExistsOverwriteOrKeepAll=为所有的冲突文件执行此操作(&D)
+FileExistsOverwriteOrKeepAll=为所有冲突文件执行此操作(&D)
ExistingFileNewerSelectAction=选择操作
-ExistingFileNewer2=现有的文件比安装程序将要安装的文件更新。
-ExistingFileNewerOverwriteExisting=覆盖已经存在的文件(&O)
+ExistingFileNewer2=现有的文件比安装程序将要安装的文件还要新。
+ExistingFileNewerOverwriteExisting=覆盖已存在的文件(&O)
ExistingFileNewerKeepExisting=保留现有的文件(&K) (推荐)
-ExistingFileNewerOverwriteOrKeepAll=为所有的冲突文件执行此操作(&D)
-ErrorChangingAttr=尝试改变下列现有的文件的属性时出错:
+ExistingFileNewerOverwriteOrKeepAll=为所有冲突文件执行此操作(&D)
+ErrorChangingAttr=尝试更改下列现有文件的属性时出错:
ErrorCreatingTemp=尝试在目标目录创建文件时出错:
ErrorReadingSource=尝试读取下列源文件时出错:
ErrorCopying=尝试复制下列文件时出错:
-ErrorReplacingExistingFile=尝试替换现有的文件时出错:
-ErrorRestartReplace=重新启动替换失败:
-ErrorRenamingTemp=尝试重新命名以下目标目录中的一个文件时出错:
+ErrorDownloading=下载文件时出错:
+ErrorExtracting=解压压缩文件时出错:
+ErrorReplacingExistingFile=尝试替换现有文件时出错:
+ErrorRestartReplace=重启并替换失败:
+ErrorRenamingTemp=尝试重命名下列目标目录中的一个文件时出错:
ErrorRegisterServer=无法注册 DLL/OCX:%1
ErrorRegSvr32Failed=RegSvr32 失败;退出代码 %1
-ErrorRegisterTypeLib=无法注册类型库:%1
+ErrorRegisterTypeLib=无法注册类库:%1
; *** 卸载显示名字标记
; used for example as 'My Program (32-bit)'
UninstallDisplayNameMark=%1 (%2)
; used for example as 'My Program (32-bit, All users)'
UninstallDisplayNameMarks=%1 (%2, %3)
-UninstallDisplayNameMark32Bit=32位
-UninstallDisplayNameMark64Bit=64位
+UninstallDisplayNameMark32Bit=32 位
+UninstallDisplayNameMark64Bit=64 位
UninstallDisplayNameMarkAllUsers=所有用户
UninstallDisplayNameMarkCurrentUser=当前用户
; *** 安装后错误
ErrorOpeningReadme=尝试打开自述文件时出错。
-ErrorRestartingComputer=安装程序不能重新启动电脑,请手动重启。
+ErrorRestartingComputer=安装程序无法重启电脑,请手动重启。
; *** 卸载消息
UninstallNotFound=文件“%1”不存在。无法卸载。
-UninstallOpenError=文件“%1”不能打开。无法卸载。
+UninstallOpenError=文件“%1”不能被打开。无法卸载。
UninstallUnsupportedVer=此版本的卸载程序无法识别卸载日志文件“%1”的格式。无法卸载
-UninstallUnknownEntry=在卸载日志中遇到一个未知的条目 (%1)
-ConfirmUninstall=您确认想要完全删除 %1 及它的所有组件吗?
-UninstallOnlyOnWin64=这个安装程序只能在64位Windows中进行卸载。
-OnlyAdminCanUninstall=这个安装的程序需要有管理员权限的用户才能卸载。
-UninstallStatusLabel=正在从您的电脑中删除 %1,请稍等。
-UninstalledAll=%1 已顺利地从您的电脑中删除。
-UninstalledMost=%1 卸载完成。%n%n有一些内容无法被删除。您可以手动删除它们。
-UninstalledAndNeedsRestart=要完成 %1 的卸载,您的电脑必须重新启动。%n%n您想立即重新启动电脑吗?
-UninstallDataCorrupted=文件“%1”已损坏,无法卸载
+UninstallUnknownEntry=卸载日志中遇到一个未知条目 (%1)
+ConfirmUninstall=您确认要完全移除 %1 及其所有组件吗?
+UninstallOnlyOnWin64=仅允许在 64 位 Windows 中卸载此程序。
+OnlyAdminCanUninstall=仅使用管理员权限的用户能完成此卸载。
+UninstallStatusLabel=正在从您的电脑中移除 %1,请稍候。
+UninstalledAll=已顺利从您的电脑中移除 %1。
+UninstalledMost=%1 卸载完成。%n%n有部分内容未能被删除,但您可以手动删除它们。
+UninstalledAndNeedsRestart=为完成 %1 的卸载,需要重启您的电脑。%n%n立即重启电脑吗?
+UninstallDataCorrupted=文件“%1”已损坏。无法卸载
; *** 卸载状态消息
-ConfirmDeleteSharedFileTitle=删除共享文件吗?
-ConfirmDeleteSharedFile2=系统中包含的下列共享文件已经不再被其它程序使用。您想要卸载程序删除这些共享文件吗?%n%n如果这些文件被删除,但还有程序正在使用这些文件,这些程序可能不能正确执行。如果您不能确定,选择“否”。把这些文件保留在系统中以免引起问题。
+ConfirmDeleteSharedFileTitle=删除共享的文件吗?
+ConfirmDeleteSharedFile2=系统表示下列共享的文件已不有其他程序使用。您希望卸载程序删除这些共享的文件吗?%n%n如果删除这些文件,但仍有程序在使用这些文件,则这些程序可能出现异常。如果您不能确定,请选择“否”,在系统中保留这些文件以免引发问题。
SharedFileNameLabel=文件名:
SharedFileLocationLabel=位置:
WizardUninstalling=卸载状态
@@ -383,12 +407,12 @@
NameAndVersion=%1 版本 %2
AdditionalIcons=附加快捷方式:
CreateDesktopIcon=创建桌面快捷方式(&D)
-CreateQuickLaunchIcon=创建快速运行栏快捷方式(&Q)
+CreateQuickLaunchIcon=创建快速启动栏快捷方式(&Q)
ProgramOnTheWeb=%1 网站
UninstallProgram=卸载 %1
LaunchProgram=运行 %1
AssocFileExtension=将 %2 文件扩展名与 %1 建立关联(&A)
AssocingFileExtension=正在将 %2 文件扩展名与 %1 建立关联...
-AutoStartProgramGroupDescription=启动组:
+AutoStartProgramGroupDescription=启动:
AutoStartProgram=自动启动 %1
-AddonHostProgramNotFound=%1无法找到您所选择的文件夹。%n%n您想要继续吗?
+AddonHostProgramNotFound=您选择的文件夹中无法找到 %1。%n%n您要继续吗?
diff -Nru survex-1.4.17/lib/ChineseTraditional.isl survex-1.4.22/lib/ChineseTraditional.isl
--- survex-1.4.17/lib/ChineseTraditional.isl 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/lib/ChineseTraditional.isl 2026-03-21 21:06:18.000000000 +0000
@@ -1,5 +1,5 @@
-; *** Inno Setup version 6.1.0+ Chinese Traditional messages ***
-; Name: Enfong Tsao, nelson22768384@gmail.com
+; *** Inno Setup version 6.1.0+ Chinese (Traditional) messages ***
+; Name: Enfeng Tsao, nelson22768384@gmail.com
; Based on 5.5.3+ translations by Samuel Lee, Email: 751555749@qq.com
; Translation based on network resource
;
@@ -381,4 +381,4 @@
AssocingFileExtension=正在將 %1 與檔案副檔名 %2 產生關聯...
AutoStartProgramGroupDescription=開啟:
AutoStartProgram=自動開啟 %1
-AddonHostProgramNotFound=%1 無法在您所選的資料夾中找到。%n%n您是否還要繼續?
\ No newline at end of file
+AddonHostProgramNotFound=%1 無法在您所選的資料夾中找到。%n%n您是否還要繼續?
diff -Nru survex-1.4.17/lib/EnglishBritish.isl survex-1.4.22/lib/EnglishBritish.isl
--- survex-1.4.17/lib/EnglishBritish.isl 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/lib/EnglishBritish.isl 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
-; *** Inno Setup version 6.1.0+ English (British) messages ***
+; *** Inno Setup version 6.5.0+ English (British) messages ***
;
; Translated by Boris Kotov
-; Translation updated by Andrew Truckle
+; Translation updated by Andrew Truckle
[LangOptions]
; The following three entries are very important. Be sure to read and
@@ -37,6 +37,7 @@
SetupLdrStartupMessage=This will install %1. Do you wish to continue?
LdrCannotCreateTemp=Unable to create a temporary file. Setup aborted
LdrCannotExecTemp=Unable to execute file in the temporary directory. Setup aborted
+HelpTextNote=
; *** Startup error messages
LastErrorMessage=%1.%n%nError %2: %3
@@ -205,17 +206,27 @@
ReadyMemoTasks=Additional tasks:
; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=Downloading additional files...
+DownloadingLabel2=Downloading files...
ButtonStopDownload=&Stop download
StopDownload=Are you sure you want to stop the download?
ErrorDownloadAborted=Download aborted
ErrorDownloadFailed=Download failed: %1 %2
ErrorDownloadSizeFailed=Getting size failed: %1 %2
-ErrorFileHash1=File hash failed: %1
-ErrorFileHash2=Invalid file hash: expected %1, found %2
ErrorProgress=Invalid progress: %1 of %2
ErrorFileSize=Invalid file size: expected %1, found %2
+; *** TExtractionWizardPage wizard page and ExtractArchive
+ExtractingLabel=Extracting files...
+ButtonStopExtraction=&Stop extraction
+StopExtraction=Are you sure you want to stop the extraction?
+ErrorExtractionAborted=Extraction aborted
+ErrorExtractionFailed=Extraction failed: %1
+
+; *** Archive extraction failure details
+ArchiveIncorrectPassword=The password is incorrect
+ArchiveIsCorrupted=The archive is corrupted
+ArchiveUnsupportedFormat=The archive format is unsupported
+
; *** "Preparing to Install" wizard page
WizardPreparing=Preparing to Install
PreparingDesc=Setup is preparing to install [name] on your computer.
@@ -260,11 +271,15 @@
AbortRetryIgnoreRetry=&Try again
AbortRetryIgnoreIgnore=&Ignore the error and continue
AbortRetryIgnoreCancel=Cancel installation
+RetryCancelSelectAction=Select action
+RetryCancelRetry=&Try again
+RetryCancelCancel=Cancel
; *** Installation status messages
StatusClosingApplications=Closing applications...
StatusCreateDirs=Creating directories...
StatusExtractFiles=Extracting files...
+StatusDownloadFiles=Downloading files...
StatusCreateIcons=Creating shortcuts...
StatusCreateIniEntries=Creating INI entries...
StatusCreateRegistryEntries=Creating registry entries...
@@ -294,6 +309,14 @@
FileAbortRetryIgnoreIgnoreNotRecommended=&Ignore the error and continue (not recommended)
SourceIsCorrupted=The source file is corrupted
SourceDoesntExist=The source file "%1" does not exist
+SourceVerificationFailed=Verification of the source file failed: %1
+VerificationSignatureDoesntExist=The signature file "%1" does not exist
+VerificationSignatureInvalid=The signature file "%1" is invalid
+VerificationKeyNotFound=The signature file "%1" uses an unknown key
+VerificationFileNameIncorrect=The name of the file is incorrect
+VerificationFileTagIncorrect=The tag of the file is incorrect
+VerificationFileSizeIncorrect=The size of the file is incorrect
+VerificationFileHashIncorrect=The hash of the file is incorrect
ExistingFileReadOnly2=The existing file could not be replaced because it is marked read-only.
ExistingFileReadOnlyRetry=&Remove the read-only attribute and try again
ExistingFileReadOnlyKeepExisting=&Keep the existing file
@@ -312,6 +335,8 @@
ErrorCreatingTemp=An error occurred while trying to create a file in the destination directory:
ErrorReadingSource=An error occurred while trying to read the source file:
ErrorCopying=An error occurred while trying to copy a file:
+ErrorDownloading=An error occurred while trying to download a file:
+ErrorExtracting=An error occurred while trying to extract an archive:
ErrorReplacingExistingFile=An error occurred while trying to replace the existing file:
ErrorRestartReplace=RestartReplace failed:
ErrorRenamingTemp=An error occurred while trying to rename a file in the destination directory:
diff -Nru survex-1.4.17/lib/Greek.isl survex-1.4.22/lib/Greek.isl
--- survex-1.4.17/lib/Greek.isl 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/lib/Greek.isl 2026-03-21 21:06:18.000000000 +0000
@@ -1,390 +1,412 @@
-; *** Inno Setup version 6.1.0+ Greek messages ***
-;
-; To download user-contributed translations of this file, go to:
-; https://jrsoftware.org/files/istrans/
-;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-;
-; Originally translated by Anastasis Chatzioglou, baldycom@hotmail.com
-; Updated by XhmikosR [XhmikosR, my_nickname at yahoo dot com]
-; Updated to version 6.1.0+ by Vasileios Karamichail, v.karamichail@outlook.com
-;
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Ελληνικά
-LanguageID=$0408
-LanguageCodePage=1253
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=Εγκατάσταση
-SetupWindowTitle=Εγκατάσταση - %1
-UninstallAppTitle=Απεγκατάσταση
-UninstallAppFullTitle=%1 Απεγκατάσταση
-
-; *** Misc. common
-InformationTitle=Πληροφορίες
-ConfirmTitle=Επιβεβαίωση
-ErrorTitle=Σφάλμα
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=Θα εκτελεστεί η εγκατάσταση του %1. Θέλετε να συνεχίσετε;
-LdrCannotCreateTemp=Σφάλμα στη δημιουργία προσωρινού αρχείου. Η εγκατάσταση τερματίστηκε
-LdrCannotExecTemp=Αδύνατη η εκτέλεση αρχείου στον φάκελο προσωρινών αρχείων. Η εγκατάσταση τερματίστηκε
-HelpTextNote=
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%nΣφάλμα %2: %3
-SetupFileMissing=Το αρχείο %1 λείπει από τον κατάλογο εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.
-SetupFileCorrupt=Το αρχείο εγκατάστασης είναι κατεστραμμένο. Παρακαλώ προμηθευτείτε ένα νέο αντίγραφο του προγράμματος.
-SetupFileCorruptOrWrongVer=Το αρχείο εγκατάστασης είναι κατεστραμμένο ή δεν είναι συμβατό με αυτήν την έκδοση του προγράμματος εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.
-InvalidParameter=Μία μη έγκυρη παράμετρος χρησιμοποιήθηκε στη γραμμή εντολών:%n%n%1
-SetupAlreadyRunning=Η εγκατάσταση τρέχει ήδη.
-WindowsVersionNotSupported=Αυτό το πρόγραμμα δεν υποστηρίζει την έκδοση των Windows που εκτελεί ο υπολογιστής σας.
-WindowsServicePackRequired=Αυτό το πρόγραμμα χρειάζεται το %1 Service Pack %2 ή νεότερο.
-NotOnThisPlatform=Αυτό το πρόγραμμα δεν μπορεί να εκτελεστεί σε %1.
-OnlyOnThisPlatform=Αυτό το πρόγραμμα μπορεί να εκτελεστεί μόνο σε %1.
-OnlyOnTheseArchitectures=Αυτό το πρόγραμμα μπορεί να εγκατασταθεί μόνο σε εκδόσεις των Windows που έχουν σχεδιαστεί για τις ακόλουθες αρχιτεκτονικές επεξεργαστών:%n%n%1
-WinVersionTooLowError=Αυτό το πρόγραμμα απαιτεί %1 έκδοση %2 ή μεταγενέστερη.
-WinVersionTooHighError=Αυτό το πρόγραμμα δεν μπορεί να εγκατασταθεί σε %1 έκδοση %2 ή μεταγενέστερη.
-AdminPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής κατά την εγκατάσταση αυτού του προγράμματος.
-PowerUserPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής ή ως μέλος της ομάδας Power User κατά την εγκατάσταση αυτού του προγράμματος.
-SetupAppRunningError=Ο Οδηγός Εγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.
-UninstallAppRunningError=Ο Οδηγός Απεγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.
-
-; *** Startup questions
-PrivilegesRequiredOverrideTitle=Επιλέξτε Τρόπο Εγκατάστασης
-PrivilegesRequiredOverrideInstruction=Επιλέξτε τον τρόπο εγκατάστασης
-PrivilegesRequiredOverrideText1=Το %1 μπορεί να εγκατασταθεί για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή) ή μόνο για εσάς.
-PrivilegesRequiredOverrideText2=Το %1 μπορεί να εγκατασταθεί μόνο για εσάς ή για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή).
-PrivilegesRequiredOverrideAllUsers=Εγκατάσταση για &όλους τους χρήστες
-PrivilegesRequiredOverrideAllUsersRecommended=Εγκατάσταση για όλ&ους τους χρήστες (συνιστάται)
-PrivilegesRequiredOverrideCurrentUser=Εγκατάσταση μόνο για &εμένα
-PrivilegesRequiredOverrideCurrentUserRecommended=Εγκατάσταση μόνο για &εμένα (συνιστάται)
-
-; *** Misc. errors
-ErrorCreatingDir=Η εγκατάσταση δεν μπόρεσε να δημιουργήσει τον φάκελο "%1"
-ErrorTooManyFilesInDir=Δεν είναι δυνατή η δημιουργία ενός αρχείου στον φάκελο "%1" επειδή περιέχει πολλά αρχεία
-
-; *** Setup common messages
-ExitSetupTitle=Τέλος Εγκατάστασης
-ExitSetupMessage=Η εγκατάσταση δεν έχει ολοκληρωθεί. Αν την τερματίσετε τώρα, το πρόγραμμα δεν θα εγκατασταθεί.%n%nΜπορείτε να εκτελέσετε ξανά την εγκατάσταση αργότερα.%n%nΈξοδος;
-AboutSetupMenuItem=&Σχετικά με την Εγκατάσταση...
-AboutSetupTitle=Σχετικά με την Εγκατάσταση
-AboutSetupMessage=%1 έκδοση %2%n%3%n%n%1 αρχική σελίδα:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< &Πίσω
-ButtonNext=&Επόμενο >
-ButtonInstall=&Εγκατάσταση
-ButtonOK=ΟΚ
-ButtonCancel=&Ακυρο
-ButtonYes=Ν&αι
-ButtonYesToAll=Ναι σε &Ολα
-ButtonNo=Ό&χι
-ButtonNoToAll=Όχι &σε όλα
-ButtonFinish=&Τέλος
-ButtonBrowse=&Αναζήτηση...
-ButtonWizardBrowse=Ανα&ζήτηση...
-ButtonNewFolder=&Δημιουργία νέου φακέλου
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Επιλογή Γλώσσας Οδηγού Εγκατάστασης
-SelectLanguageLabel=Επιλέξτε τη γλώσσα που θέλετε να χρησιμοποιήσετε κατά την εγκατάσταση.
-
-; *** Common wizard text
-ClickNext=Πατήστε Επόμενο για να συνεχίσετε ή Άκυρο για να τερματίσετε την εγκατάσταση.
-BeveledLabel=
-BrowseDialogTitle=Αναζήτηση Φακέλου
-BrowseDialogLabel=Επιλέξτε ένα φάκελο από την ακόλουθη λίστα και πατήστε ΟΚ.
-NewFolderName=Νέος φάκελος
-
-; *** "Welcome" wizard page
-WelcomeLabel1=Καλως ορίσατε στον Οδηγό Εγκατάστασης του [name]
-WelcomeLabel2=Θα γίνει εγκατάσταση του [name/ver] στον υπολογιστή σας.%n%nΣυνιστάται να κλείσετε όλες τις άλλες εφαρμογές πριν συνεχίσετε.
-
-; *** "Password" wizard page
-WizardPassword=Κωδικός Πρόσβασης
-PasswordLabel1=Αυτή η εγκατάσταση προστατεύεται με κωδικό πρόσβασης.
-PasswordLabel3=Παρακαλώ εισάγετε τον κωδικό και πατήστε Επόμενο.
-PasswordEditLabel=&Κωδικός:
-IncorrectPassword=Ο κωδικός που έχετε εισάγει είναι λανθασμένος. Παρακαλώ, προσπαθήστε ξανά.
-
-; *** "License Agreement" wizard page
-WizardLicense=Άδεια Χρήσης
-LicenseLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
-LicenseLabel3=Παρακαλώ διαβάστε την ακόλουθη Άδεια Χρήσης. Θα πρέπει να αποδεχτείτε τους όρους της πριν συνεχίσετε την εγκατάσταση.
-LicenseAccepted=&Δέχομαι τους όρους της Άδειας Χρήσης
-LicenseNotAccepted=Δεν &αποδέχομαι τους όρους της Άδειας Χρήσης
-
-; *** "Information" wizard pages
-WizardInfoBefore=Πληροφορίες
-InfoBeforeLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
-InfoBeforeClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.
-WizardInfoAfter=Πληροφορίες
-InfoAfterLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
-InfoAfterClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.
-
-; *** "User Information" wizard page
-WizardUserInfo=Πληροφορίες Χρήστη
-UserInfoDesc=Παρακαλώ εισάγετε τα στοιχεία σας.
-UserInfoName=&Ονομα Χρήστη:
-UserInfoOrg=&Εταιρεία:
-UserInfoSerial=&Σειριακός Αριθμός:
-UserInfoNameRequired=Πρέπει να εισάγετε ένα όνομα.
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Επιλογή Φακέλου Εγκατάστασης
-SelectDirDesc=Πού θέλετε να εγκατασταθεί το [name];
-SelectDirLabel3=Ο Οδηγός Εγκατάστασης θα εγκαταστήσει το [name] στον ακόλουθο φάκελο.
-SelectDirBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Εάν θέλετε να επιλέξετε διαφορετικό φάκελο, πατήστε Αναζήτηση.
-DiskSpaceGBLabel=Απαιτούνται τουλάχιστον [gb] GB ελεύθερου χώρου στο δίσκο.
-DiskSpaceMBLabel=Απαιτούνται τουλάχιστον [mb] MB ελεύθερου χώρου στο δίσκο.
-CannotInstallToNetworkDrive=Η εγκατάσταση δεν μπορεί να γίνει σε δίσκο δικτύου.
-CannotInstallToUNCPath=Η εγκατάσταση δεν μπορεί να γίνει σε διαδρομή UNC.
-InvalidPath=Πρέπει να δώσετε την πλήρη διαδρομή με το γράμμα δίσκου, για παράδειγμα:%n%nC:\APP%n%nή μια διαδρομή UNC της μορφής:%n%n\\server\share
-InvalidDrive=Ο τοπικός δίσκος ή ο δίσκος δικτύου που έχετε επιλέξει δεν υπάρχει ή δεν είναι προσβάσιμος. Παρακαλώ, επιλέξτε άλλον.
-DiskSpaceWarningTitle=Ανεπαρκής Χώρος στο Δίσκο
-DiskSpaceWarning=Η εγκατάσταση χρειάζεται τουλάχιστον %1 KB ελεύθερο χώρο στο δίσκο αλλά ο επιλεγμένος δίσκος διαθέτει μόνον %2 KB.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
-DirNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.
-InvalidDirName=Το όνομα του φακέλου δεν είναι έγκυρο.
-BadDirName32=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1
-DirExistsTitle=Ο Φάκελος Υπάρχει
-DirExists=Ο φάκελος:%n%n%1%n%nυπάρχει ήδη. Θέλετε να γίνει η εγκατάσταση σε αυτόν τον φάκελο παρόλα αυτά;
-DirDoesntExistTitle=Ο Φάκελος Δεν Υπάρχει
-DirDoesntExist=Ο φάκελος:%n%n%1%n%nδεν υπάρχει. Θέλετε να δημιουργηθεί;
-
-; *** "Select Components" wizard page
-WizardSelectComponents=Επιλογή Λειτουργιών Μονάδων
-SelectComponentsDesc=Ποια στοιχεία θέλετε να εγκατασταθούν;
-SelectComponentsLabel2=Επιλέξτε τα στοιχεία που θέλετε να εγκαταστήσετε, αποεπιλέξτε τα στοιχεία που δεν θέλετε να εγκαταστήσετε. Πατήστε Επόμενο όταν είστε έτοιμοι να συνεχίσετε.
-FullInstallation=Πλήρης εγκατάσταση
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Τυπική εγκατάσταση
-CustomInstallation=Προσαρμοσμένη εγκατάσταση
-NoUninstallWarningTitle=Οι Λειτουργικές Μονάδες Υπάρχουν
-NoUninstallWarning=Ο Οδηγός Εγκατάστασης εντόπισε ότι τα ακόλουθα στοιχεία είναι ήδη εγκατεστημένα στον υπολογιστή σας:%n%n%1%n%nΑποεπιλέγοντας αυτά τα στοιχεία δεν θα απεγκατασταθούν.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceGBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [gb] GB χώρου στο δίσκο.
-ComponentsDiskSpaceMBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [mb] MB χώρου στο δίσκο.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Επιλογή Επιπλέον Ενεργειών
-SelectTasksDesc=Ποιες επιπλέον ενέργειες θέλετε να γίνουν;
-SelectTasksLabel2=Επιλέξτε τις επιπλέον ενέργειες που θέλετε να γίνουν κατά την εγκατάσταση του [name] και πατήστε Επόμενο.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Επιλογή Φακέλου Μενού Έναρξης
-SelectStartMenuFolderDesc=Πού θέλετε να τοποθετηθούν οι συντομεύσεις του προγράμματος;
-SelectStartMenuFolderLabel3=Η εγκατάσταση θα δημιουργήσει τις συντομεύσεις του προγράμματος στον ακόλουθο φάκελο του μενού Έναρξη.
-SelectStartMenuFolderBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Αν θέλετε διαφορετικό φάκελο, πατήστε Αναζήτηση.
-MustEnterGroupName=Πρέπει να εισαγάγετε ένα όνομα φακέλου.
-GroupNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.
-InvalidGroupName=Το όνομα του φακέλου δεν είναι έγκυρο.
-BadGroupName=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1
-NoProgramGroupCheck2=&Χωρίς δημιουργία φακέλου στο μενού Έναρξης.
-
-; *** "Ready to Install" wizard page
-WizardReady=Έτοιμα για Εγκατάσταση
-ReadyLabel1=Ο Οδηγός Εγκατάστασης είναι έτοιμος να ξεκινήσει την εγκατάσταση του [name] στον υπολογιστή σας.
-ReadyLabel2a=Πατήστε Εγκατάσταση για να συνεχίσετε με την εγκατάσταση ή πατήστε Πίσω, εάν θέλετε να ελέγξετε ή να αλλάξετε τυχόν ρυθμίσεις.
-ReadyLabel2b=Πατήστε Εγκατάσταση για να συνεχίσετε την εγκατάσταση.
-ReadyMemoUserInfo=Πληροφορίες Χρήστη:
-ReadyMemoDir=Φάκελος προορισμού:
-ReadyMemoType=Είδος εγκατάστασης:
-ReadyMemoComponents=Επιλεγμένες λειτουργικές μονάδες:
-ReadyMemoGroup=Φάκελος στο μενού Έναρξη:
-ReadyMemoTasks=Επιπλέον ενέργειες:
-
-; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=Λήψη πρόσθετων αρχείων...
-ButtonStopDownload=&Διακοπή λήψης
-StopDownload=Είστε βέβαιοι ότι θέλετε να διακόψετε τη λήψη;
-ErrorDownloadAborted=Η λήψη ακυρώθηκε
-ErrorDownloadFailed=Η λήψη απέτυχε: %1 %2
-ErrorDownloadSizeFailed=Η λήψη του μεγέθους απέτυχε: %1 %2
-ErrorFileHash1=Αποτυχία υπολογισμού hash: %1
-ErrorFileHash2=Μη έγκυρο hash: αναμενόμενο %1, βρέθηκε %2
-ErrorProgress=Μη έγκυρη πρόοδος: %1 από %2
-ErrorFileSize=Μη έγκυρο μέγεθος αρχείου: αναμενόμενο %1, βρέθηκε %2
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=Προετοιμασία Εγκατάστασης
-PreparingDesc=Ο Οδηγός Εγκατάστασης προετοιμάζεται για την εγκατάσταση του [name] στον υπολογιστή σας.
-PreviousInstallNotCompleted=Η εγκατάσταση/αφαίρεση ενός προηγούμενου προγράμματος δεν ολοκληρώθηκε. Θα χρειαστεί να κάνετε επανεκκίνηση του υπολογιστή σας για να ολοκληρωθεί.%n%nΜετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση/αφαίρεση του [name].
-CannotContinue=Η εγκατάσταση δεν μπορεί να συνεχιστεί. Παρακαλώ πατήστε Άκυρο για τερματισμό.
-ApplicationsFound=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές.
-ApplicationsFound2=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές. Μετά την ολοκλήρωση της εγκατάστασης, ο Οδηγός Εγκατάστασης θα επιχειρήσει να κάνει επανεκκίνηση των εφαρμογών.
-CloseApplications=&Αυτόματο κλείσιμο των εφαρμογών
-DontCloseApplications=&Χωρίς κλείσιμο των εφαρμογών
-ErrorCloseApplications=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κλείσει αυτόματα όλες τις εφαρμογές. Συνιστάται να κλείσετε όλες τις εφαρμογές που χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης προτού συνεχίσετε.
-PrepareToInstallNeedsRestart=Ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Μετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση του [name].%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
-
-; *** "Installing" wizard page
-WizardInstalling=Εγκατάσταση
-InstallingLabel=Παρακαλώ περιμένετε καθώς γίνεται η εγκατάσταση του [name] στον υπολογιστή σας.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=Ολοκλήρωση του Οδηγού Εγκατάστασης του [name]
-FinishedLabelNoIcons=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας.
-FinishedLabel=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας. Η εφαρμογή μπορεί να ξεκινήσει επιλέγοντας κάποια από τις εγκατεστημένες συντομεύσεις.
-ClickFinish=Πατήστε Τέλος για να τερματίσετε τον Οδηγό Εγκατάστασης.
-FinishedRestartLabel=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Θα θέλατε να κάνετε επανεκκίνηση τώρα;
-FinishedRestartMessage=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
-ShowReadmeCheck=Ναι, θα ήθελα να δω το αρχείο README
-YesRadio=&Ναι, να γίνει επανεκκίνηση τώρα
-NoRadio=&Οχι, θα κάνω επανεκκίνηση αργότερα
-; used for example as 'Run MyProg.exe'
-RunEntryExec=Εκτέλεση του %1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=Προβολή του %1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=Ο Οδηγός Εγκατάστασης χρειάζεται τον επόμενο δίσκο
-SelectDiskLabel2=Παρακαλώ, εισάγετε τον δίσκο %1 και πατήστε ΟΚ.%n%nΕάν τα αρχεία αυτού του δίσκου βρίσκονται σε φάκελο διαφορετικό από αυτόν που εμφανίζεται παρακάτω, πληκτρολογήστε τη σωστή διαδρομή ή πατήστε Αναζήτηση.
-PathLabel=&Διαδρομή:
-FileNotInDir2=Το αρχείο "%1" δε βρέθηκε στο "%2". Παρακαλώ εισάγετε το σωστό δίσκο ή επιλέξτε κάποιον άλλο φάκελο.
-SelectDirectoryLabel=Παρακαλώ καθορίσετε την τοποθεσία του επόμενου δίσκου.
-
-; *** Installation phase messages
-SetupAborted=Η εγκατάσταση δεν ολοκληρώθηκε.%n%nΠαρακαλώ, διορθώστε το πρόβλημα και εκτελέστε ξανά τον Οδηγό Εγκατάστασης.
-AbortRetryIgnoreSelectAction=Επιλέξτε ενέργεια
-AbortRetryIgnoreRetry=&Δοκιμή
-AbortRetryIgnoreIgnore=&Αγνόηση και συνέχεια
-AbortRetryIgnoreCancel=Ακυρώση εγκατάστασης
-
-; *** Installation status messages
-StatusClosingApplications=Κλείσιμο εφαρμογών...
-StatusCreateDirs=Δημιουργία φακέλων...
-StatusExtractFiles=Αποσυμπίεση αρχείων...
-StatusCreateIcons=Δημιουργία συντομεύσεων...
-StatusCreateIniEntries=Δημιουργία καταχωρήσεων INI...
-StatusCreateRegistryEntries=Δημιουργία καταχωρήσεων στο μητρώο...
-StatusRegisterFiles=Καταχώρηση αρχείων...
-StatusSavingUninstall=Αποθήκευση πληροφοριών απεγκατάστασης...
-StatusRunProgram=Ολοκλήρωση εγκατάστασης...
-StatusRestartingApplications=Επανεκκίνηση εφαρμογών...
-StatusRollback=Επαναφορά αλλαγών...
-
-; *** Misc. errors
-ErrorInternal2=Εσωτερικό σφάλμα: %1
-ErrorFunctionFailedNoCode=%1 απέτυχε
-ErrorFunctionFailed=%1 απέτυχε, κωδικός %2
-ErrorFunctionFailedWithMessage=%1 απέτυχε, κωδικός %2.%n%3
-ErrorExecutingProgram=Δεν είναι δυνατή η εκτέλεση του αρχείου:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=Σφάλμα ανάγνωσης κλειδιού μητρώου:%n%1\%2
-ErrorRegCreateKey=Σφάλμα δημιουργίας κλειδιού μητρώου:%n%1\%2
-ErrorRegWriteKey=Σφάλμα καταχώρησης κλειδιού μητρώου:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=Σφάλμα στη δημιουργία καταχώρησης INI στο αρχείο "%1".
-
-; *** File copying errors
-FileAbortRetryIgnoreSkipNotRecommended=&Παράλειψη αυτού του αρχείου (δεν συνιστάται)
-FileAbortRetryIgnoreIgnoreNotRecommended=Παράλειψη σφάλματος και &συνέχεια (δεν συνιστάται)
-SourceIsCorrupted=Το αρχείο προέλευσης είναι κατεστραμμένο
-SourceDoesntExist=Το αρχείο προέλευσης "%1" δεν υπάρχει
-ExistingFileReadOnly2=Το υπάρχον αρχείο δεν μπόρεσε να αντικατασταθεί επειδή είναι μόνο για ανάγνωση.
-ExistingFileReadOnlyRetry=&Καταργήστε το χαρακτηριστικό μόνο για ανάγνωση και δοκιμάστε ξανά
-ExistingFileReadOnlyKeepExisting=&Διατηρήστε το υπάρχον αρχείο
-ErrorReadingExistingDest=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του υπάρχοντος αρχείου:
-FileExistsSelectAction=Επιλέξτε ενέργεια
-FileExists2=Το αρχείο υπάρχει ήδη.
-FileExistsOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου
-FileExistsKeepExisting=&Διατήρηση υπάρχοντος αρχείου
-FileExistsOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις
-ExistingFileNewerSelectAction=Επιλέξτε ενέργεια
-ExistingFileNewer2=Το υπάρχον αρχείο είναι νεότερο από αυτό που προσπαθεί να εγκαταστήσει ο Οδηγός Εγκατάστασης.
-ExistingFileNewerOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου
-ExistingFileNewerKeepExisting=&Διατήρηση υπάρχοντος αρχείου (συνιστάται)
-ExistingFileNewerOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις
-ErrorChangingAttr=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αλλαγής των χαρακτηριστικών του υπάρχοντος αρχείου:
-ErrorCreatingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας ενός αρχείου στον φακέλο προορισμού:
-ErrorReadingSource=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του αρχείου προέλευσης:
-ErrorCopying=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντιγραφής ενός αρχείου:
-ErrorReplacingExistingFile=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντικατάστασης του υπάρχοντος αρχείου:
-ErrorRestartReplace=Η ΕπανεκκίνησηΑντικατάσταση απέτυχε:
-ErrorRenamingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια μετονομασίας ενός αρχείου στον φακέλο προορισμού:
-ErrorRegisterServer=Δεν είναι δυνατή η καταχώριση του DLL/OCX: %1
-ErrorRegSvr32Failed=Το RegSvr32 απέτυχε με κωδικό εξόδου %1
-ErrorRegisterTypeLib=Δεν είναι δυνατή η καταχώριση της βιβλιοθήκης τύπων: %1
-
-; *** Uninstall display name markings
-; used for example as 'My Program (32-bit)'
-UninstallDisplayNameMark=%1 (%2)
-; used for example as 'My Program (32-bit, All users)'
-UninstallDisplayNameMarks=%1 (%2, %3)
-UninstallDisplayNameMark32Bit=32-bit
-UninstallDisplayNameMark64Bit=64-bit
-UninstallDisplayNameMarkAllUsers=Ολοι οι χρήστες
-UninstallDisplayNameMarkCurrentUser=Τρέχων χρήστης
-
-; *** Post-installation errors
-ErrorOpeningReadme=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανοίγματος του αρχείου README.
-ErrorRestartingComputer=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κάνει επανεκκίνηση του υπολογιστή. Παρακαλώ επανεκκινήσετε τον υπολογιστή μόνοι σας.
-
-; *** Uninstaller messages
-UninstallNotFound=Το αρχείο "%1" δεν υπάρχει. Δεν είναι δυνατή η απεγκατάσταση.
-UninstallOpenError=Το αρχείο "%1" δεν ήταν δυνατό να ανοίξει. Δεν είναι δυνατή η απεγκατάσταση
-UninstallUnsupportedVer=Το αρχείο καταγραφής απεγκατάστασης "%1" είναι σε μορφή που δεν αναγνωρίζεται από αυτήν την έκδοση του Οδηγού Απεγκατάστασης. Δεν ήταν δυνατή η απεγκατάσταση
-UninstallUnknownEntry=Μια άγνωστη καταχώρηση (%1) εντοπίστηκε στο αρχείο καταγραφής απεγκατάστασης
-ConfirmUninstall=Είστε βέβαιοι ότι θέλετε να καταργήσετε εντελώς το %1 και όλα τα στοιχεία του;
-UninstallOnlyOnWin64=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο σε Windows 64-bit.
-OnlyAdminCanUninstall=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο από χρήστη με δικαιώματα διαχειριστή.
-UninstallStatusLabel=Παρακαλώ περιμένετε μέχρι να καταργηθεί το %1 από τον υπολογιστή σας.
-UninstalledAll=Το %1 αφαιρέθηκε με επιτυχία από τον υπολογιστή σας.
-UninstalledMost=Το %1 αφαιρέθηκε με επιτυχία.%n%nΟρισμένα στοιχεία δεν ήταν δυνατό να καταργηθούν. Αυτά μπορούν να αφαιρεθούν από εσάς.
-UninstalledAndNeedsRestart=Για να ολοκληρώσετε την απεγκατάσταση του %1, ο υπολογιστής σας πρέπει να επανεκκινηθεί.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
-UninstallDataCorrupted=Το "%1" αρχείο είναι κατεστραμμένο. Δεν ήταν δυνατή η απεγκατάσταση
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Κατάργηση Κοινόχρηστου Αρχείου;
-ConfirmDeleteSharedFile2=Το σύστημα υποδεικνύει ότι το ακόλουθο κοινόχρηστο αρχείο δεν χρησιμοποιείται πλέον από κανένα πρόγραμμα. Θέλετε να καταργηθεί αυτό το κοινόχρηστο αρχείο;%n%nΕάν κάποιο πρόγραμμα εξακολουθεί να το χρησιμοποιεί, ενδέχεται να μην λειτουργήσει σωστά. Εάν δεν είστε βέβαιοι, επιλέξτε Όχι. Αφήνοντάς το στο σύστημά σας δεν θα προκληθεί καμία ζημιά.
-SharedFileNameLabel=Όνομα Αρχείου:
-SharedFileLocationLabel=Τοποθεσία:
-WizardUninstalling=Πρόοδος Απεγκατάστασης
-StatusUninstalling=Απεγκατάσταση %1...
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=Εγκατάσταση του %1.
-ShutdownBlockReasonUninstallingApp=Απεγκατάσταση του %1.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1 έκδοση %2
-AdditionalIcons=Επιπλέον συντομεύσεις:
-CreateDesktopIcon=Δημιουργία συντόμευσης στην &επιφάνεια εργασίας
-CreateQuickLaunchIcon=Δημιουργία συντόμευσης στη &Γρήγορη Εκκίνηση
-ProgramOnTheWeb=Το %1 στο Internet
-UninstallProgram=Απεγκατάσταση του %1
-LaunchProgram=Εκκίνηση του %1
-AssocFileExtension=&Συσχέτιση του %1 με την επέκταση αρχείου %2
-AssocingFileExtension=Γίνεται συσχέτιση του %1 με την επέκταση αρχείου "%2"...
-AutoStartProgramGroupDescription=Εκκίνηση:
-AutoStartProgram=Αυτόματη εκκίνηση του %1
-AddonHostProgramNotFound=Το %1 δε βρέθηκε στο φάκελο που επιλέξατε.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
-
+; *** Inno Setup version 6.5.0+ Greek messages ***
+;
+; To download user-contributed translations of this file, go to:
+; https://jrsoftware.org/files/istrans/
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+;
+; Originally translated by Anastasis Chatzioglou, baldycom@hotmail.com
+; Updated by XhmikosR [XhmikosR, my_nickname at yahoo dot com]
+; Updated to version 6.4.0+ by Vasileios Karamichail, v.karamichail@outlook.com
+;
+
+[LangOptions]
+; The following three entries are very important. Be sure to read and
+; understand the '[LangOptions] section' topic in the help file.
+LanguageName=Ελληνικά
+LanguageID=$0408
+LanguageCodePage=1253
+; If the language you are translating to requires special font faces or
+; sizes, uncomment any of the following entries and change them accordingly.
+;DialogFontName=
+;DialogFontSize=9
+;DialogFontBaseScaleWidth=7
+;DialogFontBaseScaleHeight=15
+;WelcomeFontName=Segoe UI
+;WelcomeFontSize=14
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Εγκατάσταση
+SetupWindowTitle=Εγκατάσταση - %1
+UninstallAppTitle=Απεγκατάσταση
+UninstallAppFullTitle=%1 Απεγκατάσταση
+
+; *** Misc. common
+InformationTitle=Πληροφορίες
+ConfirmTitle=Επιβεβαίωση
+ErrorTitle=Σφάλμα
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Θα εκτελεστεί η εγκατάσταση του %1. Θέλετε να συνεχίσετε;
+LdrCannotCreateTemp=Σφάλμα στη δημιουργία προσωρινού αρχείου. Η εγκατάσταση τερματίστηκε
+LdrCannotExecTemp=Αδύνατη η εκτέλεση αρχείου στον φάκελο προσωρινών αρχείων. Η εγκατάσταση τερματίστηκε
+HelpTextNote=
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nΣφάλμα %2: %3
+SetupFileMissing=Το αρχείο %1 λείπει από τον κατάλογο εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.
+SetupFileCorrupt=Το αρχείο εγκατάστασης είναι κατεστραμμένο. Παρακαλώ προμηθευτείτε ένα νέο αντίγραφο του προγράμματος.
+SetupFileCorruptOrWrongVer=Το αρχείο εγκατάστασης είναι κατεστραμμένο ή δεν είναι συμβατό με αυτήν την έκδοση του προγράμματος εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.
+InvalidParameter=Μία μη έγκυρη παράμετρος χρησιμοποιήθηκε στη γραμμή εντολών:%n%n%1
+SetupAlreadyRunning=Η εγκατάσταση τρέχει ήδη.
+WindowsVersionNotSupported=Αυτό το πρόγραμμα δεν υποστηρίζει την έκδοση των Windows που εκτελεί ο υπολογιστής σας.
+WindowsServicePackRequired=Αυτό το πρόγραμμα χρειάζεται το %1 Service Pack %2 ή νεότερο.
+NotOnThisPlatform=Αυτό το πρόγραμμα δεν μπορεί να εκτελεστεί σε %1.
+OnlyOnThisPlatform=Αυτό το πρόγραμμα μπορεί να εκτελεστεί μόνο σε %1.
+OnlyOnTheseArchitectures=Αυτό το πρόγραμμα μπορεί να εγκατασταθεί μόνο σε εκδόσεις των Windows που έχουν σχεδιαστεί για τις ακόλουθες αρχιτεκτονικές επεξεργαστών:%n%n%1
+WinVersionTooLowError=Αυτό το πρόγραμμα απαιτεί %1 έκδοση %2 ή μεταγενέστερη.
+WinVersionTooHighError=Αυτό το πρόγραμμα δεν μπορεί να εγκατασταθεί σε %1 έκδοση %2 ή μεταγενέστερη.
+AdminPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής κατά την εγκατάσταση αυτού του προγράμματος.
+PowerUserPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής ή ως μέλος της ομάδας Power User κατά την εγκατάσταση αυτού του προγράμματος.
+SetupAppRunningError=Ο Οδηγός Εγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.
+UninstallAppRunningError=Ο Οδηγός Απεγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.
+
+; *** Startup questions
+PrivilegesRequiredOverrideTitle=Επιλέξτε Τρόπο Εγκατάστασης
+PrivilegesRequiredOverrideInstruction=Επιλέξτε τον τρόπο εγκατάστασης
+PrivilegesRequiredOverrideText1=Το %1 μπορεί να εγκατασταθεί για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή) ή μόνο για εσάς.
+PrivilegesRequiredOverrideText2=Το %1 μπορεί να εγκατασταθεί μόνο για εσάς ή για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή).
+PrivilegesRequiredOverrideAllUsers=Εγκατάσταση για &όλους τους χρήστες
+PrivilegesRequiredOverrideAllUsersRecommended=Εγκατάσταση για όλ&ους τους χρήστες (συνιστάται)
+PrivilegesRequiredOverrideCurrentUser=Εγκατάσταση μόνο για &εμένα
+PrivilegesRequiredOverrideCurrentUserRecommended=Εγκατάσταση μόνο για &εμένα (συνιστάται)
+
+; *** Misc. errors
+ErrorCreatingDir=Η εγκατάσταση δεν μπόρεσε να δημιουργήσει τον φάκελο "%1"
+ErrorTooManyFilesInDir=Δεν είναι δυνατή η δημιουργία ενός αρχείου στον φάκελο "%1" επειδή περιέχει πολλά αρχεία
+
+; *** Setup common messages
+ExitSetupTitle=Τέλος Εγκατάστασης
+ExitSetupMessage=Η εγκατάσταση δεν έχει ολοκληρωθεί. Αν την τερματίσετε τώρα, το πρόγραμμα δεν θα εγκατασταθεί.%n%nΜπορείτε να εκτελέσετε ξανά την εγκατάσταση αργότερα.%n%nΈξοδος;
+AboutSetupMenuItem=&Σχετικά με την Εγκατάσταση...
+AboutSetupTitle=Σχετικά με την Εγκατάσταση
+AboutSetupMessage=%1 έκδοση %2%n%3%n%n%1 αρχική σελίδα:%n%4
+AboutSetupNote=
+TranslatorNote=
+
+; *** Buttons
+ButtonBack=< &Πίσω
+ButtonNext=&Επόμενο >
+ButtonInstall=&Εγκατάσταση
+ButtonOK=ΟΚ
+ButtonCancel=&Ακυρο
+ButtonYes=Ν&αι
+ButtonYesToAll=Ναι σε &Ολα
+ButtonNo=Ό&χι
+ButtonNoToAll=Όχι &σε όλα
+ButtonFinish=&Τέλος
+ButtonBrowse=&Αναζήτηση...
+ButtonWizardBrowse=Ανα&ζήτηση...
+ButtonNewFolder=&Δημιουργία νέου φακέλου
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Επιλογή Γλώσσας Οδηγού Εγκατάστασης
+SelectLanguageLabel=Επιλέξτε τη γλώσσα που θέλετε να χρησιμοποιήσετε κατά την εγκατάσταση.
+
+; *** Common wizard text
+ClickNext=Πατήστε Επόμενο για να συνεχίσετε ή Άκυρο για να τερματίσετε την εγκατάσταση.
+BeveledLabel=
+BrowseDialogTitle=Αναζήτηση Φακέλου
+BrowseDialogLabel=Επιλέξτε ένα φάκελο από την ακόλουθη λίστα και πατήστε ΟΚ.
+NewFolderName=Νέος φάκελος
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Καλως ορίσατε στον Οδηγό Εγκατάστασης του [name]
+WelcomeLabel2=Θα γίνει εγκατάσταση του [name/ver] στον υπολογιστή σας.%n%nΣυνιστάται να κλείσετε όλες τις άλλες εφαρμογές πριν συνεχίσετε.
+
+; *** "Password" wizard page
+WizardPassword=Κωδικός Πρόσβασης
+PasswordLabel1=Αυτή η εγκατάσταση προστατεύεται με κωδικό πρόσβασης.
+PasswordLabel3=Παρακαλώ εισάγετε τον κωδικό και πατήστε Επόμενο.
+PasswordEditLabel=&Κωδικός:
+IncorrectPassword=Ο κωδικός που έχετε εισάγει είναι λανθασμένος. Παρακαλώ, προσπαθήστε ξανά.
+
+; *** "License Agreement" wizard page
+WizardLicense=Άδεια Χρήσης
+LicenseLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
+LicenseLabel3=Παρακαλώ διαβάστε την ακόλουθη Άδεια Χρήσης. Θα πρέπει να αποδεχτείτε τους όρους της πριν συνεχίσετε την εγκατάσταση.
+LicenseAccepted=&Δέχομαι τους όρους της Άδειας Χρήσης
+LicenseNotAccepted=Δεν &αποδέχομαι τους όρους της Άδειας Χρήσης
+
+; *** "Information" wizard pages
+WizardInfoBefore=Πληροφορίες
+InfoBeforeLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
+InfoBeforeClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.
+WizardInfoAfter=Πληροφορίες
+InfoAfterLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.
+InfoAfterClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.
+
+; *** "User Information" wizard page
+WizardUserInfo=Πληροφορίες Χρήστη
+UserInfoDesc=Παρακαλώ εισάγετε τα στοιχεία σας.
+UserInfoName=&Ονομα Χρήστη:
+UserInfoOrg=&Εταιρεία:
+UserInfoSerial=&Σειριακός Αριθμός:
+UserInfoNameRequired=Πρέπει να εισάγετε ένα όνομα.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Επιλογή Φακέλου Εγκατάστασης
+SelectDirDesc=Πού θέλετε να εγκατασταθεί το [name];
+SelectDirLabel3=Ο Οδηγός Εγκατάστασης θα εγκαταστήσει το [name] στον ακόλουθο φάκελο.
+SelectDirBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Εάν θέλετε να επιλέξετε διαφορετικό φάκελο, πατήστε Αναζήτηση.
+DiskSpaceGBLabel=Απαιτούνται τουλάχιστον [gb] GB ελεύθερου χώρου στο δίσκο.
+DiskSpaceMBLabel=Απαιτούνται τουλάχιστον [mb] MB ελεύθερου χώρου στο δίσκο.
+CannotInstallToNetworkDrive=Η εγκατάσταση δεν μπορεί να γίνει σε δίσκο δικτύου.
+CannotInstallToUNCPath=Η εγκατάσταση δεν μπορεί να γίνει σε διαδρομή UNC.
+InvalidPath=Πρέπει να δώσετε την πλήρη διαδρομή με το γράμμα δίσκου, για παράδειγμα:%n%nC:\APP%n%nή μια διαδρομή UNC της μορφής:%n%n\\server\share
+InvalidDrive=Ο τοπικός δίσκος ή ο δίσκος δικτύου που έχετε επιλέξει δεν υπάρχει ή δεν είναι προσβάσιμος. Παρακαλώ, επιλέξτε άλλον.
+DiskSpaceWarningTitle=Ανεπαρκής Χώρος στο Δίσκο
+DiskSpaceWarning=Η εγκατάσταση χρειάζεται τουλάχιστον %1 KB ελεύθερο χώρο στο δίσκο αλλά ο επιλεγμένος δίσκος διαθέτει μόνον %2 KB.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
+DirNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.
+InvalidDirName=Το όνομα του φακέλου δεν είναι έγκυρο.
+BadDirName32=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1
+DirExistsTitle=Ο Φάκελος Υπάρχει
+DirExists=Ο φάκελος:%n%n%1%n%nυπάρχει ήδη. Θέλετε να γίνει η εγκατάσταση σε αυτόν τον φάκελο παρόλα αυτά;
+DirDoesntExistTitle=Ο Φάκελος Δεν Υπάρχει
+DirDoesntExist=Ο φάκελος:%n%n%1%n%nδεν υπάρχει. Θέλετε να δημιουργηθεί;
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Επιλογή Λειτουργιών Μονάδων
+SelectComponentsDesc=Ποια στοιχεία θέλετε να εγκατασταθούν;
+SelectComponentsLabel2=Επιλέξτε τα στοιχεία που θέλετε να εγκαταστήσετε, αποεπιλέξτε τα στοιχεία που δεν θέλετε να εγκαταστήσετε. Πατήστε Επόμενο όταν είστε έτοιμοι να συνεχίσετε.
+FullInstallation=Πλήρης εγκατάσταση
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Τυπική εγκατάσταση
+CustomInstallation=Προσαρμοσμένη εγκατάσταση
+NoUninstallWarningTitle=Οι Λειτουργικές Μονάδες Υπάρχουν
+NoUninstallWarning=Ο Οδηγός Εγκατάστασης εντόπισε ότι τα ακόλουθα στοιχεία είναι ήδη εγκατεστημένα στον υπολογιστή σας:%n%n%1%n%nΑποεπιλέγοντας αυτά τα στοιχεία δεν θα απεγκατασταθούν.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceGBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [gb] GB χώρου στο δίσκο.
+ComponentsDiskSpaceMBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [mb] MB χώρου στο δίσκο.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Επιλογή Επιπλέον Ενεργειών
+SelectTasksDesc=Ποιες επιπλέον ενέργειες θέλετε να γίνουν;
+SelectTasksLabel2=Επιλέξτε τις επιπλέον ενέργειες που θέλετε να γίνουν κατά την εγκατάσταση του [name] και πατήστε Επόμενο.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Επιλογή Φακέλου Μενού Έναρξης
+SelectStartMenuFolderDesc=Πού θέλετε να τοποθετηθούν οι συντομεύσεις του προγράμματος;
+SelectStartMenuFolderLabel3=Η εγκατάσταση θα δημιουργήσει τις συντομεύσεις του προγράμματος στον ακόλουθο φάκελο του μενού Έναρξη.
+SelectStartMenuFolderBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Αν θέλετε διαφορετικό φάκελο, πατήστε Αναζήτηση.
+MustEnterGroupName=Πρέπει να εισαγάγετε ένα όνομα φακέλου.
+GroupNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.
+InvalidGroupName=Το όνομα του φακέλου δεν είναι έγκυρο.
+BadGroupName=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1
+NoProgramGroupCheck2=&Χωρίς δημιουργία φακέλου στο μενού Έναρξης.
+
+; *** "Ready to Install" wizard page
+WizardReady=Έτοιμα για Εγκατάσταση
+ReadyLabel1=Ο Οδηγός Εγκατάστασης είναι έτοιμος να ξεκινήσει την εγκατάσταση του [name] στον υπολογιστή σας.
+ReadyLabel2a=Πατήστε Εγκατάσταση για να συνεχίσετε με την εγκατάσταση ή πατήστε Πίσω, εάν θέλετε να ελέγξετε ή να αλλάξετε τυχόν ρυθμίσεις.
+ReadyLabel2b=Πατήστε Εγκατάσταση για να συνεχίσετε την εγκατάσταση.
+ReadyMemoUserInfo=Πληροφορίες Χρήστη:
+ReadyMemoDir=Φάκελος προορισμού:
+ReadyMemoType=Είδος εγκατάστασης:
+ReadyMemoComponents=Επιλεγμένες λειτουργικές μονάδες:
+ReadyMemoGroup=Φάκελος στο μενού Έναρξη:
+ReadyMemoTasks=Επιπλέον ενέργειες:
+
+; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
+DownloadingLabel2=Λήψη αρχείων...
+ButtonStopDownload=&Διακοπή λήψης
+StopDownload=Είστε βέβαιοι ότι θέλετε να διακόψετε τη λήψη;
+ErrorDownloadAborted=Η λήψη ακυρώθηκε
+ErrorDownloadFailed=Η λήψη απέτυχε: %1 %2
+ErrorDownloadSizeFailed=Η λήψη του μεγέθους απέτυχε: %1 %2
+ErrorProgress=Μη έγκυρη πρόοδος: %1 από %2
+ErrorFileSize=Μη έγκυρο μέγεθος αρχείου: αναμενόμενο %1, βρέθηκε %2
+
+; *** TExtractionWizardPage wizard page and ExtractArchive
+ExtractingLabel=Αποσυμπίεση αρχείων...
+ButtonStopExtraction=&Διακοπή αποσυμπίεσης
+StopExtraction=Είστε βέβαιοι ότι θέλετε να διακόψετε την αποσυμπίεση;
+ErrorExtractionAborted=Η αποσυμπίεση ακυρώθηκε
+ErrorExtractionFailed=Η αποσυμπίεση απέτυχε: %1
+
+; *** Archive extraction failure details
+ArchiveIncorrectPassword=Ο κωδικός πρόσβασης είναι λανθασμένος
+ArchiveIsCorrupted=Το συμπιεσμένο αρχείο είναι κατεστραμμένο
+ArchiveUnsupportedFormat=Η μορφή του συμπιεσμένου αρχείου δεν υποστηρίζεται
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Προετοιμασία Εγκατάστασης
+PreparingDesc=Ο Οδηγός Εγκατάστασης προετοιμάζεται για την εγκατάσταση του [name] στον υπολογιστή σας.
+PreviousInstallNotCompleted=Η εγκατάσταση/αφαίρεση ενός προηγούμενου προγράμματος δεν ολοκληρώθηκε. Θα χρειαστεί να κάνετε επανεκκίνηση του υπολογιστή σας για να ολοκληρωθεί.%n%nΜετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση/αφαίρεση του [name].
+CannotContinue=Η εγκατάσταση δεν μπορεί να συνεχιστεί. Παρακαλώ πατήστε Άκυρο για τερματισμό.
+ApplicationsFound=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές.
+ApplicationsFound2=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές. Μετά την ολοκλήρωση της εγκατάστασης, ο Οδηγός Εγκατάστασης θα επιχειρήσει να κάνει επανεκκίνηση των εφαρμογών.
+CloseApplications=&Αυτόματο κλείσιμο των εφαρμογών
+DontCloseApplications=&Χωρίς κλείσιμο των εφαρμογών
+ErrorCloseApplications=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κλείσει αυτόματα όλες τις εφαρμογές. Συνιστάται να κλείσετε όλες τις εφαρμογές που χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης προτού συνεχίσετε.
+PrepareToInstallNeedsRestart=Ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Μετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση του [name].%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
+
+; *** "Installing" wizard page
+WizardInstalling=Εγκατάσταση
+InstallingLabel=Παρακαλώ περιμένετε καθώς γίνεται η εγκατάσταση του [name] στον υπολογιστή σας.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Ολοκλήρωση του Οδηγού Εγκατάστασης του [name]
+FinishedLabelNoIcons=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας.
+FinishedLabel=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας. Η εφαρμογή μπορεί να ξεκινήσει επιλέγοντας κάποια από τις εγκατεστημένες συντομεύσεις.
+ClickFinish=Πατήστε Τέλος για να τερματίσετε τον Οδηγό Εγκατάστασης.
+FinishedRestartLabel=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Θα θέλατε να κάνετε επανεκκίνηση τώρα;
+FinishedRestartMessage=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
+ShowReadmeCheck=Ναι, θα ήθελα να δω το αρχείο README
+YesRadio=&Ναι, να γίνει επανεκκίνηση τώρα
+NoRadio=&Οχι, θα κάνω επανεκκίνηση αργότερα
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Εκτέλεση του %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Προβολή του %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=Ο Οδηγός Εγκατάστασης χρειάζεται τον επόμενο δίσκο
+SelectDiskLabel2=Παρακαλώ, εισάγετε τον δίσκο %1 και πατήστε ΟΚ.%n%nΕάν τα αρχεία αυτού του δίσκου βρίσκονται σε φάκελο διαφορετικό από αυτόν που εμφανίζεται παρακάτω, πληκτρολογήστε τη σωστή διαδρομή ή πατήστε Αναζήτηση.
+PathLabel=&Διαδρομή:
+FileNotInDir2=Το αρχείο "%1" δε βρέθηκε στο "%2". Παρακαλώ εισάγετε το σωστό δίσκο ή επιλέξτε κάποιον άλλο φάκελο.
+SelectDirectoryLabel=Παρακαλώ καθορίσετε την τοποθεσία του επόμενου δίσκου.
+
+; *** Installation phase messages
+SetupAborted=Η εγκατάσταση δεν ολοκληρώθηκε.%n%nΠαρακαλώ, διορθώστε το πρόβλημα και εκτελέστε ξανά τον Οδηγό Εγκατάστασης.
+AbortRetryIgnoreSelectAction=Επιλέξτε ενέργεια
+AbortRetryIgnoreRetry=&Δοκιμή
+AbortRetryIgnoreIgnore=&Αγνόηση και συνέχεια
+AbortRetryIgnoreCancel=Ακυρώση εγκατάστασης
+RetryCancelSelectAction=Επιλέξτε ενέργεια
+RetryCancelRetry=&Δοκιμή ξανά
+RetryCancelCancel=Ακύρωση
+
+; *** Installation status messages
+StatusClosingApplications=Κλείσιμο εφαρμογών...
+StatusCreateDirs=Δημιουργία φακέλων...
+StatusExtractFiles=Αποσυμπίεση αρχείων...
+StatusDownloadFiles=Λήψη αρχείων...
+StatusCreateIcons=Δημιουργία συντομεύσεων...
+StatusCreateIniEntries=Δημιουργία καταχωρήσεων INI...
+StatusCreateRegistryEntries=Δημιουργία καταχωρήσεων στο μητρώο...
+StatusRegisterFiles=Καταχώρηση αρχείων...
+StatusSavingUninstall=Αποθήκευση πληροφοριών απεγκατάστασης...
+StatusRunProgram=Ολοκλήρωση εγκατάστασης...
+StatusRestartingApplications=Επανεκκίνηση εφαρμογών...
+StatusRollback=Επαναφορά αλλαγών...
+
+; *** Misc. errors
+ErrorInternal2=Εσωτερικό σφάλμα: %1
+ErrorFunctionFailedNoCode=%1 απέτυχε
+ErrorFunctionFailed=%1 απέτυχε, κωδικός %2
+ErrorFunctionFailedWithMessage=%1 απέτυχε, κωδικός %2.%n%3
+ErrorExecutingProgram=Δεν είναι δυνατή η εκτέλεση του αρχείου:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Σφάλμα ανάγνωσης κλειδιού μητρώου:%n%1\%2
+ErrorRegCreateKey=Σφάλμα δημιουργίας κλειδιού μητρώου:%n%1\%2
+ErrorRegWriteKey=Σφάλμα καταχώρησης κλειδιού μητρώου:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Σφάλμα στη δημιουργία καταχώρησης INI στο αρχείο "%1".
+
+; *** File copying errors
+FileAbortRetryIgnoreSkipNotRecommended=&Παράλειψη αυτού του αρχείου (δεν συνιστάται)
+FileAbortRetryIgnoreIgnoreNotRecommended=Παράλειψη σφάλματος και &συνέχεια (δεν συνιστάται)
+SourceIsCorrupted=Το αρχείο προέλευσης είναι κατεστραμμένο
+SourceDoesntExist=Το αρχείο προέλευσης "%1" δεν υπάρχει
+SourceVerificationFailed=Η επαλήθευση του αρχείου προέλευσης απέτυχε: %1
+VerificationSignatureDoesntExist=Το αρχείο υπογραφής "%1" δεν υπάρχει
+VerificationSignatureInvalid=Το αρχείο υπογραφής "%1" δεν είναι έγκυρο
+VerificationKeyNotFound=Το αρχείο υπογραφής "%1" χρησιμοποιεί άγνωστο κλειδί
+VerificationFileNameIncorrect=Το όνομα του αρχείου δεν είναι σωστό
+VerificationFileTagIncorrect=Η ετικέτα του αρχείου δεν είναι σωστή
+VerificationFileSizeIncorrect=Το μέγεθος του αρχείου δεν είναι σωστό
+VerificationFileHashIncorrect=Το hash του αρχείου δεν είναι σωστό
+ExistingFileReadOnly2=Το υπάρχον αρχείο δεν μπόρεσε να αντικατασταθεί επειδή είναι μόνο για ανάγνωση.
+ExistingFileReadOnlyRetry=&Καταργήστε το χαρακτηριστικό μόνο για ανάγνωση και δοκιμάστε ξανά
+ExistingFileReadOnlyKeepExisting=&Διατηρήστε το υπάρχον αρχείο
+ErrorReadingExistingDest=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του υπάρχοντος αρχείου:
+FileExistsSelectAction=Επιλέξτε ενέργεια
+FileExists2=Το αρχείο υπάρχει ήδη.
+FileExistsOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου
+FileExistsKeepExisting=&Διατήρηση υπάρχοντος αρχείου
+FileExistsOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις
+ExistingFileNewerSelectAction=Επιλέξτε ενέργεια
+ExistingFileNewer2=Το υπάρχον αρχείο είναι νεότερο από αυτό που προσπαθεί να εγκαταστήσει ο Οδηγός Εγκατάστασης.
+ExistingFileNewerOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου
+ExistingFileNewerKeepExisting=&Διατήρηση υπάρχοντος αρχείου (συνιστάται)
+ExistingFileNewerOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις
+ErrorChangingAttr=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αλλαγής των χαρακτηριστικών του υπάρχοντος αρχείου:
+ErrorCreatingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας ενός αρχείου στον φακέλο προορισμού:
+ErrorReadingSource=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του αρχείου προέλευσης:
+ErrorCopying=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντιγραφής ενός αρχείου:
+ErrorDownloading=Παρουσιάστηκε σφάλμα κατά την προσπάθεια λήψης ενός αρχείου:
+ErrorExtracting=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αποσυμπίεσης ενός αρχείου:
+ErrorReplacingExistingFile=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντικατάστασης του υπάρχοντος αρχείου:
+ErrorRestartReplace=Η ΕπανεκκίνησηΑντικατάσταση απέτυχε:
+ErrorRenamingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια μετονομασίας ενός αρχείου στον φακέλο προορισμού:
+ErrorRegisterServer=Δεν είναι δυνατή η καταχώριση του DLL/OCX: %1
+ErrorRegSvr32Failed=Το RegSvr32 απέτυχε με κωδικό εξόδου %1
+ErrorRegisterTypeLib=Δεν είναι δυνατή η καταχώριση της βιβλιοθήκης τύπων: %1
+
+; *** Uninstall display name markings
+; used for example as 'My Program (32-bit)'
+UninstallDisplayNameMark=%1 (%2)
+; used for example as 'My Program (32-bit, All users)'
+UninstallDisplayNameMarks=%1 (%2, %3)
+UninstallDisplayNameMark32Bit=32-bit
+UninstallDisplayNameMark64Bit=64-bit
+UninstallDisplayNameMarkAllUsers=Ολοι οι χρήστες
+UninstallDisplayNameMarkCurrentUser=Τρέχων χρήστης
+
+; *** Post-installation errors
+ErrorOpeningReadme=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανοίγματος του αρχείου README.
+ErrorRestartingComputer=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κάνει επανεκκίνηση του υπολογιστή. Παρακαλώ επανεκκινήσετε τον υπολογιστή μόνοι σας.
+
+; *** Uninstaller messages
+UninstallNotFound=Το αρχείο "%1" δεν υπάρχει. Δεν είναι δυνατή η απεγκατάσταση.
+UninstallOpenError=Το αρχείο "%1" δεν ήταν δυνατό να ανοίξει. Δεν είναι δυνατή η απεγκατάσταση
+UninstallUnsupportedVer=Το αρχείο καταγραφής απεγκατάστασης "%1" είναι σε μορφή που δεν αναγνωρίζεται από αυτήν την έκδοση του Οδηγού Απεγκατάστασης. Δεν ήταν δυνατή η απεγκατάσταση
+UninstallUnknownEntry=Μια άγνωστη καταχώρηση (%1) εντοπίστηκε στο αρχείο καταγραφής απεγκατάστασης
+ConfirmUninstall=Είστε βέβαιοι ότι θέλετε να καταργήσετε εντελώς το %1 και όλα τα στοιχεία του;
+UninstallOnlyOnWin64=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο σε Windows 64-bit.
+OnlyAdminCanUninstall=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο από χρήστη με δικαιώματα διαχειριστή.
+UninstallStatusLabel=Παρακαλώ περιμένετε μέχρι να καταργηθεί το %1 από τον υπολογιστή σας.
+UninstalledAll=Το %1 αφαιρέθηκε με επιτυχία από τον υπολογιστή σας.
+UninstalledMost=Το %1 αφαιρέθηκε με επιτυχία.%n%nΟρισμένα στοιχεία δεν ήταν δυνατό να καταργηθούν. Αυτά μπορούν να αφαιρεθούν από εσάς.
+UninstalledAndNeedsRestart=Για να ολοκληρώσετε την απεγκατάσταση του %1, ο υπολογιστής σας πρέπει να επανεκκινηθεί.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;
+UninstallDataCorrupted=Το "%1" αρχείο είναι κατεστραμμένο. Δεν ήταν δυνατή η απεγκατάσταση
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Κατάργηση Κοινόχρηστου Αρχείου;
+ConfirmDeleteSharedFile2=Το σύστημα υποδεικνύει ότι το ακόλουθο κοινόχρηστο αρχείο δεν χρησιμοποιείται πλέον από κανένα πρόγραμμα. Θέλετε να καταργηθεί αυτό το κοινόχρηστο αρχείο;%n%nΕάν κάποιο πρόγραμμα εξακολουθεί να το χρησιμοποιεί, ενδέχεται να μην λειτουργήσει σωστά. Εάν δεν είστε βέβαιοι, επιλέξτε Όχι. Αφήνοντάς το στο σύστημά σας δεν θα προκληθεί καμία ζημιά.
+SharedFileNameLabel=Όνομα Αρχείου:
+SharedFileLocationLabel=Τοποθεσία:
+WizardUninstalling=Πρόοδος Απεγκατάστασης
+StatusUninstalling=Απεγκατάσταση %1...
+
+; *** Shutdown block reasons
+ShutdownBlockReasonInstallingApp=Εγκατάσταση του %1.
+ShutdownBlockReasonUninstallingApp=Απεγκατάσταση του %1.
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1 έκδοση %2
+AdditionalIcons=Επιπλέον συντομεύσεις:
+CreateDesktopIcon=Δημιουργία συντόμευσης στην &επιφάνεια εργασίας
+CreateQuickLaunchIcon=Δημιουργία συντόμευσης στη &Γρήγορη Εκκίνηση
+ProgramOnTheWeb=Το %1 στο Internet
+UninstallProgram=Απεγκατάσταση του %1
+LaunchProgram=Εκκίνηση του %1
+AssocFileExtension=&Συσχέτιση του %1 με την επέκταση αρχείου %2
+AssocingFileExtension=Γίνεται συσχέτιση του %1 με την επέκταση αρχείου "%2"...
+AutoStartProgramGroupDescription=Εκκίνηση:
+AutoStartProgram=Αυτόματη εκκίνηση του %1
+AddonHostProgramNotFound=Το %1 δε βρέθηκε στο φάκελο που επιλέξατε.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;
+
diff -Nru survex-1.4.17/lib/Indonesian.isl survex-1.4.22/lib/Indonesian.isl
--- survex-1.4.17/lib/Indonesian.isl 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/lib/Indonesian.isl 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; *** Inno Setup version 6.1.0+ Indonesian messages ***
+; *** Inno Setup version 6.4.0+ Indonesian messages ***
;
; Untuk mengunduh terjemahan kontribusi-pengguna dari berkas ini, buka:
; http://www.jrsoftware.org/files/istrans/
@@ -140,7 +140,7 @@
WizardSelectComponents=Pilih Komponen
SelectComponentsDesc=Komponen mana sajakah yang sebaiknya dipasang?
-SelectComponentsLabel2=Centang komponen yang Anda inginkan; batalkan centang dari komponen yang tidak Anda inginkan. Klik Maju saat Anda siap meneruskan.
+SelectComponentsLabel2=Centang komponen yang Anda inginkan; hapus centang dari komponen yang tidak Anda inginkan. Klik Maju saat Anda siap meneruskan.
FullInstallation=Instalasi penuh
CompactInstallation=Instalasi padat
CustomInstallation=Instalasi kustom
@@ -189,6 +189,13 @@
ErrorFileHash2=Ceksum berkas tidak sah: seharusnya %1, yang kami dapatkan %2
ErrorProgress=Langkah tidak sah: %1 dari %2
ErrorFileSize=Ukuran berkas tidak sah: seharusnya %1, yang kami dapatkan %2
+
+; *** TExtractionWizardPage wizard page and Extract7ZipArchive
+ExtractionLabel=Mengektrasi berkas tambahan...
+ButtonStopExtraction=&Hentikan ekstrasi
+StopExtraction=Anda yakin ingin menghentikan ekstrasi?
+ErrorExtractionAborted=Ekstrasi dibatalkan
+ErrorExtractionFailed=Ekstraksi gagal: %1
;Inno6
WizardPreparing=Bersiap Memasang
diff -Nru survex-1.4.17/lib/Makefile.am survex-1.4.22/lib/Makefile.am
--- survex-1.4.17/lib/Makefile.am 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/lib/Makefile.am 2026-03-21 21:06:18.000000000 +0000
@@ -16,7 +16,7 @@
SUBDIRS = icons images
-po_files = bg.po ca.po de.po de_CH.po el.po en_US.po es.po fr.po\
+po_files = bg.po ca.po cs.po de.po de_CH.po el.po en_US.po es.po fr.po\
hu.po id.po it.po pl.po pt.po pt_BR.po ro.po ru.po sk.po zh_CN.po
msg_files = $(po_files:.po=.msg) en.msg
diff -Nru survex-1.4.17/lib/Makefile.in survex-1.4.22/lib/Makefile.in
--- survex-1.4.17/lib/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/lib/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -352,7 +352,7 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = icons images
-po_files = bg.po ca.po de.po de_CH.po el.po en_US.po es.po fr.po\
+po_files = bg.po ca.po cs.po de.po de_CH.po el.po en_US.po es.po fr.po\
hu.po id.po it.po pl.po pt.po pt_BR.po ro.po ru.po sk.po zh_CN.po
msg_files = $(po_files:.po=.msg) en.msg
@@ -614,6 +614,7 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/bg.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/bg.msg differ
diff -Nru survex-1.4.17/lib/bg.po survex-1.4.22/lib/bg.po
--- survex-1.4.17/lib/bg.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/bg.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr ""
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Мащаб"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1575,10 +1599,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr ""
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1682,7 +1709,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1715,8 +1742,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2057,6 +2089,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr ""
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2106,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Обръщане на посока"
+msgid "&Reverse Direction\tR"
+msgstr "&Обръщане на посока\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
+msgid "View &North\tN"
msgstr ""
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
+msgid "View &East\tE"
msgstr ""
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
+msgid "View &South\tS"
msgstr ""
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
+msgid "View &West\tW"
msgstr ""
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&План"
+msgid "&Plan View\tP"
+msgstr "&План\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Про&фил"
+msgid "E&levation\tL"
+msgstr "Про&фил\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Стандартен изглед"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Стандартен изглед\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2197,8 +2241,11 @@
msgid "Bearing"
msgstr "Азимут"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2213,6 +2260,18 @@
msgid "Station Names"
msgstr ""
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2311,8 +2370,11 @@
msgid "Tilt angle"
msgstr "Наклон"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2525,8 +2587,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2759,7 +2823,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3063,6 +3129,10 @@
msgid "Hide others"
msgstr "Скриване на останалите"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3099,6 +3169,8 @@
msgid "Open &Terrain..."
msgstr ""
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3237,7 +3309,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3248,7 +3323,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3497,6 +3575,17 @@
msgid "Originally entered here"
msgstr ""
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3504,7 +3593,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/ca.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ca.msg differ
diff -Nru survex-1.4.17/lib/ca.po survex-1.4.22/lib/ca.po
--- survex-1.4.17/lib/ca.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/ca.po 2026-06-23 05:39:58.000000000 +0000
@@ -4,7 +4,7 @@
"Report-Msgid-Bugs-To: olly@survex.com\n"
"POT-Creation-Date: 1999-08-26 12:23:58 +0000\n"
"PO-Revision-Date: 2016-06-12 08:34:00 +0000\n"
-"Last-Translator: Adolfo Jayme \n"
+"Last-Translator: Adolfo Jayme Barrientos \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Fi de línia no buit"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Escala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Esperant “%s”, “%s”, “%s”, o “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1743,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2058,6 +2090,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "El camp “%s” ha de precedir NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2106,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Inverteix el sentit"
+msgid "&Reverse Direction\tR"
+msgstr "&Inverteix el sentit\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Vista cap al &Nord"
+msgid "View &North\tN"
+msgstr "Vista cap al &Nord\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Vista cap al &Est"
+msgid "View &East\tE"
+msgstr "Vista cap al &Est\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Vista cap al &Sud"
+msgid "View &South\tS"
+msgstr "Vista cap al &Sud\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Vista cap a l’&Oest"
+msgid "View &West\tW"
+msgstr "Vista cap a l’&Oest\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Planta"
+msgid "&Plan View\tP"
+msgstr "&Planta\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Alça&t"
+msgid "E&levation\tL"
+msgstr "A&lçat\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Restablei&x la vista per defecte"
+msgid "Restore De&fault View\tDelete"
+msgstr "Restablei&x la vista per defecte\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2197,8 +2241,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2213,6 +2260,18 @@
msgid "Station Names"
msgstr "Noms d’estació"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
#, fuzzy
@@ -2311,8 +2370,11 @@
msgid "Tilt angle"
msgstr "Angle d’inclinació"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2533,8 +2595,10 @@
msgid "Colour by &Survey"
msgstr "Color per &Topografia"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2767,7 +2831,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3070,6 +3136,10 @@
msgid "Hide others"
msgstr ""
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3106,6 +3176,8 @@
msgid "Open &Terrain..."
msgstr "Obrir &Terreny..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3243,7 +3315,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3254,7 +3329,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3504,6 +3582,17 @@
msgid "Originally entered here"
msgstr "Originalment entrat aqui"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3511,7 +3600,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/cs.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/cs.msg differ
diff -Nru survex-1.4.17/lib/cs.po survex-1.4.22/lib/cs.po
--- survex-1.4.17/lib/cs.po 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/lib/cs.po 2026-06-23 05:39:58.000000000 +0000
@@ -0,0 +1,3932 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: survex\n"
+"Report-Msgid-Bugs-To: olly@survex.com\n"
+"POT-Creation-Date: 1999-08-26 12:23:58 +0000\n"
+"PO-Revision-Date: 2025-04-15 20:58:11 +0000\n"
+"Last-Translator: Olly Betts \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+
+#. TRANSLATORS: Aven menu titles. An “&” goes before the letter of any
+#. accelerator key. The accelerators must be different within this group
+#: ../src/mainfrm.cc:955
+#: n:210
+msgid "&File"
+msgstr "&Soubor"
+
+#: ../src/mainfrm.cc:956
+#: n:211
+msgid "&Rotation"
+msgstr "O&táčení"
+
+#: ../src/mainfrm.cc:957
+#: n:212
+msgid "&Orientation"
+msgstr "&Orientace"
+
+#: ../src/mainfrm.cc:958
+#: n:213
+msgid "&View"
+msgstr "&Pohled"
+
+#: ../src/mainfrm.cc:960
+#: n:214
+msgid "&Controls"
+msgstr "O&vládání"
+
+#: ../src/mainfrm.cc:972
+#: n:215
+msgid "&Help"
+msgstr "&Nápověda"
+
+#. TRANSLATORS: "Presentation" in the sense of a talk with a slideshow -
+#. the items in this menu allow the user to animate between preset
+#. views.
+#: ../src/mainfrm.cc:965
+#: n:216
+msgid "&Presentation"
+msgstr "Pre&zentace"
+
+#. TRANSLATORS: as in: Usage: cavern …
+#: ../src/cmdline.c:167
+#: n:49
+msgid "Usage"
+msgstr "Použití"
+
+#: ../src/gla-gl.cc:263
+#: n:389
+msgid "Out of memory"
+msgstr "Nedostatek paměti"
+
+#. TRANSLATORS: "%lu" is a placeholder for the number of bytes which Survex
+#. was trying to allocate space for.
+#: ../src/message.c:68
+#: ../src/message.c:1104
+#: n:24
+#, fuzzy, c-format
+msgid "Out of memory (couldn’t find %lu bytes)."
+msgstr "Nedostatek paměti (%lu bajtů)."
+
+#. TRANSLATORS: %s will be replaced by the filename
+#. that we were trying to read when we ran out of
+#. memory.
+#: ../src/gfxcore.cc:4620
+#: n:2
+#, fuzzy, c-format
+msgid "Out of memory trying to read file “%s”"
+msgstr "Nedostatek paměti: “%s”"
+
+#. TRANSLATORS: Feel free to translate as "or newer" instead of "or
+#. greater" if that gives a more natural translation. It's
+#. technically not quite right when there are parallel active release
+#. series (e.g. Survex 1.0.40 was released *after* 1.2.0), but this
+#. seems unlikely to confuse users. "Survex" is the name of the
+#. software, so should not be translated.
+#.
+#. Here "survey" is a "cave map" rather than list of questions - it should be
+#. translated to the terminology that cavers using the language would use.
+#: ../src/commands.c:2841
+#: n:38
+#, c-format
+msgid "Survex version %s or greater required to process this survey data."
+msgstr ""
+
+#. TRANSLATORS: Indicates a informational message e.g.:
+#. "spoon.svx:12: info: Declination: [...]"
+#: ../src/cavernlog.cc:531
+#: ../src/message.c:1147
+#: ../src/netartic.c:358
+#: n:485
+msgid "info"
+msgstr "informace"
+
+#. TRANSLATORS: Indicates a warning message e.g.:
+#. "spoon.svx:12: warning: *prefix is deprecated"
+#: ../src/aven.cc:476
+#: ../src/cavernlog.cc:532
+#: ../src/message.c:1152
+#: n:106
+msgid "warning"
+msgstr "varování"
+
+#. TRANSLATORS: Indicates an error message e.g.:
+#. "spoon.svx:13:4: error: Field may not be omitted"
+#: ../src/cavernlog.cc:533
+#: ../src/message.c:1157
+#: ../src/survexport.cc:469
+#: n:93
+msgid "error"
+msgstr "chyba"
+
+#. TRANSLATORS: %s is replaced by the filename of the parent file, and %u
+#. by the line number in that file. Your translation should also contain
+#. %s:%u so that automatic parsing of error messages to determine the file
+#. and line number still works.
+#: ../src/datain.c:157
+#: n:44
+#, c-format
+msgid "In file included from %s:%u:\n"
+msgstr ""
+
+#. TRANSLATORS: If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:835
+#: n:109
+msgid "*prefix is deprecated - use *begin and *end instead"
+msgstr ""
+
+#. TRANSLATORS: Here "station" is a survey station, not a train station.
+#: ../src/readval.c:201
+#: n:110
+#, c-format
+msgid "Character “%c” not allowed in station name (use *SET NAMES to set allowed characters)"
+msgstr ""
+
+#: ../src/readval.c:650
+#: ../src/readval.c:690
+#: n:114
+msgid "Field may not be omitted"
+msgstr ""
+
+#: ../src/datain.c:4746
+#: ../src/datain.c:4784
+#: ../src/datain.c:4894
+#: ../src/datain.c:4933
+#: ../src/datain.c:4976
+#: ../src/datain.c:5026
+#: ../src/datain.c:5068
+#: ../src/datain.c:5114
+#: ../src/datain.c:5128
+#: ../src/datain.c:5417
+#: ../src/readval.c:652
+#: ../src/readval.c:795
+#: ../src/readval.c:828
+#: n:9
+#, c-format
+msgid "Expecting numeric field, found “%s”"
+msgstr ""
+
+#. TRANSLATORS: The first %d will be replaced by the (inclusive) lower
+#. bound and the second by the (inclusive) upper bound, for example:
+#. Expecting integer in range -60 to 60
+#: ../src/readval.c:855
+#: n:489
+#, c-format
+msgid "Expecting integer in range %d to %d"
+msgstr ""
+
+#: ../src/commands.c:2336
+#: n:10
+#, c-format
+msgid "Found “%s”, expecting “PRESERVE”, “TOUPPER”, or “TOLOWER”"
+msgstr ""
+
+#: ../src/debug.h:47
+#: ../src/debug.h:51
+#: n:11
+msgid "Bug in program detected! Please report this to the authors"
+msgstr ""
+
+#: ../src/commands.c:3150
+#: ../src/datain.c:2142
+#: ../src/datain.c:2154
+#: ../src/datain.c:2357
+#: ../src/datain.c:2863
+#: ../src/datain.c:3355
+#: ../src/extend.c:462
+#: n:12
+#, c-format
+msgid "Unknown command “%s”"
+msgstr "Neznámý příkaz “%s”"
+
+#. TRANSLATORS: Here "station" is a survey station, not a train station.
+#: ../src/netbits.c:434
+#: n:13
+#, c-format
+msgid "Station “%s” equated to itself"
+msgstr ""
+
+#. TRANSLATORS: Here "legs" are survey legs, i.e. measurements between
+#. survey stations.
+#: ../src/datain.c:4032
+#: n:14
+msgid "Compass reading may not be omitted except on plumbed legs"
+msgstr ""
+
+#: ../src/datain.c:5201
+#: ../src/datain.c:5329
+#: n:94
+msgid "Tape reading may not be omitted"
+msgstr ""
+
+#: ../src/commands.c:2379
+#: ../src/datain.c:481
+#: ../src/datain.c:2581
+#: ../src/datain.c:2839
+#: ../src/datain.c:4430
+#: ../src/extend.c:467
+#: n:15
+msgid "End of line not blank"
+msgstr ""
+
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
+#: n:74
+msgid "No blank after token"
+msgstr ""
+
+#: ../src/cavern.c:415
+#: n:16
+#, c-format
+msgid "There were %d warning(s)."
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the command we attempted to run.
+#: ../src/cavernlog.cc:418
+#: ../src/cavernlog.cc:470
+#: ../src/mainfrm.cc:1624
+#: n:17
+#, c-format
+msgid "Couldn’t run external command: “%s”"
+msgstr ""
+
+#: ../src/datain.c:135
+#: ../src/datain.c:143
+#: ../src/datain.c:177
+#: ../src/datain.c:206
+#: ../src/datain.c:216
+#: ../src/datain.c:232
+#: ../src/datain.c:3163
+#: ../src/datain.c:3515
+#: ../src/extend.c:696
+#: ../src/sorterr.c:77
+#: ../src/sorterr.c:94
+#: ../src/sorterr.c:237
+#: n:18
+msgid "Error reading file"
+msgstr "Chyba při načítání souboru"
+
+#: ../src/message.c:1180
+#: n:19
+msgid "Too many errors - giving up"
+msgstr ""
+
+#. TRANSLATORS: If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:2126
+#: n:20
+msgid "*DEFAULT is deprecated - use *CALIBRATE/DATA/SD/UNITS with argument DEFAULT instead"
+msgstr ""
+
+#. TRANSLATORS: A "plumbed leg" is one measured using a plumbline
+#. (a weight on a string). So the problem here is that the leg is
+#. vertical, so a compass reading has no meaning!
+#: ../src/datain.c:4002
+#: n:21
+msgid "Compass reading given on plumbed leg"
+msgstr ""
+
+#. TRANSLATORS: %s and %s are replaced with e.g. BEGIN and END
+#. or END and BEGIN or #[ and #]
+#: ../src/commands.c:1068
+#: ../src/datain.c:2455
+#: ../src/datain.c:3424
+#: n:23
+#, c-format
+msgid "%s with no matching %s in this file"
+msgstr ""
+
+#. TRANSLATORS: A station must be exported out of each level it is in, so
+#. this would give "Station “\outer.inner.1” not exported from survey
+#. “\outer”)":
+#.
+#. *equate entrance outer.inner.1
+#. *begin outer
+#. *begin inner
+#. *export 1
+#. 1 2 1.23 045 -6
+#. *end inner
+#. *end outer
+#.
+#. Here "survey" is a "cave map" rather than list of questions - it should be
+#. translated to the terminology that cavers using the language would use.
+#: ../src/commands.c:1458
+#: ../src/commands.c:1460
+#: ../src/listpos.c:123
+#: ../src/readval.c:341
+#: ../src/readval.c:344
+#: n:26
+#, c-format
+msgid "Station “%s” not exported from survey “%s”"
+msgstr ""
+
+#. TRANSLATORS: This error occurs if there's an attempt to
+#. export a station from a survey which doesn't actually
+#. exist.
+#.
+#. Here "survey" is a "cave map" rather than list of
+#. questions - it should be translated to the terminology
+#. that cavers using the language would use.
+#: ../src/listpos.c:133
+#: n:286
+#, c-format
+msgid "Reference to station “%s” from non-existent survey “%s”"
+msgstr ""
+
+#. TRANSLATORS: Here "station" is a survey station, not a train station.
+#.
+#. Here "survey" is a "cave map" rather than list of questions - it should be
+#. translated to the terminology that cavers using the language would use.
+#: ../src/readval.c:291
+#: ../src/readval.c:315
+#: n:27
+#, c-format
+msgid "“%s” can’t be both a station and a survey"
+msgstr ""
+
+#. TRANSLATORS: Here "station" is a survey station, not a train station.
+#: ../src/extend.c:269
+#: ../src/extend.c:288
+#: ../src/extend.c:334
+#: ../src/extend.c:377
+#: ../src/extend.c:420
+#: ../src/readval.c:197
+#: ../src/readval.c:458
+#: ../src/readval.c:465
+#: n:28
+msgid "Expecting station name"
+msgstr ""
+
+#: ../src/commands.c:2751
+#: n:31
+#, c-format
+msgid "Found “%s”, expecting “EQUATES”, “EXPORTS”, or “PLUMBS”"
+msgstr ""
+
+#: ../src/commands.c:2757
+#: n:32
+#, c-format
+msgid "Found “%s”, expecting “ON” or “OFF”"
+msgstr ""
+
+#. TRANSLATORS: EQUATE is a command name, so shouldn’t be
+#. translated.
+#.
+#. Here "station" is a survey station, not a train station.
+#: ../src/commands.c:1417
+#: n:33
+msgid "Only one station in EQUATE command"
+msgstr ""
+
+#. TRANSLATORS: A "quantity" is something measured like "LENGTH",
+#. "BEARING", "ALTITUDE", etc.
+#: ../src/commands.c:642
+#: n:34
+#, c-format
+msgid "Unknown quantity “%s”"
+msgstr ""
+
+#: ../src/commands.c:541
+#: n:35
+#, c-format
+msgid "Unknown units “%s”"
+msgstr ""
+
+#: ../src/commands.c:2297
+#: n:532
+#, c-format
+msgid "Unknown team role “%s”"
+msgstr ""
+
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
+#: n:479
+#, c-format
+msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
+msgstr ""
+
+#: ../src/commands.c:2559
+#: ../src/commands.c:2638
+#: n:434
+msgid "Unknown coordinate system"
+msgstr ""
+
+#: ../src/commands.c:2667
+#: ../src/commands.c:2708
+#: n:443
+#, c-format
+msgid "Invalid coordinate system: %s"
+msgstr ""
+
+#: ../src/commands.c:2646
+#: ../src/commands.c:2678
+#: n:435
+msgid "Coordinate system unsuitable for output"
+msgstr ""
+
+#: ../src/commands.c:983
+#: ../src/commands.c:1236
+#: ../src/datain.c:2693
+#: ../src/datain.c:3765
+#: n:436
+#, c-format
+msgid "Failed to convert coordinates: %s"
+msgstr ""
+
+#: ../src/commands.c:1243
+#: n:437
+msgid "The input projection is set but the output projection isn't"
+msgstr ""
+
+#: ../src/commands.c:1245
+#: n:438
+msgid "The output projection is set but the input projection isn't"
+msgstr ""
+
+#: ../src/commands.c:1171
+#: n:439
+msgid "Coordinates can't be omitted when coordinate system has been specified"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the command that requires it, e.g.
+#. *DECLINATION AUTO
+#: ../src/commands.c:2090
+#: ../src/datain.c:3803
+#: n:301
+#, c-format
+msgid "Input coordinate system must be specified for “%s”"
+msgstr ""
+
+#: ../src/datain.c:2705
+#: ../src/datain.c:3785
+#: n:488
+msgid "Output coordinate system not set"
+msgstr ""
+
+#: ../src/datain.c:3287
+#: n:503
+#, c-format
+msgid "Datum “%s” not supported"
+msgstr ""
+
+#: ../src/commands.c:2082
+#: n:309
+msgid "Expected number or “AUTO”"
+msgstr ""
+
+#: ../src/datain.c:3825
+#: n:304
+msgid "No survey date specified - using 0 for magnetic declination"
+msgstr ""
+
+#. TRANSLATORS: This message gives information about the range of
+#. declination values and the grid convergence value calculated for
+#. each "*declination auto ..." command.
+#.
+#. The first %s will be replaced by the declination range (or single
+#. value), and %.1f%s by the grid convergence angle.
+#: ../src/commands.c:937
+#: n:484
+#, c-format
+msgid "Declination: %s, grid convergence: %.1f%s"
+msgstr ""
+
+#. TRANSLATORS: Cavern computes the grid convergence at the
+#. representative location(s) specified by the
+#. `*declination auto` command(s). The convergence values
+#. for the most N, S, E and W survey stations with legs
+#. attached are also computed and the range of these values
+#. is reported in this message. It's approximate because the
+#. min or max convergence could actually be beyond this range
+#. but it's unlikely to be very wrong.
+#.
+#. Each %.1f%s will be replaced with a convergence angle (e.g.
+#. 0.9°) and the following %s with the station name where that
+#. convergence angle was computed.
+#: ../src/cavern.c:505
+#: n:531
+#, c-format
+msgid "Approximate full range of grid convergence: %.1f%s at %s to %.1f%s at %s\n"
+msgstr ""
+
+#. TRANSLATORS: Used when a BEGIN command has no survey, but the
+#. END command does, e.g.:
+#.
+#. *begin
+#. 1 2 10.00 178 -01
+#. *end entrance <--[Message given here]
+#: ../src/commands.c:1099
+#: n:36
+msgid "Matching BEGIN command has no survey name"
+msgstr ""
+
+#. TRANSLATORS: Note: In English you talk about the *units* of a single
+#. measurement, but the correct term in other languages may be singular.
+#: ../src/commands.c:570
+#: n:37
+#, c-format
+msgid "Invalid units “%s” for quantity"
+msgstr ""
+
+#: ../src/commands.c:634
+#: n:39
+#, c-format
+msgid "Unknown instrument “%s”"
+msgstr ""
+
+#. TRANSLATORS: DECLINATION is a built-in keyword, so best not to
+#. translate
+#: ../src/commands.c:2022
+#: n:40
+msgid "Scale factor must be 1.0 for DECLINATION"
+msgstr ""
+
+#. TRANSLATORS: If the scale factor for an instrument is zero, then any
+#. reading would be mapped to zero, which doesn't make sense.
+#: ../src/commands.c:2030
+#: n:391
+msgid "Scale factor must be non-zero"
+msgstr ""
+
+#: ../src/commands.c:2146
+#: n:41
+#, c-format
+msgid "Unknown setting “%s”"
+msgstr ""
+
+#: ../src/commands.c:678
+#: n:42
+#, c-format
+msgid "Unknown character class “%s”"
+msgstr ""
+
+#: ../src/extend.c:706
+#: ../src/netskel.c:93
+#: n:43
+msgid "No survey data"
+msgstr ""
+
+#: ../src/filename.c:80
+#: n:5
+#, c-format
+msgid "Filename “%s” refers to directory"
+msgstr ""
+
+#. TRANSLATORS: At the end of processing (or if a *SOLVE command is used)
+#. cavern will issue this warning if there are any sections of the survey
+#. network which are hanging.
+#: ../src/netartic.c:342
+#: n:45
+msgid "Survey not all connected to fixed stations"
+msgstr ""
+
+#: ../src/commands.c:1336
+#: ../src/datain.c:958
+#: ../src/datain.c:2726
+#: n:46
+msgid "Station already fixed or equated to a fixed point"
+msgstr ""
+
+#: ../src/commands.c:1341
+#: ../src/datain.c:963
+#: ../src/datain.c:2730
+#: n:493
+msgid "Previously fixed or equated here"
+msgstr ""
+
+#: ../src/cavern.c:312
+#: ../src/filename.c:83
+#: ../src/gfxcore.cc:4234
+#: n:3
+#, c-format
+msgid "Failed to open output file “%s”"
+msgstr ""
+
+#: ../src/commands.c:1252
+#: ../src/commands.c:1266
+#: ../src/commands.c:1278
+#: ../src/commands.c:2202
+#: n:48
+msgid "Standard deviation must be positive"
+msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#.
+#. %s is replaced by the name of the station.
+#: ../src/netbits.c:327
+#: n:50
+#, c-format
+msgid "Survey leg with same station (“%s”) at both ends - typing error?"
+msgstr ""
+
+#. TRANSLATORS: %.f%s will be replaced with a right angle in the
+#. units currently in use, e.g. "90°" or "100ᵍ". And "absolute
+#. value" means the reading ignoring the sign (so it might be
+#. < -90° or > 90°.
+#: ../src/datain.c:3924
+#: ../src/datain.c:3937
+#: n:51
+#, c-format
+msgid "Clino reading over %.f%s (absolute value)"
+msgstr ""
+
+#: ../src/netbits.c:449
+#: n:52
+#, c-format
+msgid "Tried to equate two non-equal fixed stations: “%s” and “%s”"
+msgstr ""
+
+#. TRANSLATORS: "equal" as in:
+#.
+#. *fix a 1 2 3
+#. *fix b 1 2 3
+#. *equate a b
+#: ../src/netbits.c:460
+#: n:53
+#, c-format
+msgid "Equating two equal fixed points: “%s” and “%s”"
+msgstr ""
+
+#. TRANSLATORS: " *fix a " gives this message:
+#: ../src/commands.c:1191
+#: n:54
+msgid "FIX command with no coordinates - fixing at (0,0,0)"
+msgstr ""
+
+#. TRANSLATORS: *fix a 1 2 3 / *fix a 1 2 3
+#: ../src/commands.c:1339
+#: ../src/datain.c:960
+#: ../src/datain.c:2728
+#: n:55
+msgid "Station already fixed at the same coordinates"
+msgstr ""
+
+#. TRANSLATORS: Emitted after second and subsequent "FIX" command
+#. with no coordinates.
+#: ../src/commands.c:1187
+#: n:441
+#, c-format
+msgid "Already had FIX command with no coordinates for station “%s”"
+msgstr ""
+
+#: ../src/commands.c:2435
+#: n:442
+#, c-format
+msgid "Station “%s” fixed before CS command first used"
+msgstr ""
+
+#. TRANSLATORS: The *EXPORT command is only valid just after *BEGIN
+#. , so this would generate this error:
+#.
+#. *begin fred
+#. 1 2 1.23 045 -6
+#. *export 2
+#. *end fred
+#: ../src/commands.c:3166
+#: n:57
+msgid "*EXPORT must immediately follow “*BEGIN ”"
+msgstr ""
+
+#. TRANSLATORS: %d will be replaced by the assumed year, e.g. 1918
+#: ../src/commands.c:2873
+#: ../src/commands.c:2948
+#: ../src/readval.c:978
+#: n:76
+#, c-format
+msgid "Assuming 2 digit year is %d"
+msgstr ""
+
+#: ../src/commands.c:2937
+#: n:158
+#, c-format
+msgid "Interpreting as an ISO-format date - use “*date surveyed %d-%02d” to suppress this warning, or “*date %d %d” if you wanted a date range"
+msgstr ""
+
+#: ../src/commands.c:2877
+#: ../src/commands.c:2951
+#: ../src/readval.c:984
+#: n:58
+msgid "Invalid year (< 1900 or > 2078)"
+msgstr ""
+
+#: ../src/commands.c:2346
+#: ../src/commands.c:2349
+#: ../src/commands.c:2357
+#: ../src/commands.c:2360
+#: n:534
+msgid "Invalid year"
+msgstr ""
+
+#. TRANSLATORS: Suspicious means something like 410 degrees or -20
+#. degrees
+#: ../src/datain.c:3624
+#: ../src/datain.c:3633
+#: ../src/readval.c:722
+#: n:59
+msgid "Suspicious compass reading"
+msgstr ""
+
+#: ../src/datain.c:4753
+#: ../src/datain.c:4902
+#: n:60
+msgid "Negative tape reading"
+msgstr ""
+
+#: ../src/commands.c:1176
+#: n:61
+msgid "Same station fixed twice with no coordinates"
+msgstr ""
+
+#. TRANSLATORS: This means that the data fed in said this.
+#.
+#. It could be a gross error (e.g. the decimal point is missing from the
+#. depth gauge reading) or it could just be due to random error on a near
+#. vertical leg
+#: ../src/datain.c:4208
+#: n:62
+msgid "Tape reading is less than change in depth"
+msgstr ""
+
+#. TRANSLATORS: a data "style" is something like NORMAL, DIVING, etc.
+#. a "reading" is one of FROM, TO, TAPE, COMPASS, CLINO for NORMAL
+#. style. Neither "style" nor "reading" is a keyword in the program.
+#.
+#. This error complains about a "DEPTH" gauge reading in "NORMAL"
+#. style, for example.
+#: ../src/commands.c:1683
+#: ../src/commands.c:1705
+#: n:63
+#, c-format
+msgid "Reading “%s” not allowed in data style “%s”"
+msgstr ""
+
+#. TRANSLATORS: i.e. not enough readings for the style.
+#: ../src/commands.c:1886
+#: n:64
+#, c-format
+msgid "Too few readings for data style “%s”"
+msgstr ""
+
+#. TRANSLATORS: e.g. trying to refer to an invalid FNORD data style
+#: ../src/commands.c:1653
+#: ../src/datain.c:2103
+#: n:65
+#, c-format
+msgid "Data style “%s” unknown"
+msgstr ""
+
+#. TRANSLATORS: Here "station" is a survey station, not a train station.
+#.
+#. Exporting a station twice gives this error:
+#.
+#. *begin example
+#. *export 1
+#. *export 1
+#. 1 2 1.24 045 -6
+#. *end example
+#: ../src/commands.c:1509
+#: n:66
+#, c-format
+msgid "Station “%s” already exported"
+msgstr ""
+
+#. TRANSLATORS: complains about a situation like trying to define
+#. two from stations per leg
+#: ../src/commands.c:1730
+#: n:67
+#, c-format
+msgid "Duplicate reading “%s”"
+msgstr ""
+
+#: ../src/commands.c:2902
+#: n:416
+#, c-format
+msgid "Duplicate date type “%s”"
+msgstr ""
+
+#: ../src/commands.c:1368
+#: n:68
+#, c-format
+msgid "FLAG “%s” unknown"
+msgstr ""
+
+#: ../src/readval.c:890
+#: n:69
+msgid "Missing \""
+msgstr "Chybějící \""
+
+#. TRANSLATORS: Here "station" is a survey station, not a train
+#. station.
+#: ../src/listpos.c:145
+#: n:70
+#, c-format
+msgid "Station “%s” referred to just once, with an explicit survey name - typo?"
+msgstr ""
+
+#. TRANSLATORS: Here "station" is a survey station, not a
+#. train station.
+#: ../src/netartic.c:355
+#: n:71
+msgid "The following survey stations are not attached to a fixed point:"
+msgstr ""
+
+#: ../src/netskel.c:133
+#: n:72
+#, c-format
+msgid "Survey has no fixed points. Therefore I’ve fixed %s at (0,0,0)"
+msgstr ""
+
+#. TRANSLATORS: fixed survey station that is not part of any survey
+#: ../src/listpos.c:68
+#: n:73
+#, c-format
+msgid "Unused fixed point “%s”"
+msgstr ""
+
+#: ../src/matrix.c:120
+#: n:75
+#, c-format
+msgid "Solving %d simultaneous equations"
+msgstr ""
+
+#. TRANSLATORS: This is an error from the *DATA command. It
+#. means that a reading (which will appear where %s is isn't
+#. valid as the list of readings has already included the same
+#. reading, or an equivalent one (e.g. you can't have both
+#. DEPTH and DEPTHCHANGE together).
+#: ../src/commands.c:1794
+#: n:77
+#, c-format
+msgid "Reading “%s” duplicates previous reading(s)"
+msgstr ""
+
+#: ../src/matrix.c:118
+#: n:78
+msgid "Solving one equation"
+msgstr ""
+
+#: ../src/datain.c:3961
+#: ../src/datain.c:4197
+#: ../src/datain.c:4612
+#: n:79
+msgid "Negative adjusted tape reading"
+msgstr ""
+
+#: ../src/commands.c:2352
+#: ../src/commands.c:2366
+#: ../src/commands.c:3049
+#: ../src/commands.c:3070
+#: n:80
+msgid "Date is in the future!"
+msgstr ""
+
+#: ../src/commands.c:2363
+#: ../src/commands.c:3078
+#: n:81
+msgid "End of date range is before the start"
+msgstr ""
+
+#. TRANSLATORS: e.g. the user specifies a passage cross-section at
+#. station "entrance.27", but there is no station "entrance.27" in
+#. the centre-line.
+#: ../src/netskel.c:1060
+#: n:83
+#, c-format
+msgid "Cross section specified at non-existent station “%s”"
+msgstr ""
+
+#. TRANSLATORS: In data with backsights, the user has tried to give a
+#. plumb for the foresight and a clino reading for the backsight, or
+#. something similar.
+#: ../src/datain.c:3985
+#: n:84
+msgid "CLINO and BACKCLINO readings must be of the same type"
+msgstr ""
+
+#. TRANSLATORS: We've been told the foresight and backsight are
+#. both "UP", or that they're both "DOWN".
+#: ../src/datain.c:4011
+#: n:92
+msgid "Plumbed CLINO and BACKCLINO readings can't be in the same direction"
+msgstr ""
+
+#: ../src/commands.c:2979
+#: ../src/commands.c:3015
+#: ../src/readval.c:992
+#: n:86
+msgid "Invalid month"
+msgstr "Neplatný měsíc"
+
+#. TRANSLATORS: e.g. 31st of April, or 32nd of any month
+#: ../src/commands.c:2991
+#: ../src/commands.c:3028
+#: ../src/readval.c:999
+#: n:87
+msgid "Invalid day of the month"
+msgstr "Neplatný den měsíce"
+
+#: ../src/cavern.c:261
+#: n:88
+#, c-format
+msgid "3d file format versions %d to %d supported"
+msgstr ""
+
+#: ../src/readval.c:195
+#: n:89
+msgid "Expecting survey name"
+msgstr ""
+
+#: ../src/datain.c:3131
+#: ../src/datain.c:3133
+#: ../src/datain.c:3456
+#: ../src/extend.c:691
+#: ../src/gfxcore.cc:4568
+#: ../src/mainfrm.cc:409
+#: ../src/sorterr.c:143
+#: n:1
+#, c-format
+msgid "Couldn’t open file “%s”"
+msgstr "Nelze otevřít soubor “%s”"
+
+#: ../src/printing.cc:674
+#: ../src/survexport.cc:464
+#: n:402
+#, c-format
+msgid "Couldn’t write file “%s”"
+msgstr "Nelze zapsat soubor “%s”"
+
+#: ../src/datain.c:2533
+#: ../src/datain.c:2538
+#: n:498
+msgid "Failed to create temporary file"
+msgstr "Nelze vytvořit jméno dočasného souboru"
+
+#. TRANSLATORS: If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:697
+#: ../src/commands.c:813
+#: ../src/commands.c:837
+#: ../src/commands.c:1667
+#: ../src/commands.c:2128
+#: ../src/readval.c:87
+#: n:95
+msgid "Further uses of this deprecated feature will not be reported"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the amount the readings disagree
+#. by, e.g. "0.12m" or "0.2ft".
+#: ../src/datain.c:5190
+#: ../src/datain.c:5318
+#: n:97
+#, c-format
+msgid "TAPE reading and BACKTAPE reading disagree by %s"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the amount the readings disagree
+#. by, e.g. "2.5°" or "3ᵍ".
+#: ../src/datain.c:3876
+#: n:98
+#, c-format
+msgid "COMPASS reading and BACKCOMPASS reading disagree by %s"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the amount the readings disagree
+#. by, e.g. "2.5°" or "3ᵍ".
+#: ../src/datain.c:4063
+#: n:99
+#, c-format
+msgid "CLINO reading and BACKCLINO reading disagree by %s"
+msgstr ""
+
+#: ../src/commands.c:1664
+#: n:104
+#, c-format
+msgid "“*data %s %c …” is deprecated - use “*data %s …” instead"
+msgstr ""
+
+#. TRANSLATORS: Perhaps the user tried to load a different type of file as
+#. a Survex .3d file, or the .3d file was corrupted.
+#: ../src/img_for_survex.h:41
+#: n:4
+#, c-format
+msgid "Bad 3d image file “%s”"
+msgstr ""
+
+#. TRANSLATORS: This is the date format string used to timestamp .3d
+#. files internally. Probably best to keep it the same for all
+#. translations.
+#: ../src/model.cc:382
+#: n:107
+#, c-format
+msgid "%a,%Y.%m.%d %H:%M:%S %Z"
+msgstr "%a,%Y.%m.%d %H:%M:%S %Z"
+
+#. TRANSLATORS: used a processed survey with no processing date/time info
+#: ../src/model.cc:375
+#: n:108
+msgid "Date and time not available."
+msgstr ""
+
+#: ../src/img_for_survex.h:42
+#: n:6
+#, c-format
+msgid "Error reading from file “%s”"
+msgstr "Chyba při čtení ze souboru “%s”"
+
+#: ../src/cavernlog.cc:662
+#: ../src/filename.c:107
+#: ../src/mainfrm.cc:371
+#: ../src/mainfrm.cc:1549
+#: n:7
+#, c-format
+msgid "Error writing to file “%s”"
+msgstr "Chyba zápisu do souboru “%s”"
+
+#: ../src/filename.c:110
+#: n:111
+msgid "Error writing to file"
+msgstr "Chyba zápisu do souboru"
+
+#: ../src/cavern.c:410
+#: n:113
+#, c-format
+msgid "There were %d warning(s) and %d error(s) - no output files produced."
+msgstr ""
+
+#: ../src/img_for_survex.h:43
+#: n:8
+#, c-format
+msgid "File “%s” has a newer format than this program can understand"
+msgstr ""
+
+#: ../src/printing.cc:1182
+#: n:115
+msgid "North"
+msgstr "Sever"
+
+#. TRANSLATORS: "Elevation on" 020 <-> 200 degrees
+#: ../src/printing.cc:1207
+#: n:116
+msgid "Elevation on"
+msgstr ""
+
+#: ../src/printing.cc:468
+#: n:117
+msgid "P&lan view"
+msgstr "&Půdorys"
+
+#: ../src/printing.cc:470
+#: n:285
+msgid "&Elevation"
+msgstr "&Bokorys"
+
+#. TRANSLATORS: Label used for "clino" in Aven when the view is
+#. neither from directly above nor from directly below. It is
+#. also used in the dialog for editing a marked position in a
+#. presentation.
+#.
+#. Try to keep this translation short - ideally at most 10
+#. characters - as otherwise the compass and clino will be moved
+#. further apart to make room. */
+#: ../src/gfxcore.cc:910
+#: ../src/gfxcore.cc:2139
+#: ../src/mainfrm.cc:160
+#: n:118
+msgid "Elevation"
+msgstr "Bokorys"
+
+#. TRANSLATORS: Label used for "clino" in Aven when the view is
+#. from directly above.
+#.
+#. Try to keep this translation short - ideally at most 10
+#. characters - as otherwise the compass and clino will be moved
+#. further apart to make room. */
+#: ../src/gfxcore.cc:810
+#: ../src/gfxcore.cc:2133
+#: n:432
+msgid "Plan"
+msgstr "Půdorys"
+
+#. TRANSLATORS: Label used for "clino" in Aven when the view is
+#. from directly below.
+#.
+#. Try to keep this translation short - ideally at most 10
+#. characters - as otherwise the compass and clino will be moved
+#. further apart to make room. */
+#: ../src/gfxcore.cc:824
+#: ../src/gfxcore.cc:2136
+#: n:433
+msgid "Kiwi Plan"
+msgstr ""
+
+#: ../src/cavern.c:373
+#: n:120
+msgid "Calculating statistics"
+msgstr ""
+
+#: ../src/readval.c:906
+#: n:121
+msgid "Expecting string field"
+msgstr ""
+
+#: ../src/cmdline.c:211
+#: n:122
+msgid "too few arguments"
+msgstr "příliš málo argumentů"
+
+#: ../src/cmdline.c:218
+#: n:123
+msgid "too many arguments"
+msgstr "příliš mnoho argumentů"
+
+#: ../src/cmdline.c:177
+#: ../src/cmdline.c:180
+#: ../src/cmdline.c:184
+#: n:124
+msgid "FILE"
+msgstr "SOUBOR"
+
+#. TRANSLATORS: In French, Eric chose to use the terminology used by
+#. toporobot: "sequence" for the English "traverse", which makes sense
+#. (although toporobot actually uses this term to mean something more
+#. specific). Feel free to follow this lead if you can't think of a better
+#. term - these messages mostly indicate how processing is progressing.
+#.
+#. A trailing traverse is a dead end back to a junction.
+#: ../src/netskel.c:173
+#: n:125
+msgid "Removing trailing traverses"
+msgstr ""
+
+#. TRANSLATORS: In French, Eric chose to use the terminology used by
+#. toporobot: "sequence" for the English "traverse", which makes sense
+#. (although toporobot actually uses this term to mean something more
+#. specific). Feel free to follow this lead if you can't think of a better
+#. term - these messages mostly indicate how processing is progressing.
+#: ../src/netskel.c:232
+#: n:126
+msgid "Concatenating traverses"
+msgstr ""
+
+#. TRANSLATORS: In French, Eric chose to use the terminology used by
+#. toporobot: "sequence" for the English "traverse", which makes sense
+#. (although toporobot actually uses this term to mean something more
+#. specific). Feel free to follow this lead if you can't think of a better
+#. term - these messages mostly indicate how processing is progressing.
+#: ../src/netskel.c:438
+#: n:127
+msgid "Calculating traverses"
+msgstr ""
+
+#. TRANSLATORS: In French, Eric chose to use the terminology used by
+#. toporobot: "sequence" for the English "traverse", which makes sense
+#. (although toporobot actually uses this term to mean something more
+#. specific). Feel free to follow this lead if you can't think of a better
+#. term - these messages mostly indicate how processing is progressing.
+#.
+#. A trailing traverse is a dead end back to a junction.
+#: ../src/netskel.c:787
+#: n:128
+msgid "Calculating trailing traverses"
+msgstr ""
+
+#: ../src/network.c:67
+#: n:129
+msgid "Simplifying network"
+msgstr ""
+
+#: ../src/network.c:512
+#: n:130
+msgid "Calculating network"
+msgstr ""
+
+#: ../src/datain.c:4734
+#: n:131
+#, c-format
+msgid "Found “%s”, expecting “F” or “B”"
+msgstr ""
+
+#: ../src/cavern.c:550
+#: n:132
+#, c-format
+msgid "Total length of survey legs = %7.2f%s (%7.2f%s adjusted)"
+msgstr ""
+
+#: ../src/cavern.c:553
+#: n:133
+#, c-format
+msgid "Total plan length of survey legs = %7.2f%s"
+msgstr ""
+
+#: ../src/cavern.c:556
+#: n:134
+#, c-format
+msgid "Total vertical length of survey legs = %7.2f%s"
+msgstr ""
+
+#. TRANSLATORS: numbers are altitudes of highest and lowest stations
+#: ../src/cavern.c:563
+#: n:135
+#, c-format
+msgid "Vertical range = %4.2f%s (from %s at %4.2f%s to %s at %4.2f%s)"
+msgstr ""
+
+#. TRANSLATORS: c.f. previous message
+#: ../src/cavern.c:566
+#: n:136
+#, c-format
+msgid "North-South range = %4.2f%s (from %s at %4.2f%s to %s at %4.2f%s)"
+msgstr ""
+
+#. TRANSLATORS: c.f. previous two messages
+#: ../src/cavern.c:569
+#: n:137
+#, c-format
+msgid "East-West range = %4.2f%s (from %s at %4.2f%s to %s at %4.2f%s)"
+msgstr ""
+
+#: ../src/cavern.c:531
+#: n:138
+msgid "There is 1 loop."
+msgstr ""
+
+#: ../src/cavern.c:533
+#: n:139
+#, c-format
+msgid "There are %ld loops."
+msgstr ""
+
+#: ../src/cavern.c:395
+#: n:140
+#, c-format
+msgid "CPU time used %5.2fs"
+msgstr ""
+
+#: ../src/cavern.c:398
+#: n:141
+#, c-format
+msgid "Time used %5.2fs"
+msgstr ""
+
+#: ../src/cavern.c:400
+#: n:142
+msgid "Time used unavailable"
+msgstr ""
+
+#: ../src/cavern.c:403
+#: n:143
+#, c-format
+msgid "Time used %5.2fs (%5.2fs CPU time)"
+msgstr ""
+
+#: ../src/netskel.c:752
+#: n:145
+#, c-format
+msgid "Original length %6.2fm (%3d legs), moved %6.2fm (%5.2fm/leg). "
+msgstr ""
+
+#: ../src/netskel.c:755
+#: n:146
+#, c-format
+msgid "Error %6.2f%%"
+msgstr "Chyba %6.2f%%"
+
+#. TRANSLATORS: Here N/A means "Not Applicable" -- it means the
+#. traverse has zero length, so error per metre is meaningless.
+#.
+#. There should be 4 spaces between "Error" and "N/A" so that it lines
+#. up with the numbers in the message above.
+#: ../src/netskel.c:762
+#: n:147
+msgid "Error N/A"
+msgstr "Chyba (není známo)"
+
+#. TRANSLATORS: description of --help option
+#: ../src/cmdline.c:137
+#: n:150
+msgid "display this help and exit"
+msgstr "zobrazit tento text a skončit"
+
+#. TRANSLATORS: description of --version option
+#: ../src/cmdline.c:140
+#: n:151
+msgid "output version information and exit"
+msgstr "zobrazit informace o verzi a skončit"
+
+#. TRANSLATORS: in command line usage messages e.g. Usage: cavern [OPTION]…
+#: ../src/cmdline.c:169
+#: n:153
+msgid "OPTION"
+msgstr "PŘEPÍNAČ"
+
+#: ../src/mainfrm.cc:164
+#: ../src/printing.cc:406
+#: ../src/printing.cc:1244
+#: ../src/printing.cc:1293
+#: n:154
+msgid "Scale"
+msgstr "Měřítko"
+
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
+#: n:217
+msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
+msgstr ""
+
+#: ../src/cmdline.c:193
+#: n:157
+#, c-format
+msgid "Try “%s --help” for more information.\n"
+msgstr "Více informací získáte příkazem “%s --help”.\n"
+
+#. TRANSLATORS: N/M meaning page N of M in the page footer of a printout.
+#: ../src/printing.cc:1950
+#: n:232
+#, c-format
+msgid "%d/%d"
+msgstr "%d/%d"
+
+#. TRANSLATORS: Used in the footer of printouts to compactly indicate that
+#. the date which follows is the date that the survey data was processed.
+#.
+#. Aven will replace %s with a string giving the date and time (e.g.
+#. "2015-06-09 12:40:44").
+#: ../src/printing.cc:1991
+#: n:167
+#, c-format
+msgid "Processed: %s"
+msgstr ""
+
+#. TRANSLATORS: Used in the footer of printouts to compactly
+#. indicate this is a plan view and what the viewing angle is.
+#. Aven will replace %s with the bearing, and %.0f with the scale.
+#.
+#. This message probably doesn't need translating for most languages.
+#: ../src/printing.cc:1905
+#: n:233
+#, c-format
+msgid "↑%s 1:%.0f"
+msgstr "↑%s 1:%.0f"
+
+#. TRANSLATORS: Used in the footer of printouts to compactly
+#. indicate this is an elevation view and what the viewing angle
+#. is. Aven will replace the %s codes with the bearings to the
+#. left and right of the viewer, and %.0f with the scale.
+#.
+#. This message probably doesn't need translating for most languages.
+#: ../src/printing.cc:1916
+#: n:235
+#, c-format
+msgid "%s↔%s 1:%.0f"
+msgstr "%s↔%s 1:%.0f"
+
+#. TRANSLATORS: Used in the footer of printouts to compactly
+#. indicate this is a tilted elevation view and what the viewing
+#. angles are. Aven will replace the %s codes with the bearings to
+#. the left and right of the viewer and the angle the view is
+#. tilted at, and %.0f with the scale.
+#.
+#. This message probably doesn't need translating for most languages.
+#: ../src/printing.cc:1929
+#: n:236
+#, c-format
+msgid "%s↔%s ∡%s 1:%.0f"
+msgstr "%s↔%s ∡%s 1:%.0f"
+
+#. TRANSLATORS: Used in the footer of printouts to compactly
+#. indicate this is an extended elevation view. Aven will replace
+#. %.0f with the scale.
+#.
+#. Try to keep the translation short (for example, in English we
+#. use "Extended" not "Extended elevation") - there is limited room
+#. in the footer, and the details there are mostly to make it easy
+#. to check that you have corresponding pages from a multiple page
+#. printout.
+#: ../src/printing.cc:1945
+#: n:244
+#, c-format
+msgid "Extended 1:%.0f"
+msgstr ""
+
+#. TRANSLATORS: This is used on printouts of plans, with %s replaced by
+#. something like "123°". The bearing is up the page.
+#: ../src/printing.cc:1188
+#: n:168
+#, c-format
+msgid "Plan view, %s up page"
+msgstr ""
+
+#. TRANSLATORS: This is used on printouts of elevations, with %s
+#. replaced by something like "123°". The bearing is the direction
+#. we’re looking.
+#: ../src/printing.cc:1220
+#: n:169
+#, c-format
+msgid "Elevation facing %s"
+msgstr ""
+
+#. TRANSLATORS: Don't translate example command line option --tilt=-90
+#: ../src/survexport.cc:140
+#: n:462
+msgid "plan view (equivalent to --tilt=-90)"
+msgstr ""
+
+#. TRANSLATORS: This is used on printouts of tilted elevations, with
+#. the first %s replaced by something like "123°", and the second by
+#. something like "-45°". The bearing is the direction we’re
+#. looking.
+#: ../src/printing.cc:1227
+#: n:284
+#, c-format
+msgid "Elevation facing %s, tilted %s"
+msgstr ""
+
+#. TRANSLATORS: Don't translate example command line option --tilt=0
+#: ../src/survexport.cc:142
+#: n:463
+msgid "elevation view (equivalent to --tilt=0)"
+msgstr ""
+
+#. TRANSLATORS: This is used on printouts of extended elevations.
+#: ../src/printing.cc:1236
+#: n:191
+msgid "Extended elevation"
+msgstr ""
+
+#: ../src/cavern.c:513
+#: n:172
+msgid "Survey contains 1 survey station,"
+msgstr ""
+
+#: ../src/cavern.c:515
+#: n:173
+#, c-format
+msgid "Survey contains %ld survey stations,"
+msgstr ""
+
+#: ../src/cavern.c:519
+#: n:174
+msgid " joined by 1 leg."
+msgstr ""
+
+#: ../src/cavern.c:521
+#: n:175
+#, c-format
+msgid " joined by %ld legs."
+msgstr ""
+
+#. TRANSLATORS: node/nodes as in: "Survey has 1 2-node and 2 3-nodes."
+#: n:176
+msgid "node"
+msgstr "uzel"
+
+#. TRANSLATORS: node/nodes as in: "Survey has 1 2-node and 2 3-nodes."
+#: n:177
+msgid "nodes"
+msgstr "uzly"
+
+#. TRANSLATORS: "Connected component" in the graph theory sense - it
+#. means there are %ld bits of survey with no connections between
+#. them. This message is only used if there are more than 1.
+#: ../src/cavern.c:541
+#: n:178
+#, c-format
+msgid "Survey has %ld connected components."
+msgstr ""
+
+#. TRANSLATORS: Label for button in aven’s cavern log window which
+#. allows the user to save the log to a file.
+#: ../src/cavernlog.cc:600
+#: n:446
+msgid "&Save Log"
+msgstr "&Uložit záznamy"
+
+#. TRANSLATORS: Label for button in aven’s cavern log window which
+#. causes the survey data to be reprocessed.
+#: ../src/cavernlog.cc:604
+#: n:184
+msgid "&Reprocess"
+msgstr ""
+
+#: ../src/cmdline.c:241
+#: ../src/cmdline.c:260
+#: n:185
+#, c-format
+msgid "numeric argument “%s” out of range"
+msgstr ""
+
+#: ../src/cmdline.c:243
+#: n:186
+#, c-format
+msgid "argument “%s” not an integer"
+msgstr ""
+
+#: ../src/cmdline.c:262
+#: n:187
+#, c-format
+msgid "argument “%s” not a number"
+msgstr ""
+
+#: ../src/commands.c:2964
+#: ../src/datain.c:631
+#: ../src/datain.c:639
+#: ../src/datain.c:1704
+#: ../src/datain.c:1937
+#: ../src/datain.c:4354
+#: n:497
+#, c-format
+msgid "Expecting “%s”"
+msgstr ""
+
+#: ../src/commands.c:2896
+#: ../src/datain.c:930
+#: ../src/datain.c:1614
+#: ../src/datain.c:1972
+#: ../src/datain.c:2094
+#: ../src/datain.c:2234
+#: ../src/datain.c:2266
+#: ../src/datain.c:2621
+#: n:103
+#, c-format
+msgid "Expecting “%s” or “%s”"
+msgstr ""
+
+#: ../src/commands.c:1384
+#: ../src/commands.c:2056
+#: ../src/datain.c:1571
+#: ../src/datain.c:1994
+#: ../src/datain.c:2017
+#: ../src/datain.c:4397
+#: n:188
+#, c-format
+msgid "Expecting “%s”, “%s”, or “%s”"
+msgstr ""
+
+#: ../src/commands.c:1388
+#: ../src/datain.c:2044
+#: ../src/datain.c:2071
+#: n:189
+#, c-format
+msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
+msgstr ""
+
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
+#: n:483
+#, c-format
+msgid "Expecting quadrant bearing, found “%s”"
+msgstr ""
+
+#. TRANSLATORS: The first %s is replaced by a station name,
+#. the second %s by "entrance" or "export".
+#: ../src/listpos.c:95
+#: ../src/listpos.c:103
+#: n:190
+#, c-format
+msgid "Station “%s” referred to by *%s but never used"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced with e.g. BEGIN or .BOOK or #[
+#: ../src/commands.c:1063
+#: ../src/datain.c:2317
+#: ../src/datain.c:2462
+#: ../src/datain.c:3201
+#: n:192
+#, c-format
+msgid "No matching %s"
+msgstr ""
+
+#. TRANSLATORS: *BEGIN and *END should have the
+#. same if it’s given at all
+#: ../src/commands.c:1103
+#: n:193
+msgid "Survey name doesn’t match BEGIN"
+msgstr ""
+
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end <--[Message given here]
+#: ../src/commands.c:1112
+#: n:194
+msgid "Survey name omitted from END"
+msgstr ""
+
+#. TRANSLATORS: Heading line for .pos file. Please try to ensure the
+#. “,”s (or at least the columns) are in the same place
+#: ../src/pos.cc:98
+#: n:195
+msgid "( Easting, Northing, Altitude )"
+msgstr "( Východ, Sever, Nadm. výška)"
+
+#. TRANSLATORS: bpp is "Bits Per Pixel"
+#: ../src/aboutdlg.cc:172
+#: n:196
+#, c-format
+msgid "Display Depth: %d bpp"
+msgstr ""
+
+#. TRANSLATORS: appended to previous message if the display is colour
+#: ../src/aboutdlg.cc:174
+#: n:197
+msgid " (colour)"
+msgstr ""
+
+#: ../src/commands.c:2865
+#: ../src/commands.c:2927
+#: ../src/commands.c:2970
+#: ../src/commands.c:2986
+#: ../src/commands.c:3011
+#: ../src/commands.c:3022
+#: ../src/readval.c:941
+#: ../src/readval.c:949
+#: ../src/readval.c:955
+#: n:198
+#, c-format
+msgid "Expecting date, found “%s”"
+msgstr ""
+
+#. TRANSLATORS: --help output for --survey option.
+#.
+#. "this" has been added to English translation
+#: ../src/aven.cc:70
+#: ../src/diffpos.c:56
+#: ../src/dump3d.c:48
+#: ../src/extend.c:486
+#: ../src/survexport.cc:132
+#: n:199
+msgid "only load the sub-survey with this prefix"
+msgstr ""
+
+#. TRANSLATORS: --help output for aven --print option
+#: ../src/aven.cc:72
+#: n:119
+msgid "print and exit (requires a 3d file)"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --output option
+#: ../src/cavern.c:115
+#: n:162
+msgid "set location for output files"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --quiet option
+#: ../src/cavern.c:117
+#: n:163
+msgid "fewer messages (-qq for even fewer)"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
+#: ../src/cavern.c:119
+#: n:164
+msgid "do not create .err file"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --warnings-are-errors option
+#: ../src/cavern.c:121
+#: n:165
+msgid "turn warnings into errors"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --log option
+#: ../src/cavern.c:123
+#: n:170
+msgid "log output to .log file"
+msgstr ""
+
+#. TRANSLATORS: --help output for cavern --3d-version option
+#: ../src/cavern.c:125
+#: n:171
+msgid "specify the 3d file format version to output"
+msgstr ""
+
+#. TRANSLATORS: --help output for extend --specfile option
+#: ../src/extend.c:488
+#: n:90
+msgid ".espec file to control extending"
+msgstr ""
+
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
+#: n:91
+msgid "show breaks with surface survey legs in output"
+msgstr ""
+
+#. TRANSLATORS: error message given by "*units tape 0 feet" - it’s
+#. meaningless to say your tape is marked in "0 feet" (but you might
+#. measure distance by counting knots on a diving line, and tie them
+#. every "2 feet").
+#: ../src/commands.c:1937
+#: n:200
+msgid "*UNITS factor must be non-zero"
+msgstr ""
+
+#: ../src/model.cc:392
+#: n:202
+#, c-format
+msgid "No survey data in 3d file “%s”"
+msgstr ""
+
+#. TRANSLATORS: Used in aven above the compass indicator at the lower
+#. right of the display, with a bearing below "Facing". This indicates the
+#. direction the viewer is "facing" in.
+#.
+#. Try to keep this translation short - ideally at most 10 characters -
+#. as otherwise the compass and clino will be moved further apart to
+#. make room. */
+#: ../src/gfxcore.cc:796
+#: ../src/gfxcore.cc:2120
+#: n:203
+msgid "Facing"
+msgstr "Azimut"
+
+#. TRANSLATORS: for the title of the About box
+#: ../src/aboutdlg.cc:60
+#: n:205
+#, c-format
+msgid "About %s"
+msgstr "O %s"
+
+#. TRANSLATORS: "Terrain file" being a digital model of the terrain (e.g. a
+#. grid of height values).
+#: ../src/mainfrm.cc:1468
+#: n:451
+msgid "Select a terrain file to view"
+msgstr ""
+
+#: ../src/mainfrm.cc:1498
+#: n:496
+msgid "Select a geodata file to overlay"
+msgstr ""
+
+#: ../src/mainfrm.cc:1462
+#: n:452
+msgid "Terrain files"
+msgstr ""
+
+#: ../src/mainfrm.cc:1494
+#: n:495
+msgid "Geodata files"
+msgstr ""
+
+#. TRANSLATORS: Aven shows a circle of terrain covering the area
+#. of the survey plus a bit, but the terrain data file didn't
+#. contain any data inside that circle.
+#: ../src/gfxcore.cc:3175
+#: n:161
+msgid "No terrain data near area of survey"
+msgstr ""
+
+#. TRANSLATORS: Here "survey" is a "cave map" rather than list of questions
+#. - it should be translated to the terminology that cavers using the
+#. language would use.
+#.
+#. File->Open dialog:
+#: ../src/mainfrm.cc:1439
+#: n:206
+msgid "Select a survey file to view"
+msgstr ""
+
+#. TRANSLATORS: Survex is the name of the software, and "3d" refers to a
+#. file extension, so neither should be translated.
+#: ../src/export.cc:64
+#: ../src/mainfrm.cc:1400
+#: ../src/mainfrm.cc:1603
+#: n:207
+msgid "Survex 3d files"
+msgstr "Survex 3D soubory"
+
+#: ../src/mainfrm.cc:1431
+#: ../src/mainfrm.cc:1463
+#: ../src/mainfrm.cc:1495
+#: ../src/mainfrm.cc:2037
+#: ../src/printing.cc:644
+#: n:208
+msgid "All files"
+msgstr "Všechny soubory"
+
+#. TRANSLATORS: Here "survey" is a "cave map" rather than
+#. list of questions - it should be translated to the
+#. terminology that cavers using the language would use.
+#: ../src/mainfrm.cc:1397
+#: n:229
+msgid "All survey files"
+msgstr ""
+
+#. TRANSLATORS: Survex is the name of the software, and "svx" refers to a
+#. file extension, so neither should be translated.
+#: ../src/mainfrm.cc:1403
+#: n:329
+msgid "Survex svx files"
+msgstr "Survex svx soubory"
+
+#. TRANSLATORS: "Compass" as in Larry Fish’s cave
+#. surveying package, so should not be translated
+#: ../src/mainfrm.cc:1411
+#: n:330
+msgid "Compass MAK files"
+msgstr "Compass MAK soubory"
+
+#. TRANSLATORS: "Compass" as in Larry Fish’s cave
+#. surveying package, so should not be translated
+#: ../src/mainfrm.cc:1415
+#: n:490
+msgid "Compass DAT files"
+msgstr "Compass DAT soubory"
+
+#. TRANSLATORS: "Compass" as in Larry Fish’s cave
+#. surveying package, so should not be translated
+#: ../src/mainfrm.cc:1419
+#: n:491
+msgid "Compass CLP files"
+msgstr "Compass CLP soubory"
+
+#. TRANSLATORS: "Walls" is David McKenzie's cave
+#. surveying package, so should not be translated
+#: ../src/mainfrm.cc:1423
+#: n:504
+msgid "Walls project files"
+msgstr ""
+
+#. TRANSLATORS: "Walls" is David McKenzie's cave
+#. surveying package, so should not be translated
+#: ../src/mainfrm.cc:1427
+#: n:505
+msgid "Walls survey data files"
+msgstr ""
+
+#: ../src/export.cc:67
+#: n:101
+msgid "CSV files"
+msgstr "CSV soubory"
+
+#: ../src/export.cc:70
+#: n:411
+msgid "DXF files"
+msgstr "DXF soubory"
+
+#: ../src/export.cc:73
+#: n:412
+msgid "EPS files"
+msgstr "EPS soubory"
+
+#: ../src/export.cc:76
+#: n:413
+msgid "GPX files"
+msgstr "GPX soubory"
+
+#. TRANSLATORS: Here "plotter" refers to a machine which draws a printout
+#. on a (usually large) sheet of paper using a pen mounted in a motorised
+#. mechanism.
+#: ../src/export.cc:82
+#: n:414
+#, fuzzy
+msgid "HPGL for plotters"
+msgstr "HPGL soubory"
+
+#: ../src/export.cc:88
+#: n:444
+msgid "KML files"
+msgstr "KML soubory"
+
+#. TRANSLATORS: "Compass" and "Carto" are the names of software packages,
+#. so should not be translated:
+#. https://www.fountainware.com/compass/
+#: ../src/export.cc:94
+#: n:415
+msgid "Compass PLT for use with Carto"
+msgstr ""
+
+#. TRANSLATORS: Survex is the name of the software, and "pos" refers to a
+#. file extension, so neither should be translated.
+#: ../src/export.cc:99
+#: n:166
+msgid "Survex pos files"
+msgstr "Survex pos soubory"
+
+#: ../src/export.cc:102
+#: n:417
+msgid "SVG files"
+msgstr "SVG soubory"
+
+#: ../src/export.cc:85
+#: n:445
+msgid "JSON files"
+msgstr "JSON soubory"
+
+#: ../src/export.cc:105
+#: ../src/printing.cc:376
+#: n:523
+msgid "Shapefiles (lines)"
+msgstr ""
+
+#: ../src/export.cc:108
+#: ../src/printing.cc:377
+#: n:524
+msgid "Shapefiles (points)"
+msgstr ""
+
+#. TRANSLATORS: Log files from running cavern (extension .log)
+#: ../src/cavernlog.cc:652
+#: n:447
+msgid "Log files"
+msgstr ""
+
+#. TRANSLATORS: Here "survey" is a "cave map" rather than list of questions
+#. - it should be translated to the terminology that cavers using the
+#. language would use.
+#.
+#. This string is used in the about box (summarising the purpose of aven).
+#: ../src/aboutdlg.cc:88
+#: n:209
+msgid "Survey visualisation tool"
+msgstr ""
+
+#. TRANSLATORS: Summary paragraph for the GPLv2 - there are translations for
+#. some languages here:
+#. https://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html
+#: ../src/aboutdlg.cc:102
+#: n:219
+msgid "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version."
+msgstr "Tento program je svobodný software: můžete jej šířit a upravovat podle ustanovení Obecné veřejné licence GNU (GNU General Public Licence), vydávané Free Software Foundation a to buď podle 2. verze této Licence, nebo (podle vašeho uvážení) kterékoli pozdější verze."
+
+#. TRANSLATORS: Part of diffpos --help
+#: ../src/diffpos.c:264
+#: n:218
+msgid "FILE1 FILE2 [THRESHOLD]"
+msgstr ""
+
+#. TRANSLATORS: Part of diffpos --help
+#: ../src/diffpos.c:266
+#: n:255
+#, c-format
+msgid "FILE1 and FILE2 can be .pos or .3d files\nTHRESHOLD is the max. ignorable change along any axis in metres (default %s)"
+msgstr ""
+
+#. TRANSLATORS: Part of extend --help
+#: ../src/extend.c:559
+#: n:267
+msgid "INPUT_FILE [OUTPUT_3D_FILE]"
+msgstr ""
+
+#. TRANSLATORS: Part of sorterr --help
+#: ../src/sorterr.c:124
+#: n:268
+msgid "ERR_FILE [HOW_MANY]"
+msgstr ""
+
+#. TRANSLATORS: Here "survey" is a "cave map" rather than list of questions
+#. - it should be translated to the terminology that cavers using the
+#. language would use.
+#.
+#. Part of aven --help
+#: ../src/aven.cc:170
+#: ../src/aven.cc:215
+#: n:269
+msgid "[SURVEY_FILE]"
+msgstr ""
+
+#. TRANSLATORS: Here "survey" is a "cave map" rather than list of questions
+#. - it should be translated to the terminology that cavers using the
+#. language would use.
+#.
+#. Part of cavern --help
+#: ../src/cavern.c:227
+#: n:507
+msgid "[SURVEY_DATA_FILE]"
+msgstr ""
+
+#. TRANSLATORS: Used in the "colour key" for "colour by date" if there
+#. are surveys without date information. Try to keep this fairly short.
+#: ../src/gfxcore.cc:1164
+#: n:221
+msgid "Undated"
+msgstr "Bez data"
+
+#. TRANSLATORS: Used in the "colour key" for "colour by error" for surveys
+#. which aren’t part of a loop and so have no error information. Try to keep
+#. this fairly short.
+#: ../src/gfxcore.cc:1189
+#: n:290
+msgid "Not in loop"
+msgstr ""
+
+#. TRANSLATORS: error from:
+#.
+#. *data normal newline from to tape compass clino
+#: ../src/commands.c:1778
+#: n:222
+msgid "NEWLINE can’t be the first reading"
+msgstr ""
+
+#. TRANSLATORS: error from:
+#.
+#. *data normal from to tape compass clino newline
+#: ../src/commands.c:1819
+#: n:223
+msgid "NEWLINE can’t be the last reading"
+msgstr ""
+
+#. TRANSLATORS: Error given by something like:
+#.
+#. *data normal station tape compass clino
+#.
+#. ("station" signifies interleaved data).
+#: ../src/commands.c:1842
+#: n:224
+msgid "Interleaved readings, but no NEWLINE"
+msgstr ""
+
+#. TRANSLATORS: caused by e.g.
+#.
+#. *data diving station newline depth tape compass
+#.
+#. ("depth" needs to occur before "newline").
+#: ../src/commands.c:1718
+#: n:225
+#, c-format
+msgid "Reading “%s” must occur before NEWLINE"
+msgstr ""
+
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
+#. TRANSLATORS: e.g.
+#.
+#. *data normal from to tape newline compass clino
+#: ../src/commands.c:1769
+#: n:226
+msgid "NEWLINE can only be preceded by STATION, DEPTH, and COUNT"
+msgstr ""
+
+#. TRANSLATORS: e.g.
+#.
+#. *calibrate tape compass 1 1
+#: ../src/commands.c:1987
+#: n:227
+msgid "Can’t calibrate angular and length quantities together"
+msgstr ""
+
+#: ../src/commands.c:855
+#: ../src/commands.c:867
+#: n:397
+msgid "Bad *alias command"
+msgstr ""
+
+#. TRANSLATORS: %s will be replaced by the application name ("Aven"
+#. currently)
+#: ../src/log.cc:30
+#: n:228
+#, c-format
+msgid "%s Error Log"
+msgstr ""
+
+#. TRANSLATORS: The text on the action button in the "Export" settings
+#. dialog
+#: ../src/printing.cc:586
+#: n:230
+msgid "&Export..."
+msgstr "&Export..."
+
+#. TRANSLATORS: "Rotation" menu. The accelerators must be different within
+#. this group. Tickable menu item which toggles auto rotation.
+#. Please don't translate "Space" - that's the shortcut key to use which
+#. wxWidgets needs to parse and it should then handle translating.
+#: ../src/mainfrm.cc:791
+#: n:231
+msgid "Au&to-Rotate\tSpace"
+msgstr ""
+
+#: ../src/mainfrm.cc:793
+#: n:234
+msgid "&Reverse Direction\tR"
+msgstr "Opačný smě&r\tR"
+
+#. TRANSLATORS: View *looking* North
+#: ../src/gfxcore.cc:4393
+#: ../src/mainfrm.cc:796
+#: n:240
+msgid "View &North\tN"
+msgstr ""
+
+#. TRANSLATORS: View *looking* East
+#: ../src/gfxcore.cc:4395
+#: ../src/mainfrm.cc:797
+#: n:241
+msgid "View &East\tE"
+msgstr ""
+
+#. TRANSLATORS: View *looking* South
+#: ../src/gfxcore.cc:4397
+#: ../src/mainfrm.cc:798
+#: n:242
+msgid "View &South\tS"
+msgstr ""
+
+#. TRANSLATORS: View *looking* West
+#: ../src/gfxcore.cc:4399
+#: ../src/mainfrm.cc:799
+#: n:243
+msgid "View &West\tW"
+msgstr ""
+
+#: ../src/gfxcore.cc:4419
+#: ../src/mainfrm.cc:801
+#: n:248
+msgid "&Plan View\tP"
+msgstr "&Půdorys\tP"
+
+#: ../src/gfxcore.cc:4420
+#: ../src/mainfrm.cc:802
+#: n:249
+msgid "E&levation\tL"
+msgstr "&Bokorys\tL"
+
+#: ../src/mainfrm.cc:804
+#: n:254
+msgid "Restore De&fault View\tDelete"
+msgstr ""
+
+#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
+#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
+#. the "what to print/export" dialog.
+#: ../src/printing.cc:364
+#: n:283
+msgid "View"
+msgstr "Pohled"
+
+#. TRANSLATORS: Used as a label for the surrounding box for the "survey
+#. legs" "stations" "names" etc checkboxes in the "what to print" dialog.
+#. "Elements" isn’t a good name for this but nothing better has yet come to
+#. mind!
+#: ../src/printing.cc:369
+#: n:256
+msgid "Elements"
+msgstr "Prvky"
+
+#: ../src/printing.cc:374
+#: n:410
+msgid "Export format"
+msgstr "Exportovat formát"
+
+#: ../src/printing.cc:439
+#: ../src/printing.cc:847
+#: n:257
+#, c-format
+msgid "%d pages (%dx%d)"
+msgstr ""
+
+#. TRANSLATORS: used in the scale drop down selector in the print
+#. dialog the implicit meaning is "choose a suitable scale to fit
+#. the plot on a single page", but we need something shorter
+#: ../src/printing.cc:411
+#: n:258
+msgid "One page"
+msgstr "Jedna strana"
+
+#: ../src/mainfrm.cc:156
+#: ../src/printing.cc:446
+#: n:259
+msgid "Bearing"
+msgstr "Azimut"
+
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
+#: n:460
+msgid "bearing (90, 90d, 100g all mean 90°)"
+msgstr ""
+
+#: ../src/pos.cc:90
+#: n:100
+msgid "Station Name"
+msgstr ""
+
+#: ../src/printing.cc:496
+#: n:260
+msgid "Station Names"
+msgstr ""
+
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
+#: ../src/survexport.cc:147
+#: n:475
+msgid "station labels"
+msgstr ""
+
+#: ../src/printing.cc:492
+#: n:261
+msgid "Crosses"
+msgstr "Křížky"
+
+#: ../src/survexport.cc:146
+#: n:474
+msgid "station markers"
+msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: ../src/printing.cc:478
+#: n:262
+msgid "Underground Survey Legs"
+msgstr ""
+
+#: ../src/survexport.cc:143
+#: n:476
+msgid "underground survey legs"
+msgstr ""
+
+#: ../src/printing.cc:512
+#: n:393
+msgid "Cross-sections"
+msgstr ""
+
+#: ../src/survexport.cc:151
+#: n:469
+msgid "cross-sections"
+msgstr ""
+
+#: ../src/printing.cc:517
+#: n:394
+msgid "Walls"
+msgstr ""
+
+#: ../src/survexport.cc:152
+#: n:470
+msgid "walls"
+msgstr ""
+
+#. TRANSLATORS: Label for checkbox which controls whether there's a
+#. layer in the exported file (for formats such as DXF and SVG)
+#. containing polygons for the inside of cave passages).
+#: ../src/printing.cc:524
+#: n:395
+msgid "Passages"
+msgstr ""
+
+#: ../src/survexport.cc:153
+#: n:471
+msgid "passages"
+msgstr ""
+
+#: ../src/printing.cc:528
+#: n:421
+msgid "Origin in centre"
+msgstr ""
+
+#: ../src/survexport.cc:154
+#: n:472
+msgid "origin in centre"
+msgstr ""
+
+#: ../src/printing.cc:532
+#: n:422
+msgid "Full coordinates"
+msgstr ""
+
+#: ../src/survexport.cc:155
+#: n:473
+msgid "full coordinates"
+msgstr ""
+
+#: ../src/printing.cc:536
+#: n:477
+msgid "Clamp to ground"
+msgstr "Vztaženo k zemi"
+
+#: ../src/survexport.cc:156
+#: n:478
+msgid "clamp to ground"
+msgstr "vztaženo k zemi"
+
+#. TRANSLATORS: Used in the print dialog:
+#: ../src/printing.cc:456
+#: n:263
+msgid "Tilt angle"
+msgstr ""
+
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
+#: n:461
+msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
+msgstr ""
+
+#. TRANSLATORS: used in the print dialog - controls drawing lines
+#. around each page
+#: ../src/printing.cc:544
+#: n:264
+msgid "Page Borders"
+msgstr ""
+
+#. TRANSLATORS: As in the legend on a map. Used in the print dialog -
+#. controls drawing the box at the lower left with survey name, view
+#. angles, etc
+#: ../src/printing.cc:555
+#: n:265
+msgid "Legend"
+msgstr "Vysvětlívky"
+
+#. TRANSLATORS: will be used in the print dialog - check this to print
+#. blank pages (otherwise they’ll be skipped to save paper)
+#: ../src/printing.cc:550
+#: n:266
+msgid "Blank Pages"
+msgstr ""
+
+#. TRANSLATORS: Items in the "View" menu:
+#: ../src/mainfrm.cc:821
+#: n:270
+msgid "Station &Names\tCtrl+N"
+msgstr ""
+
+#. TRANSLATORS: Toggles drawing of 3D passages
+#: ../src/mainfrm.cc:823
+#: n:346
+msgid "Passage &Tubes\tCtrl+T"
+msgstr ""
+
+#. TRANSLATORS: Toggles drawing the surface of the Earth
+#: ../src/mainfrm.cc:825
+#: n:449
+msgid "Terr&ain"
+msgstr ""
+
+#: ../src/mainfrm.cc:826
+#: n:271
+msgid "&Crosses\tCtrl+X"
+msgstr "&Křížky\tCtrl+X"
+
+#: ../src/mainfrm.cc:827
+#: n:297
+msgid "&Grid\tCtrl+G"
+msgstr ""
+
+#: ../src/mainfrm.cc:828
+#: n:318
+msgid "&Bounding Box\tCtrl+B"
+msgstr "&Ohraničení\tCtrl+B"
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: ../src/mainfrm.cc:832
+#: n:272
+msgid "&Underground Survey Legs\tCtrl+L"
+msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: ../src/mainfrm.cc:835
+#: n:291
+msgid "&Surface Survey Legs\tCtrl+F"
+msgstr ""
+
+#: ../src/survexport.cc:144
+#: n:464
+msgid "surface survey legs"
+msgstr ""
+
+#: ../src/mainfrm.cc:860
+#: n:273
+#, fuzzy
+msgid "&Overlapping Names"
+msgstr "O&verlapping Names"
+
+#: ../src/mainfrm.cc:873
+#: n:450
+msgid "Co&lour by"
+msgstr ""
+
+#: ../src/mainfrm.cc:876
+#: n:294
+msgid "Highlight &Entrances"
+msgstr ""
+
+#: ../src/mainfrm.cc:877
+#: n:295
+msgid "Highlight &Fixed Points"
+msgstr ""
+
+#: ../src/mainfrm.cc:878
+#: n:296
+msgid "Highlight E&xported Points"
+msgstr ""
+
+#: ../src/printing.cc:500
+#: n:418
+msgid "Entrances"
+msgstr ""
+
+#: ../src/survexport.cc:148
+#: n:466
+msgid "entrances"
+msgstr ""
+
+#: ../src/printing.cc:504
+#: n:419
+msgid "Fixed Points"
+msgstr ""
+
+#: ../src/survexport.cc:149
+#: n:467
+msgid "fixed points"
+msgstr ""
+
+#: ../src/printing.cc:508
+#: n:420
+msgid "Exported Stations"
+msgstr ""
+
+#: ../src/survexport.cc:150
+#: n:468
+msgid "exported stations"
+msgstr ""
+
+#: ../src/mainfrm.cc:887
+#: n:237
+msgid "&Perspective"
+msgstr ""
+
+#: ../src/mainfrm.cc:889
+#: n:238
+msgid "Textured &Walls"
+msgstr ""
+
+#. TRANSLATORS: Toggles OpenGL "Depth Fogging" - feel free to translate
+#. using that term instead if it gives a better translation which most
+#. users will understand.
+#: ../src/mainfrm.cc:893
+#: n:239
+msgid "Fade Distant Ob&jects"
+msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: ../src/mainfrm.cc:896
+#: n:298
+msgid "Smoot&hed Survey Legs"
+msgstr ""
+
+#: ../src/mainfrm.cc:902
+#: ../src/mainfrm.cc:909
+#: n:356
+msgid "Full Screen &Mode\tF11"
+msgstr "&Celá obrazovka\tF11"
+
+#: ../src/gfxcore.cc:4463
+#: ../src/mainfrm.cc:863
+#: n:292
+msgid "Colour by &Depth"
+msgstr ""
+
+#: ../src/gfxcore.cc:4464
+#: ../src/mainfrm.cc:864
+#: n:293
+msgid "Colour by D&ate"
+msgstr ""
+
+#: ../src/gfxcore.cc:4465
+#: ../src/mainfrm.cc:865
+#: n:289
+msgid "Colour by &Error"
+msgstr ""
+
+#: ../src/gfxcore.cc:4466
+#: ../src/mainfrm.cc:866
+#: n:480
+msgid "Colour by &Horizontal Error"
+msgstr ""
+
+#: ../src/gfxcore.cc:4467
+#: ../src/mainfrm.cc:867
+#: n:481
+msgid "Colour by &Vertical Error"
+msgstr ""
+
+#: ../src/gfxcore.cc:4468
+#: ../src/mainfrm.cc:868
+#: n:85
+msgid "Colour by &Gradient"
+msgstr ""
+
+#: ../src/gfxcore.cc:4469
+#: ../src/mainfrm.cc:869
+#: n:82
+msgid "Colour by &Length"
+msgstr ""
+
+#: ../src/gfxcore.cc:4470
+#: ../src/mainfrm.cc:870
+#: n:448
+msgid "Colour by &Survey"
+msgstr ""
+
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
+#: n:482
+msgid "Colour by St&yle"
+msgstr ""
+
+#: ../src/mainfrm.cc:937
+#: n:274
+msgid "&Compass"
+msgstr "&Kompas"
+
+#: ../src/mainfrm.cc:938
+#: n:275
+msgid "C&linometer"
+msgstr ""
+
+#. TRANSLATORS: The "Colour Key" is the thing in aven showing which colour
+#. corresponds to which depth, date, survey closure error, etc.
+#: ../src/mainfrm.cc:941
+#: n:276
+#, fuzzy
+msgid "Colour &Key"
+msgstr "Colour Ke&y"
+
+#: ../src/mainfrm.cc:942
+#: n:277
+msgid "&Scale Bar"
+msgstr "&Pruh s měřítkem"
+
+#: ../src/mainfrm.cc:918
+#: n:280
+msgid "&Reverse Sense\tCtrl+R"
+msgstr ""
+
+#. TRANSLATORS: Please don't translate "Escape" - that's the shortcut key
+#. to use which wxWidgets needs to parse and it should then handle
+#. translating.
+#: ../src/mainfrm.cc:885
+#: ../src/mainfrm.cc:927
+#: ../src/mainfrm.cc:933
+#: n:281
+msgid "&Cancel Measuring Line\tEscape"
+msgstr ""
+
+#: ../src/mainfrm.cc:943
+#: n:299
+msgid "&Indicators"
+msgstr "Indiká&tory"
+
+#: ../src/z_getopt.c:716
+#: n:300
+#, c-format
+msgid "%s: option “%s” is ambiguous\n"
+msgstr "%s: přepínač “%s” není jednoznačný\n"
+
+#: ../src/z_getopt.c:766
+#: n:302
+#, c-format
+msgid "%s: option “%c%s” doesn’t allow an argument\n"
+msgstr "%s: přepínač “%c%s” nepřipouští argument\n"
+
+#: ../src/z_getopt.c:753
+#: n:303
+#, c-format
+msgid "%s: option “--%s” doesn’t allow an argument\n"
+msgstr "%s: přepínač “--%s” nepřipouští argument\n"
+
+#: ../src/z_getopt.c:814
+#: n:305
+#, c-format
+msgid "%s: option “%s” requires an argument\n"
+msgstr "%s: přepínač “%s” vyžaduje argument\n"
+
+#: ../src/z_getopt.c:1186
+#: n:306
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: přepínač vyžaduje argument -- %c\n"
+
+#: ../src/z_getopt.c:855
+#: n:307
+#, c-format
+msgid "%s: unrecognized option “--%s”\n"
+msgstr "%s: nerozpoznaný přepínač “--%s”\n"
+
+#: ../src/z_getopt.c:866
+#: n:308
+#, c-format
+msgid "%s: unrecognized option “%c%s”\n"
+msgstr "%s: nerozpoznaný přepínač “%c%s”\n"
+
+#: ../src/z_getopt.c:927
+#: n:310
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neplatný přepínač -- %c\n"
+
+#: ../src/mainfrm.cc:807
+#: n:311
+msgid "&New Presentation"
+msgstr ""
+
+#: ../src/mainfrm.cc:808
+#: n:312
+msgid "&Open Presentation..."
+msgstr ""
+
+#: ../src/mainfrm.cc:809
+#: n:313
+msgid "&Save Presentation"
+msgstr ""
+
+#: ../src/mainfrm.cc:810
+#: n:314
+msgid "Sa&ve Presentation As..."
+msgstr ""
+
+#. TRANSLATORS: "Mark" as in "Mark this position"
+#: ../src/mainfrm.cc:813
+#: n:315
+msgid "&Mark"
+msgstr "&Značky"
+
+#. TRANSLATORS: "Play" as in "Play back a recording"
+#: ../src/mainfrm.cc:815
+#: n:316
+msgid "Pla&y"
+msgstr "&Přehrát"
+
+#: ../src/mainfrm.cc:816
+#: n:317
+msgid "&Export as Movie..."
+msgstr "&Exoirt videa..."
+
+#: ../src/mainfrm.cc:2114
+#: n:331
+msgid "Export Movie"
+msgstr "Exoirt Videa"
+
+#: ../src/cavernlog.cc:655
+#: ../src/mainfrm.cc:362
+#: ../src/mainfrm.cc:1606
+#: n:319
+msgid "Select an output filename"
+msgstr "Vyberte požadovaný název souboru"
+
+#: ../src/mainfrm.cc:359
+#: ../src/mainfrm.cc:2036
+#: n:320
+msgid "Aven presentations"
+msgstr ""
+
+#. TRANSLATORS: title of the save screenshot dialog
+#: ../src/mainfrm.cc:1535
+#: n:321
+msgid "Save Screenshot"
+msgstr "Uložit snímek obrazovky"
+
+#: ../src/mainfrm.cc:2031
+#: ../src/mainfrm.cc:2034
+#: n:322
+msgid "Select a presentation to open"
+msgstr ""
+
+#: ../src/mainfrm.cc:433
+#: n:323
+#, c-format
+msgid "Error in format of presentation file “%s”"
+msgstr ""
+
+#. TRANSLATORS: "Compass" as in Larry Fish’s cave
+#. surveying package, so probably shouldn’t be translated
+#: ../src/mainfrm.cc:1407
+#: n:324
+msgid "Compass PLT files"
+msgstr "Compass PLT soubory"
+
+#. TRANSLATORS: "CMAP" is Bob Thrun’s cave surveying
+#. package, so don’t translate it.
+#: ../src/mainfrm.cc:1430
+#: n:325
+msgid "CMAP XYZ files"
+msgstr "CMAP XYZ soubory"
+
+#. TRANSLATORS: title of message box
+#: ../src/mainfrm.cc:1642
+#: ../src/mainfrm.cc:2009
+#: ../src/mainfrm.cc:2025
+#: n:326
+msgid "Modified Presentation"
+msgstr ""
+
+#. TRANSLATORS: and the question in that box
+#: ../src/mainfrm.cc:1640
+#: ../src/mainfrm.cc:2008
+#: ../src/mainfrm.cc:2024
+#: n:327
+msgid "The current presentation has been modified. Abandon unsaved changes?"
+msgstr ""
+
+#: ../src/mainfrm.cc:2367
+#: ../src/mainfrm.cc:2380
+#: n:328
+msgid "No matches were found."
+msgstr "Nenalezeny žádné shody."
+
+#. TRANSLATORS: Menu item in right-click menu in survey tree.
+#: ../src/aventreectrl.cc:375
+#: ../src/aventreectrl.cc:406
+#: n:332
+msgid "Find"
+msgstr "Najít"
+
+#. TRANSLATORS: Placeholder text in aven's station search control.
+#: ../src/mainfrm.cc:1033
+#: n:333
+msgid "Find stations"
+msgstr ""
+
+#. TRANSLATORS: Find station tooltip when stations are found. %d is
+#. replaced by the number of matching stations and %s%s%s by the
+#. pattern searched for.
+#: ../src/mainfrm.cc:2357
+#: n:334
+#, c-format
+msgid "%d stations match %s%s%s"
+msgstr ""
+
+#. TRANSLATORS: Tooltip for aven's station search control.
+#: ../src/mainfrm.cc:1037
+#: ../src/mainfrm.cc:2365
+#: n:533
+msgid "Station name search (substring or wildcard)"
+msgstr ""
+
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
+#: n:535
+msgid "Z exaggeration factor"
+msgstr ""
+
+#: ../src/mainfrm.cc:243
+#: ../src/mainfrm.cc:1729
+#: ../src/mainfrm.cc:1805
+#: ../src/mainfrm.cc:1857
+#: ../src/pos.cc:89
+#: n:335
+msgid "Altitude"
+msgstr "Nadmořská výška"
+
+#. TRANSLATORS: error if you try to drag multiple files to the aven
+#. window
+#: ../src/mainfrm.cc:688
+#: n:336
+msgid "You may only view one 3d file at a time."
+msgstr ""
+
+#: ../src/mainfrm.cc:944
+#: n:337
+msgid "&Side Panel"
+msgstr ""
+
+#. TRANSLATORS: show coordinates (N = North or Northing, E = East or
+#. Easting)
+#: ../src/mainfrm.cc:1727
+#: ../src/mainfrm.cc:1749
+#: ../src/mainfrm.cc:1751
+#: ../src/mainfrm.cc:1856
+#: n:338
+#, c-format
+msgid "%.2f E, %.2f N"
+msgstr "%.2f V, %.2f S"
+
+#. TRANSLATORS: Used in Aven:
+#. From : H 12.24m, Brg 234.5°
+#: ../src/mainfrm.cc:1769
+#: ../src/mainfrm.cc:1814
+#: ../src/mainfrm.cc:1878
+#: n:339
+#, c-format
+msgid "From %s"
+msgstr "Od %s"
+
+#. TRANSLATORS: "H" is short for "Horizontal", "V" for "Vertical"
+#: ../src/mainfrm.cc:1891
+#: n:340
+#, c-format
+msgid "H %.2f%s, V %.2f%s"
+msgstr "V %.2f%s, S %.2f%s"
+
+#. TRANSLATORS: "Dist" is short for "Distance", "Brg" for "Bearing" (as
+#. in Compass bearing) and "Grd" for "Gradient" (the slope angle
+#. measured by the clino)
+#: ../src/mainfrm.cc:1931
+#: n:341
+#, c-format
+msgid "%s: %s, Dist %.2f%s, Brg %03.1f%s, Grd %s"
+msgstr ""
+
+#. TRANSLATORS: tickable menu item in View menu.
+#.
+#. "Metric" here means metres, km, etc (rather than feet, miles, etc)
+#: ../src/gfxcore.cc:4451
+#: ../src/gfxcore.cc:4478
+#: ../src/mainfrm.cc:946
+#: n:342
+msgid "&Metric"
+msgstr "&Metrika"
+
+#. TRANSLATORS: tickable menu item in View menu.
+#.
+#. Degrees are the angular measurement where there are 360 in a full
+#. circle.
+#: ../src/gfxcore.cc:4407
+#: ../src/gfxcore.cc:4428
+#: ../src/gfxcore.cc:4480
+#: ../src/mainfrm.cc:947
+#: n:343
+msgid "&Degrees"
+msgstr ""
+
+#. TRANSLATORS: tickable menu item in View menu.
+#.
+#. Show the tilt of the survey as a percentage gradient (100% = 45
+#. degrees = 50 grad).
+#: ../src/gfxcore.cc:4433
+#: ../src/mainfrm.cc:948
+#: n:430
+msgid "&Percent"
+msgstr ""
+
+#. TRANSLATORS: abbreviation for "kilometres" (unit of length),
+#. used e.g. "5km".
+#.
+#. If there should be a space between the number and this, include
+#. one in the translation.
+#: ../src/gfxcore.cc:1355
+#: ../src/printing.cc:1285
+#: n:423
+msgid "km"
+msgstr "km"
+
+#. TRANSLATORS: abbreviation for "metres" (unit of length), used
+#. e.g. "10m".
+#.
+#. If there should be a space between the number and this, include
+#. one in the translation.
+#: ../src/commands.c:491
+#: ../src/gfxcore.cc:1124
+#: ../src/gfxcore.cc:1216
+#: ../src/gfxcore.cc:1362
+#: ../src/mainfrm.cc:1718
+#: ../src/mainfrm.cc:1780
+#: ../src/mainfrm.cc:1800
+#: ../src/mainfrm.cc:1849
+#: ../src/mainfrm.cc:1882
+#: ../src/printing.cc:1287
+#: n:424
+msgid "m"
+msgstr "m"
+
+#. TRANSLATORS: abbreviation for "centimetres" (unit of length),
+#. used e.g. "50cm".
+#.
+#. If there should be a space between the number and this, include
+#. one in the translation.
+#: ../src/gfxcore.cc:1370
+#: ../src/printing.cc:1290
+#: n:425
+msgid "cm"
+msgstr "cm"
+
+#. TRANSLATORS: abbreviation for "miles" (unit of length,
+#. plural), used e.g. "2 miles".
+#.
+#. If there should be a space between the number and this,
+#. include one in the translation.
+#: ../src/gfxcore.cc:1383
+#: n:426
+msgid " miles"
+msgstr ""
+
+#. TRANSLATORS: abbreviation for "mile" (unit of length,
+#. singular), used e.g. "1 mile".
+#.
+#. If there should be a space between the number and this,
+#. include one in the translation.
+#: ../src/gfxcore.cc:1390
+#: n:427
+msgid " mile"
+msgstr ""
+
+#. TRANSLATORS: abbreviation for "feet" (unit of length), used e.g.
+#. as: 10′
+#.
+#. If there should be a space between the number and this, include
+#. one in the translation.
+#: ../src/commands.c:492
+#: ../src/gfxcore.cc:1124
+#: ../src/gfxcore.cc:1216
+#: ../src/gfxcore.cc:1398
+#: ../src/mainfrm.cc:1723
+#: ../src/mainfrm.cc:1783
+#: ../src/mainfrm.cc:1803
+#: ../src/mainfrm.cc:1854
+#: ../src/mainfrm.cc:1887
+#: n:428
+msgid "′"
+msgstr "′"
+
+#. TRANSLATORS: abbreviation for "inches" (unit of length), used
+#. e.g. as: 6″
+#.
+#. If there should be a space between the number and this, include
+#. one in the translation.
+#: ../src/gfxcore.cc:1406
+#: n:429
+msgid "″"
+msgstr "″"
+
+#. TRANSLATORS: Menu item which turns off the "north arrow" in aven.
+#: ../src/gfxcore.cc:4402
+#: n:387
+msgid "&Hide Compass"
+msgstr ""
+
+#. TRANSLATORS: Menu item which turns off the tilt indicator in aven.
+#: ../src/gfxcore.cc:4423
+#: n:384
+msgid "&Hide Clino"
+msgstr ""
+
+#. TRANSLATORS: Menu item which turns off the scale bar in aven.
+#: ../src/gfxcore.cc:4446
+#: n:385
+msgid "&Hide scale bar"
+msgstr ""
+
+#. TRANSLATORS: Menu item which turns off the colour key.
+#. The "Colour Key" is the thing in aven showing which colour
+#. corresponds to which depth, date, survey closure error, etc.
+#: ../src/gfxcore.cc:4476
+#: n:386
+msgid "&Hide colour key"
+msgstr ""
+
+#. TRANSLATORS: degree symbol - probably should be translated to
+#. itself.
+#: ../src/cavern.c:486
+#: ../src/commands.c:494
+#: ../src/commands.c:495
+#: ../src/commands.c:917
+#: ../src/gfxcore.cc:778
+#: ../src/gfxcore.cc:868
+#: ../src/gfxcore.cc:1197
+#: ../src/mainfrm.cc:1772
+#: ../src/mainfrm.cc:1895
+#: ../src/mainfrm.cc:1918
+#: ../src/printing.cc:87
+#: n:344
+msgid "°"
+msgstr "°"
+
+#. TRANSLATORS: symbol for grad (400 grad = 360 degrees = full
+#. circle).
+#: ../src/commands.c:496
+#: ../src/gfxcore.cc:783
+#: ../src/gfxcore.cc:873
+#: ../src/gfxcore.cc:1197
+#: ../src/mainfrm.cc:1775
+#: ../src/mainfrm.cc:1898
+#: ../src/mainfrm.cc:1921
+#: n:345
+msgid "ᵍ"
+msgstr "ᵍ"
+
+#. TRANSLATORS: symbol for percentage gradient (100% = 45
+#. degrees = 50 grad).
+#: ../src/commands.c:497
+#: ../src/gfxcore.cc:859
+#: ../src/gfxcore.cc:877
+#: ../src/mainfrm.cc:1916
+#: n:96
+msgid "%"
+msgstr "%"
+
+#. TRANSLATORS: infinity symbol - used for the percentage gradient on
+#. vertical angles.
+#: ../src/gfxcore.cc:853
+#: ../src/mainfrm.cc:1914
+#: n:431
+msgid "∞"
+msgstr "∞"
+
+#. TRANSLATORS: "H" is short for "Horizontal", "Brg" for "Bearing" (as
+#. in Compass bearing)
+#: ../src/mainfrm.cc:1787
+#: n:374
+#, c-format
+msgid "%s: H %.2f%s, Brg %03.1f%s"
+msgstr "%s: V %.2f%s, Azim %03.1f%s"
+
+#. TRANSLATORS: "V" is short for "Vertical"
+#: ../src/mainfrm.cc:1820
+#: n:375
+#, c-format
+msgid "%s: V %.2f%s"
+msgstr "%s: S %.2f%s"
+
+#. TRANSLATORS: labels for tabbed side panel this is for the tab with the
+#. tree hierarchy of survey station names
+#: ../src/mainfrm.cc:1105
+#: n:376
+msgid "Surveys"
+msgstr "Měření"
+
+#: ../src/mainfrm.cc:1106
+#: n:377
+msgid "Presentation"
+msgstr "Prezentace"
+
+#. TRANSLATORS: In aven's survey tree, right-clicking on the root
+#. gives a pop-up menu and this is an option (but only enabled if
+#. the view is restricted to a subsurvey). It reloads the current
+#. survey file with the who survey visible.
+#: ../src/aventreectrl.cc:367
+#: n:245
+msgid "Show all"
+msgstr "Zobrazit vše"
+
+#. TRANSLATORS: In aven's survey tree, right-clicking on a survey
+#. name gives a pop-up menu and this is an option. It reloads the
+#. current survey file with the view restricted to the survey
+#. clicked upon.
+#: ../src/aventreectrl.cc:385
+#: n:246
+msgid "Hide others"
+msgstr "Schovat ostatní"
+
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
+#: ../src/aventreectrl.cc:389
+#: n:388
+msgid "Hide si&blings"
+msgstr ""
+
+#: ../src/mainfrm.cc:241
+#: ../src/pos.cc:87
+#: n:378
+msgid "Easting"
+msgstr "východ"
+
+#: ../src/mainfrm.cc:242
+#: ../src/pos.cc:88
+#: n:379
+msgid "Northing"
+msgstr "sever"
+
+#. TRANSLATORS: Aven menu items. An “&” goes before the letter of any
+#. accelerator key.
+#.
+#. The string "\t" separates the menu text and any accelerator key.
+#.
+#. "File" menu. The accelerators must be different within this group.
+#. c.f. 201, 380, 381.
+#: ../src/mainfrm.cc:753
+#: n:220
+msgid "&Open...\tCtrl+O"
+msgstr "&Otevřít...\tCtrl+O"
+
+#. TRANSLATORS: Open a "Terrain file" - i.e. a digital model of the
+#. terrain.
+#: ../src/mainfrm.cc:756
+#: n:453
+#, fuzzy
+msgid "Open &Terrain..."
+msgstr "Open Te&rrain..."
+
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
+#: ../src/mainfrm.cc:757
+#: n:494
+msgid "Overlay &Geodata..."
+msgstr ""
+
+#: ../src/mainfrm.cc:758
+#: n:144
+msgid "Show &Log"
+msgstr "Zobrazit &záznamy"
+
+#: ../src/mainfrm.cc:761
+#: n:380
+msgid "&Print...\tCtrl+P"
+msgstr "&Tisk...\tCtrl+P"
+
+#: ../src/mainfrm.cc:762
+#: n:381
+msgid "P&age Setup..."
+msgstr "&Nastavení stránky..."
+
+#. TRANSLATORS: In the "File" menu
+#: ../src/mainfrm.cc:765
+#: n:201
+msgid "&Screenshot..."
+msgstr "&Snímek obrazovky..."
+
+#. TRANSLATORS: In the "File" menu - c.f. n:191
+#: ../src/mainfrm.cc:768
+#: n:247
+msgid "E&xtended Elevation..."
+msgstr ""
+
+#: ../src/mainfrm.cc:766
+#: n:382
+msgid "&Export as..."
+msgstr "&Exportovat jako..."
+
+#. TRANSLATORS: Title of file dialog to choose name and type of exported
+#. file.
+#: ../src/printing.cc:650
+#: n:401
+msgid "Export as:"
+msgstr "Exportovat jako:"
+
+#. TRANSLATORS: Title of the export
+#. dialog
+#: ../src/printing.cc:316
+#: n:383
+msgid "Export"
+msgstr "Export"
+
+#. TRANSLATORS: for about box:
+#: ../src/aboutdlg.cc:139
+#: n:390
+msgid "System Information:"
+msgstr "Systémové informace:"
+
+#. TRANSLATORS: Title of the print preview dialog
+#: ../src/printing.cc:697
+#: n:398
+msgid "Print Preview"
+msgstr "Náhled tisku"
+
+#. TRANSLATORS: Title of the print
+#. dialog
+#: ../src/printing.cc:313
+#: n:399
+msgid "Print"
+msgstr "Tisk"
+
+#: ../src/printing.cc:581
+#: n:400
+msgid "&Print..."
+msgstr "&Tisk..."
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: ../src/printing.cc:484
+#: n:403
+msgid "Sur&face Survey Legs"
+msgstr ""
+
+#. TRANSLATORS: Title of dialog to edit a waypoint in a presentation.
+#: ../src/mainfrm.cc:129
+#: n:404
+msgid "Edit Waypoint"
+msgstr "Změna místa"
+
+#. TRANSLATORS: Note after "Scale" field in dialog to edit a waypoint
+#. in a presentation.
+#: ../src/mainfrm.cc:168
+#: n:278
+msgid " (unused in perspective view)"
+msgstr ""
+
+#. TRANSLATORS: Field label in dialog to edit a waypoint in a
+#. presentation.
+#: ../src/mainfrm.cc:175
+#: n:279
+msgid "Time: "
+msgstr "Čas: "
+
+#. TRANSLATORS: units+info after time field in dialog to edit a
+#. waypoint in a presentation.
+#: ../src/mainfrm.cc:179
+#: n:282
+msgid " secs (0 = auto; *6 = 6 times auto)"
+msgstr ""
+
+#. TRANSLATORS: %s will be replaced with "Aven" currently (and
+#. perhaps by "Survex" or other things in future).
+#: ../src/aven.cc:305
+#: n:405
+#, c-format
+msgid "This version of %s requires OpenGL to work, but it isn’t available."
+msgstr ""
+
+#: ../src/readval.c:357
+#: n:392
+msgid "Separator in survey name"
+msgstr ""
+
+#. TRANSLATORS: Used in place of the station name when talking about an
+#. anonymous station.
+#: ../src/labelinfo.h:102
+#: n:56
+msgid "anonymous station"
+msgstr ""
+
+#: ../src/readval.c:115
+#: ../src/readval.c:131
+#: ../src/readval.c:149
+#: ../src/readval.c:413
+#: n:47
+msgid "Can't have a leg between two anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
+#: ../src/printing.cc:488
+#: n:406
+msgid "Spla&y Legs"
+msgstr ""
+
+#: ../src/survexport.cc:145
+#: n:465
+msgid "splay legs"
+msgstr ""
+
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
+#: n:251
+msgid "&Duplicate Legs"
+msgstr ""
+
+#. TRANSLATORS: Item in the "Splay Legs" and "Duplicate Legs" submenus - if
+#. this is selected, such legs are not shown.
+#: ../src/aventreectrl.cc:387
+#: ../src/mainfrm.cc:840
+#: ../src/mainfrm.cc:853
+#: n:407
+msgid "&Hide"
+msgstr "&Skrýt"
+
+#. TRANSLATORS: Item in the "Splay Legs" and "Duplicate Legs" submenus - if
+#. this is selected, aven will show such legs with less bright colours.
+#: ../src/mainfrm.cc:846
+#: ../src/mainfrm.cc:855
+#: n:408
+msgid "&Fade"
+msgstr ""
+
+#. TRANSLATORS: Item in the "Splay Legs" and "Duplicate Legs" submenus - if
+#. this is selected, aven will show such legs with dashed lines.
+#: ../src/mainfrm.cc:843
+#: ../src/mainfrm.cc:854
+#: n:250
+msgid "&Dashed"
+msgstr ""
+
+#. TRANSLATORS: Item in the "Splay Legs" and "Duplicate Legs" submenus - if
+#. this is selected, such legs are shown the same as other legs.
+#: ../src/aventreectrl.cc:388
+#: ../src/mainfrm.cc:849
+#: ../src/mainfrm.cc:856
+#: n:409
+msgid "&Show"
+msgstr "&Zobraz"
+
+#: ../src/extend.c:594
+#: n:105
+msgid "Reading in data - please wait…"
+msgstr ""
+
+#. TRANSLATORS: for extend: the user specified breaking a loop or
+#. changing extend direction at this station, but we didn’t find it in
+#. the 3d file
+#: ../src/extend.c:284
+#: ../src/extend.c:303
+#: ../src/extend.c:349
+#: ../src/extend.c:392
+#: ../src/extend.c:435
+#: n:510
+#, c-format
+msgid "Failed to find station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend: the user specified breaking a loop or
+#. changing extend direction at this leg, but we didn’t find it in the
+#. 3d file
+#: ../src/extend.c:329
+#: ../src/extend.c:372
+#: ../src/extend.c:415
+#: ../src/extend.c:459
+#: n:511
+#, c-format
+msgid "Failed to find leg %s → %s"
+msgstr ""
+
+#. TRANSLATORS: for extend: "extend" is starting to produce an extended elevation from station %s
+#: ../src/extend.c:275
+#: n:512
+#, c-format
+msgid "Starting from station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:296
+#: n:513
+#, c-format
+msgid "Extending to the left from station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:342
+#: n:514
+#, c-format
+msgid "Extending to the right from station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:316
+#: n:515
+#, c-format
+msgid "Extending to the left from leg %s → %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:362
+#: n:516
+#, c-format
+msgid "Extending to the right from leg %s → %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:428
+#: n:517
+#, c-format
+msgid "Breaking survey loop at station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:449
+#: n:518
+#, c-format
+msgid "Breaking survey loop at leg %s → %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:385
+#: n:519
+#, c-format
+msgid "Swapping extend direction from station %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:405
+#: n:520
+#, c-format
+msgid "Swapping extend direction from leg %s → %s"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#: ../src/extend.c:688
+#: n:521
+#, c-format
+msgid "Applying specfile: “%s”"
+msgstr ""
+
+#. TRANSLATORS: for extend:
+#. Used to tell the user that a file is being written - %s is the filename
+#: ../src/extend.c:712
+#: n:522
+#, c-format
+msgid "Writing %s…"
+msgstr "Zapisuji do %s…"
+
+#. TRANSLATORS: --help output for sorterr --horizontal option
+#: ../src/sorterr.c:50
+#: n:179
+msgid "sort by horizontal error factor"
+msgstr ""
+
+#. TRANSLATORS: --help output for sorterr --vertical option
+#: ../src/sorterr.c:52
+#: n:180
+msgid "sort by vertical error factor"
+msgstr ""
+
+#. TRANSLATORS: --help output for sorterr --percentage option
+#: ../src/sorterr.c:54
+#: n:181
+msgid "sort by percentage error"
+msgstr ""
+
+#. TRANSLATORS: --help output for sorterr --per-leg option
+#: ../src/sorterr.c:56
+#: n:182
+msgid "sort by error per leg"
+msgstr ""
+
+#. TRANSLATORS: --help output for sorterr --replace option
+#: ../src/sorterr.c:58
+#: n:183
+msgid "replace .err file with re-sorted version"
+msgstr ""
+
+#: ../src/sorterr.c:78
+#: ../src/sorterr.c:95
+#: ../src/sorterr.c:167
+#: n:112
+msgid "Couldn’t parse .err file"
+msgstr ""
+
+#. TRANSLATORS: for diffpos:
+#: ../src/diffpos.c:158
+#: n:500
+#, c-format
+msgid "Moved by (%3.2f,%3.2f,%3.2f): %s"
+msgstr ""
+
+#. TRANSLATORS: for diffpos:
+#: ../src/diffpos.c:195
+#: n:501
+#, c-format
+msgid "Added: %s"
+msgstr "Přidáno: %s"
+
+#. TRANSLATORS: for diffpos:
+#: ../src/diffpos.c:218
+#: n:502
+#, c-format
+msgid "Deleted: %s"
+msgstr "Smazáno: %s"
+
+#. TRANSLATORS: The first of two warnings given when a survey which has
+#. already been completed is reentered. This example file crawl.svx:
+#.
+#. *begin crawl ; <- second warning here
+#. 1 2 9.45 234 -01
+#. *end crawl
+#. *begin crawl ; <- first warning here
+#. 2 3 7.67 223 -03
+#. *end crawl
+#.
+#. Would lead to:
+#.
+#. crawl.svx:4:8: warning: Reentering an existing survey is deprecated
+#. crawl.svx:1: info: Originally entered here
+#.
+#. If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:787
+#: n:29
+msgid "Reentering an existing survey is deprecated"
+msgstr ""
+
+#. TRANSLATORS: The second of two warnings given when a survey which has
+#. already been completed is reentered. This example file crawl.svx:
+#.
+#. *begin crawl ; <- second warning here
+#. 1 2 9.45 234 -01
+#. *end crawl
+#. *begin crawl ; <- first warning here
+#. 2 3 7.67 223 -03
+#. *end crawl
+#.
+#. Would lead to:
+#.
+#. crawl.svx:4:8: warning: Reentering an existing survey is deprecated
+#. crawl.svx:1: info: Originally entered here
+#.
+#. If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:806
+#: n:30
+msgid "Originally entered here"
+msgstr ""
+
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
+#: ../src/commands.c:1123
+#: n:22
+#, c-format
+msgid "Corresponding %s was here"
+msgstr ""
+
+#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
+#. deprecated, so this warning would be generated by:
+#.
+#. *equate \foo.7 1
+#.
+#. If you're unsure what "deprecated" means, see:
+#. https://en.wikipedia.org/wiki/Deprecation
+#: ../src/commands.c:693
+#: ../src/readval.c:81
+#: ../src/readval.c:85
+#: n:25
+msgid "ROOT is deprecated"
+msgstr ""
+
+#. TRANSLATORS: --help output for dump3d --rewind option
+#: ../src/dump3d.c:50
+#: n:204
+msgid "rewind file and read it a second time"
+msgstr ""
+
+#: ../src/dump3d.c:51
+#: n:396
+msgid "show survey date information (if present)"
+msgstr ""
+
+#: ../src/dump3d.c:52
+#: n:509
+msgid "equivalent to --show-dates=-"
+msgstr ""
+
+#: ../src/dump3d.c:53
+#: n:486
+msgid "convert MOVE and LINE into LEG"
+msgstr ""
+
+#: ../src/gpx.cc:86
+#: ../src/kml.cc:85
+#: n:287
+#, c-format
+msgid "Failed to initialise input coordinate system “%s”"
+msgstr ""
+
+#: ../src/gfxcore.cc:3056
+#: n:288
+#, c-format
+msgid "Failed to initialise output coordinate system “%s”"
+msgstr ""
+
+#. TRANSLATORS: %s is replaced by the name of a geodata
+#. file, e.g. GPX, KML.
+#: ../src/gfxcore.cc:4607
+#: ../src/gfxcore.cc:4624
+#: n:492
+#, c-format
+msgid "File “%s” not georeferenced"
+msgstr ""
+
+#: ../src/survexport.cc:158
+#: n:148
+#, c-format
+msgid "generate grid (default %sm)"
+msgstr ""
+
+#: ../src/survexport.cc:159
+#: n:149
+#, c-format
+msgid "station labels text height (default %s)"
+msgstr ""
+
+#: ../src/survexport.cc:160
+#: n:152
+#, c-format
+msgid "station marker size (default %s)"
+msgstr ""
+
+#: ../src/survexport.cc:161
+#: n:487
+msgid "produce Survex 3d output"
+msgstr "vytvořit výstupní Survex 3D"
+
+#: ../src/survexport.cc:162
+#: n:102
+msgid "produce CSV output"
+msgstr "vytvořit výstupní CSV"
+
+#: ../src/survexport.cc:163
+#: n:156
+msgid "produce DXF output"
+msgstr "vytvořit výstupní DXF"
+
+#: ../src/survexport.cc:164
+#: n:454
+msgid "produce EPS output"
+msgstr "vytvořit výstupní EPS"
+
+#: ../src/survexport.cc:165
+#: n:455
+msgid "produce GPX output"
+msgstr "vytvořit výstupní GPX"
+
+#: ../src/survexport.cc:166
+#: n:456
+msgid "produce HPGL output"
+msgstr "vytvořit výstupní HPGL"
+
+#: ../src/survexport.cc:167
+#: n:457
+msgid "produce JSON output"
+msgstr "vytvořit výstupní JSON"
+
+#: ../src/survexport.cc:168
+#: n:458
+msgid "produce KML output"
+msgstr "vytvořit výstupní KML"
+
+#. TRANSLATORS: "Compass" and "Carto" are the names of software packages,
+#. so should not be translated.
+#: ../src/survexport.cc:171
+#: n:159
+msgid "produce Compass PLT output for Carto"
+msgstr ""
+
+#: ../src/survexport.cc:172
+#: n:459
+msgid "produce Survex POS output"
+msgstr "vytvořit výstupní Survex POS"
+
+#: ../src/survexport.cc:173
+#: n:525
+msgid "produce Shapefile (lines) output"
+msgstr ""
+
+#: ../src/survexport.cc:174
+#: n:526
+msgid "produce Shapefile (points) output"
+msgstr ""
+
+#: ../src/survexport.cc:175
+#: n:160
+msgid "produce SVG output"
+msgstr "vytvořit výstupní SVG"
+
+#: ../src/survexport.cc:411
+#: n:252
+msgid "Export format not specified and not known from output file extension"
+msgstr ""
+
+#: ../src/survexport.cc:416
+#: n:253
+msgid "Export format not specified"
+msgstr ""
+
+#: ../src/survexport.cc:157
+#: n:155
+msgid "include items exported by default"
+msgstr ""
+
+#: ../src/datain.c:2515
+#: n:499
+#, c-format
+msgid "Macro “%s” not defined"
+msgstr ""
+
+#: ../src/datain.c:2244
+#: ../src/datain.c:2276
+#: ../src/datain.c:2296
+#: ../src/datain.c:4349
+#: n:506
+#, c-format
+msgid "Ignoring “%s”"
+msgstr "“%s” je ignorováno"
+
+#. TRANSLATORS: Warning issued about a dubious case in survey data in
+#. Walls format (.srv). Real world example:
+#.
+#. P25 *8 5 15 3.58
+#.
+#. This is treated by Walls as a leg from P25 to *8 but seems likely
+#. to be intended to be an isolated LRUD reading (one not on a survey
+#. leg, useful for the start or end of a traverse) but the closing *
+#. was missed (or perhaps in this particular case, mistyped as an 8
+#. by failing to press shift), so Survex issues a warning about it.
+#: ../src/datain.c:4453
+#: n:508
+msgid "Parsing as “to” station but may be isolated LRUD with missing closing delimiter"
+msgstr ""
+
+#: ../src/gdalexport.cc:47
+#: ../src/gdalexport.cc:53
+#: n:527
+#, c-format
+msgid "Failed to initialise GDAL “%s” driver"
+msgstr ""
+
+#: ../src/gdalexport.cc:142
+#: n:528
+msgid "Failed to create GDAL layer"
+msgstr ""
+
+#: ../src/gdalexport.cc:152
+#: n:529
+msgid "Failed to create GDAL field"
+msgstr ""
+
+#: ../src/gdalexport.cc:189
+#: ../src/gdalexport.cc:207
+#: n:530
+msgid "Failed to create GDAL feature"
+msgstr ""
+
+#, c-format
+#~ msgid "Error in format of font file “%s”"
+#~ msgstr ""
+
+#. TRANSLATORS: Show the terrain as solid rather than transparent.
+#~ msgid "Solid Su&rface"
+#~ msgstr ""
+
+#. TRANSLATORS: number of stations found matching search
+#, c-format
+#~ msgid "%d found"
+#~ msgstr ""
+
+#: ../src/mainfrm.cc:913
+#: n:347
+#~ msgid "&Preferences..."
+#~ msgstr "&Nastavení..."
+
+#: n:348
+#~ msgid "Draw passage walls"
+#~ msgstr ""
+
+#: n:349
+#~ msgid "Estimate LRUD readings based on heuristics"
+#~ msgstr ""
+
+#: n:350
+#~ msgid "Mark survey stations with crosses"
+#~ msgstr ""
+
+#: n:351
+#~ msgid "Highlight stations marked as entrances"
+#~ msgstr ""
+
+#: n:352
+#~ msgid "Highlight stations marked as fixed points"
+#~ msgstr ""
+
+#: n:353
+#~ msgid "Highlight stations which are exported"
+#~ msgstr ""
+
+#: n:354
+#~ msgid "Mark survey stations with their names"
+#~ msgstr ""
+
+#: n:355
+#~ msgid "Allow names to overlap on the display (faster)"
+#~ msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: n:357
+#~ msgid "Display underground survey legs"
+#~ msgstr ""
+
+#. TRANSLATORS: Here a "survey leg" is a set of measurements between two
+#. "survey stations".
+#: n:358
+#~ msgid "Display surface survey legs"
+#~ msgstr ""
+
+#: n:359
+#~ msgid "Colour surface surveys by depth"
+#~ msgstr ""
+
+#: n:360
+#~ msgid "Draw surface legs with dashed lines"
+#~ msgstr ""
+
+#: n:361
+#~ msgid "Draw a grid"
+#~ msgstr ""
+
+#: n:362
+#~ msgid "metric units"
+#~ msgstr ""
+
+#. TRANSLATORS: Miles, Feet, Inches, etc. What they call "English units" in
+#. the USA (rather confusingly now that England has largely gone metric!)
+#: n:363
+#~ msgid "imperial units"
+#~ msgstr ""
+
+#. TRANSLATORS: Degrees are the angular measurement where there are 360 in a
+#. full circle.
+#: n:364
+#~ msgid "degrees (°)"
+#~ msgstr ""
+
+#. TRANSLATORS: Grads are the angular measurement where there are 400 in a
+#. full circle.
+#: n:365
+#~ msgid "grads"
+#~ msgstr ""
+
+#: n:366
+#~ msgid "Display measurements in"
+#~ msgstr ""
+
+#: n:367
+#~ msgid "Display angles in"
+#~ msgstr ""
+
+#. TRANSLATORS: reverses the sense of the mouse controls
+#: n:368
+#~ msgid "Reverse the sense of the controls"
+#~ msgstr ""
+
+#: n:369
+#~ msgid "Display scale bar"
+#~ msgstr ""
+
+#: n:370
+#~ msgid "Display depth bar"
+#~ msgstr ""
+
+#: n:371
+#~ msgid "Display compass"
+#~ msgstr ""
+
+#: n:372
+#~ msgid "Display clinometer"
+#~ msgstr ""
+
+#: n:373
+#~ msgid "Display side panel"
+#~ msgstr ""
+
+#: n:440
+#~ msgid "Coordinate projection"
+#~ msgstr ""
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/de.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/de.msg differ
diff -Nru survex-1.4.17/lib/de.po survex-1.4.22/lib/de.po
--- survex-1.4.17/lib/de.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/de.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Ende der Zeile ist nicht leer"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Maßstab"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "»%s«, »%s«, »%s« oder »%s« erwartet"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "Nur kurze Zusammenfassung zeigen (-qq zeigt nur Fehler)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2059,6 +2092,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Eintrag »%s« muss vor NEWLINE stehen"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2107,53 +2152,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Andere Richtung"
+msgid "&Reverse Direction\tR"
+msgstr "&Andere Richtung\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Nach &Norden"
+msgid "View &North\tN"
+msgstr "Nach &Norden\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Nach &Osten"
+msgid "View &East\tE"
+msgstr "Nach &Osten\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Nach &Süden"
+msgid "View &South\tS"
+msgstr "Nach &Süden\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Nach &Westen"
+msgid "View &West\tW"
+msgstr "Nach &Westen\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Grundriss"
+msgid "&Plan View\tP"
+msgstr "&Grundriss\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "&Aufriss"
+msgid "E&levation\tL"
+msgstr "&Aufriss\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Zurück zur voreingestellten Ansicht"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Zurück zur voreingestellten Ansicht\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2198,8 +2243,11 @@
msgid "Bearing"
msgstr "Richtung"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2214,6 +2262,18 @@
msgid "Station Names"
msgstr "Messpunktnamen"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2310,8 +2370,11 @@
msgid "Tilt angle"
msgstr "Neigung"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2529,8 +2592,10 @@
msgid "Colour by &Survey"
msgstr "Farbe je nach Verme&ssung"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2763,7 +2828,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3066,6 +3133,10 @@
msgid "Hide others"
msgstr "Andere ausblenden"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3102,6 +3173,8 @@
msgid "Open &Terrain..."
msgstr "Gelände&modell öffnen..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3240,7 +3313,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Zwischen zwei anonymen Messpunkten kann keine Messstrecke sein"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3251,7 +3327,10 @@
msgid "splay legs"
msgstr "Hilfslinien (splay)"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "&Doppelte Messstrecken"
@@ -3501,6 +3580,17 @@
msgid "Originally entered here"
msgstr "Bereits hier verwendet"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3508,7 +3598,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/de_CH.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/de_CH.msg differ
diff -Nru survex-1.4.17/lib/de_CH.po survex-1.4.22/lib/de_CH.po
--- survex-1.4.17/lib/de_CH.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/de_CH.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Ende der Zeile ist nicht leer"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Massstab"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "«%s», «%s», «%s» oder «%s» erwartet"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "Nur kurze Zusammenfassung zeigen (-qq zeigt nur Fehler)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2059,6 +2092,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Eintrag «%s» muss vor NEWLINE stehen"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2107,53 +2152,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Andere Richtung"
+msgid "&Reverse Direction\tR"
+msgstr "&Andere Richtung\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Nach &Norden"
+msgid "View &North\tN"
+msgstr "Nach &Norden\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Nach &Osten"
+msgid "View &East\tE"
+msgstr "Nach &Osten\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Nach &Süden"
+msgid "View &South\tS"
+msgstr "Nach &Süden\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Nach &Westen"
+msgid "View &West\tW"
+msgstr "Nach &Westen\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Grundriss"
+msgid "&Plan View\tP"
+msgstr "&Grundriss\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "&Aufriss"
+msgid "E&levation\tL"
+msgstr "&Aufriss\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Zurück zur voreingestellten Ansicht"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Zurück zur voreingestellten Ansicht\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2198,8 +2243,11 @@
msgid "Bearing"
msgstr "Richtung"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2214,6 +2262,18 @@
msgid "Station Names"
msgstr "Messpunktnamen"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2310,8 +2370,11 @@
msgid "Tilt angle"
msgstr "Neigung"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2529,8 +2592,10 @@
msgid "Colour by &Survey"
msgstr "Farbe je nach Verme&ssung"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2763,7 +2828,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3066,6 +3133,10 @@
msgid "Hide others"
msgstr "Andere ausblenden"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3102,6 +3173,8 @@
msgid "Open &Terrain..."
msgstr "Gelände&modell öffnen..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3240,7 +3313,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Zwischen zwei anonymen Messpunkten kann keine Messstrecke sein"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3251,7 +3327,10 @@
msgid "splay legs"
msgstr "Hilfslinien (splay)"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "&Doppelte Messstrecken"
@@ -3501,6 +3580,17 @@
msgid "Originally entered here"
msgstr "Bereits hier verwendet"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3508,7 +3598,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/el.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/el.msg differ
diff -Nru survex-1.4.17/lib/el.po survex-1.4.22/lib/el.po
--- survex-1.4.17/lib/el.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/el.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr ""
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Κλίμακας"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr ""
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,7 +1707,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1713,8 +1740,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2055,6 +2087,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr ""
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2103,52 +2147,52 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Αντίστροφη κατεύθυνση"
+msgid "&Reverse Direction\tR"
+msgstr "&Αντίστροφη κατεύθυνση\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
+msgid "View &North\tN"
msgstr ""
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
+msgid "View &East\tE"
msgstr ""
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
+msgid "View &South\tS"
msgstr ""
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
+msgid "View &West\tW"
msgstr ""
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
+msgid "&Plan View\tP"
msgstr ""
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
+msgid "E&levation\tL"
msgstr ""
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
+msgid "Restore De&fault View\tDelete"
msgstr ""
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
@@ -2194,8 +2238,11 @@
msgid "Bearing"
msgstr "Αζιμούθιο"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2210,6 +2257,18 @@
msgid "Station Names"
msgstr ""
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2307,8 +2366,11 @@
msgid "Tilt angle"
msgstr ""
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2521,8 +2583,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2755,7 +2819,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3058,6 +3124,10 @@
msgid "Hide others"
msgstr "Απόκρυψη άλλων"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3094,6 +3164,8 @@
msgid "Open &Terrain..."
msgstr ""
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3231,7 +3303,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3242,7 +3317,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3492,6 +3570,17 @@
msgid "Originally entered here"
msgstr ""
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3499,7 +3588,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/en.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/en.msg differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/en_US.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/en_US.msg differ
diff -Nru survex-1.4.17/lib/en_US.po survex-1.4.22/lib/en_US.po
--- survex-1.4.17/lib/en_US.po 2025-03-19 20:21:16.000000000 +0000
+++ survex-1.4.22/lib/en_US.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "End of line not blank"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr "No blank after token"
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr "Unknown team role “%s”"
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr "Unknown instrument type “%s”"
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Scale"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Expecting “%s”, “%s”, “%s”, or “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,8 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
-msgstr "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
+msgstr "fewer messages (-qq for even fewer)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
#: ../src/cavern.c:119
@@ -1713,8 +1740,13 @@
msgid ".espec file to control extending"
msgstr ".espec file to control extending"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr "show breaks with surface survey shots in output"
@@ -2054,6 +2086,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Reading “%s” must occur before NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr "Reading “%s” not allowed after reading “%s”"
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2102,53 +2146,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Reverse Direction"
+msgid "&Reverse Direction\tR"
+msgstr "&Reverse Direction\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "View &North"
+msgid "View &North\tN"
+msgstr "View &North\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "View &East"
+msgid "View &East\tE"
+msgstr "View &East\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "View &South"
+msgid "View &South\tS"
+msgstr "View &South\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "View &West"
+msgid "View &West\tW"
+msgstr "View &West\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Plan View"
+msgid "&Plan View\tP"
+msgstr "&Plan View\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Pro&file"
+msgid "E&levation\tL"
+msgstr "Profi&le\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Restore Defaul&t View"
+msgid "Restore De&fault View\tDelete"
+msgstr "Restore Defaul&t View\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2193,8 +2237,11 @@
msgid "Bearing"
msgstr "Bearing"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr "bearing (90, 90d, 100g all mean 90°)"
@@ -2209,6 +2256,18 @@
msgid "Station Names"
msgstr "Station Names"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr "Anonymous stations"
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr "anonymous stations"
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2305,8 +2364,11 @@
msgid "Tilt angle"
msgstr "Tilt angle"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr "tilt (45, 45d, 50g, 100% all mean 45°)"
@@ -2519,8 +2581,10 @@
msgid "Colour by &Survey"
msgstr "Color by &Survey"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr "Color by St&yle"
@@ -2753,7 +2817,9 @@
msgid "Station name search (substring or wildcard)"
msgstr "Station name search (substring or wildcard)"
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr "Z exaggeration factor"
@@ -3056,6 +3122,10 @@
msgid "Hide others"
msgstr "Hide others"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3092,6 +3162,8 @@
msgid "Open &Terrain..."
msgstr "Open &Terrain..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3229,7 +3301,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Can't have a shot between two anonymous stations"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3240,7 +3315,10 @@
msgid "splay legs"
msgstr "splay shots"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "&Duplicate Shots"
@@ -3489,6 +3567,17 @@
msgid "Originally entered here"
msgstr "Originally entered here"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3496,7 +3585,7 @@
msgstr "Corresponding %s was here"
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/es.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/es.msg differ
diff -Nru survex-1.4.17/lib/es.po survex-1.4.22/lib/es.po
--- survex-1.4.17/lib/es.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/es.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Fin de línea no vacio"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Escala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Esperando “%s”, “%s”, “%s”, o “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,7 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "solo mostrar un breve resumen (-qq para solo errores)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1713,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr "archivo .espec para controlar el desarrollo"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr "mostrar las interrupciones con las viuales de superficie en la salida"
@@ -2056,6 +2089,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "El campo “%s” tiene que preceder a NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2104,53 +2149,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Invierte el sentido"
+msgid "&Reverse Direction\tR"
+msgstr "&Invierte el sentido\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Vista hacia el &Norte"
+msgid "View &North\tN"
+msgstr "Vista hacia el &Norte\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Vista hacia el &Este"
+msgid "View &East\tE"
+msgstr "Vista hacia el &Este\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Vista hacia el &Sur"
+msgid "View &South\tS"
+msgstr "Vista hacia el &Sur\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Vista hacia el &Oeste"
+msgid "View &West\tW"
+msgstr "Vista hacia el &Oeste\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Planta"
+msgid "&Plan View\tP"
+msgstr "&Planta\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Al&zado"
+msgid "E&levation\tL"
+msgstr "A&lzado\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Restaurar la &vista predeterminada"
+msgid "Restore De&fault View\tDelete"
+msgstr "Restaurar la &vista predeterminada\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2195,8 +2240,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2211,6 +2259,18 @@
msgid "Station Names"
msgstr "Nombres de estación"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2307,8 +2367,11 @@
msgid "Tilt angle"
msgstr "Angulo de inclinación"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2521,8 +2584,10 @@
msgid "Colour by &Survey"
msgstr "Colorear por &Topografia"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2755,7 +2820,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3058,6 +3125,10 @@
msgid "Hide others"
msgstr "Ocultar otros"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3094,6 +3165,8 @@
msgid "Open &Terrain..."
msgstr "Abrir &Terreno..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3231,7 +3304,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "No puede haber una visual entre estaciones anónimas"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3242,7 +3318,10 @@
msgid "splay legs"
msgstr "visuales radiantes"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "Visuales Dupl&icadas"
@@ -3491,6 +3570,17 @@
msgid "Originally entered here"
msgstr "Originalmente entrado aqui"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3498,7 +3588,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
diff -Nru survex-1.4.17/lib/extract-msgs.pl survex-1.4.22/lib/extract-msgs.pl
--- survex-1.4.17/lib/extract-msgs.pl 2025-01-28 02:19:35.000000000 +0000
+++ survex-1.4.22/lib/extract-msgs.pl 2026-05-18 20:51:48.000000000 +0000
@@ -64,8 +64,14 @@
push @{$uses[$msgno]}, "$ARGV:$.";
}
} continue {
- # Reset $. for each input file.
- close ARGV if eof;
+ if (eof) {
+ if (defined $translator_comment) {
+ print STDERR "$ARGV:$.: Ignored TRANSLATORS comment: $translator_comment\n";
+ undef $translator_comment;
+ }
+ # Reset $. for each input file.
+ close ARGV;
+ }
}
my $num_list = Locale::PO->load_file_asarray("survex.pot");
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/fr.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/fr.msg differ
diff -Nru survex-1.4.17/lib/fr.po survex-1.4.22/lib/fr.po
--- survex-1.4.17/lib/fr.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/fr.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Fin de ligne non vide"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,11 +410,24 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
-msgstr "Les unités « %s » sont obsolètes, supposant que ce sont des « gradiants » - voir le manuel pour plus de détails"
+msgstr "Les unités « %s » sont obsolètes, supposant que ce sont des « grads » - voir le manuel pour plus de détails"
#: ../src/commands.c:2559
#: ../src/commands.c:2638
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Échelle"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr "échelle (50, 0,02, 1:50 et 2:100 tous signifient 1:50)"
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "On attendait « %s », « %s », « %s » ou « %s »"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,7 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "Afficher seulement un bref résumé (-qq pour les erreurs seulement)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1713,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr "fichier .espec pour contrôler l'extension"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr "affiche les coupures avec les visées de surface en sortie"
@@ -1924,14 +1957,16 @@
#: ../src/export.cc:105
#: ../src/printing.cc:376
#: n:523
+#, fuzzy
msgid "Shapefiles (lines)"
-msgstr ""
+msgstr "Fichiers Shapefiles (lignes)"
#: ../src/export.cc:108
#: ../src/printing.cc:377
#: n:524
+#, fuzzy
msgid "Shapefiles (points)"
-msgstr ""
+msgstr "Fichiers Shapefiles (points)"
#. TRANSLATORS: Log files from running cavern (extension .log)
#: ../src/cavernlog.cc:652
@@ -2056,6 +2091,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "La donnée « %s » doit apparaître avant NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2104,53 +2151,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "Direction &inverse"
+msgid "&Reverse Direction\tR"
+msgstr "Direction &inverse\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Vue vers le &nord"
+msgid "View &North\tN"
+msgstr "Vue vers le &nord\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Vue vers l’&est"
+msgid "View &East\tE"
+msgstr "Vue vers l’&est\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Vue vers le &sud"
+msgid "View &South\tS"
+msgstr "Vue vers le &sud\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Vue vers l’&ouest"
+msgid "View &West\tW"
+msgstr "Vue vers l’&ouest\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "Vue en &plan"
+msgid "&Plan View\tP"
+msgstr "Vue en &plan\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Élé&vation"
+msgid "E&levation\tL"
+msgstr "É&lévation\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Restaurer la vue par défaut"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Restaurer la vue par défaut\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2195,8 +2242,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr "azimut (90, 90d, 100g, tous signifient 90°)"
@@ -2211,6 +2261,18 @@
msgid "Station Names"
msgstr "Noms de station"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2307,8 +2369,11 @@
msgid "Tilt angle"
msgstr "Angle de basculement"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr "inclinaison (45, 45d, 50g, 100% tous signifient 45°)"
@@ -2521,8 +2586,10 @@
msgid "Colour by &Survey"
msgstr "Couleur par &topographie"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr "Couleur par st&yle"
@@ -2755,7 +2822,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3058,6 +3127,10 @@
msgid "Hide others"
msgstr "Masquer les autres"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3094,6 +3167,8 @@
msgid "Open &Terrain..."
msgstr "Ouvrir un &terrain..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3231,7 +3306,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Impossible d'avoir une visée entre deux stations anonymes"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3242,7 +3320,10 @@
msgid "splay legs"
msgstr "visées latérales"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "Visées &dupliquées"
@@ -3491,6 +3572,17 @@
msgid "Originally entered here"
msgstr "Première utilisation du nom de topographie ici"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3498,7 +3590,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
@@ -3626,13 +3718,15 @@
#: ../src/survexport.cc:173
#: n:525
+#, fuzzy
msgid "produce Shapefile (lines) output"
-msgstr ""
+msgstr "produire une sortie Shapefile (lignes)"
#: ../src/survexport.cc:174
#: n:526
+#, fuzzy
msgid "produce Shapefile (points) output"
-msgstr ""
+msgstr "produire une sortie Shapefile (points)"
#: ../src/survexport.cc:175
#: n:160
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/hu.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/hu.msg differ
diff -Nru survex-1.4.17/lib/hu.po survex-1.4.22/lib/hu.po
--- survex-1.4.17/lib/hu.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/hu.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Sor vége nem üres."
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Lépték"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr ""
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1681,7 +1708,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1714,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2058,6 +2090,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr ""
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2106,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Fordított irány"
+msgid "&Reverse Direction\tR"
+msgstr "&Fordított irány\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
+msgid "View &North\tN"
msgstr ""
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
+msgid "View &East\tE"
msgstr ""
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
+msgid "View &South\tS"
msgstr ""
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
+msgid "View &West\tW"
msgstr ""
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Felülnézet"
+msgid "&Plan View\tP"
+msgstr "&Felülnézet\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
+msgid "E&levation\tL"
msgstr ""
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Restore &Default View"
+msgid "Restore De&fault View\tDelete"
+msgstr "Restore &Default View\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2197,8 +2241,11 @@
msgid "Bearing"
msgstr "Irány"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2213,6 +2260,18 @@
msgid "Station Names"
msgstr ""
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2309,8 +2368,11 @@
msgid "Tilt angle"
msgstr ""
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2523,8 +2585,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2758,7 +2822,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3061,6 +3127,10 @@
msgid "Hide others"
msgstr "Többi elrejtése"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3097,6 +3167,8 @@
msgid "Open &Terrain..."
msgstr ""
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3235,7 +3307,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3246,7 +3321,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3495,6 +3573,17 @@
msgid "Originally entered here"
msgstr ""
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3502,7 +3591,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/3d.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/3d.iconset.zip differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/Aven.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/Aven.iconset.zip differ
diff -Nru survex-1.4.17/lib/icons/Makefile.in survex-1.4.22/lib/icons/Makefile.in
--- survex-1.4.17/lib/icons/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/lib/icons/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -393,6 +393,7 @@
cscope cscopelist:
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/err.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/err.iconset.zip differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/plt.ico and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/plt.ico differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/plt.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/plt.iconset.zip differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/pos.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/pos.iconset.zip differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/icons/svx.iconset.zip and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/icons/svx.iconset.zip differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/id.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/id.msg differ
diff -Nru survex-1.4.17/lib/id.po survex-1.4.22/lib/id.po
--- survex-1.4.17/lib/id.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/id.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Hentikan jika baris tidak kosong"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Skala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Mengharapkan “%s”, “%s”, “%s”, atau “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,7 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "hanya menampilkan ringkasan singkat (-qq hanya kesalahan)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1713,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2054,6 +2087,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Pembacaan “%s” harus terjadi sebelum NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2102,53 +2147,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "A&rah Sebaliknya"
+msgid "&Reverse Direction\tR"
+msgstr "A&rah Sebaliknya\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Lihat &Utara"
+msgid "View &North\tN"
+msgstr "Lihat &Utara\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Lihat &Timur"
+msgid "View &East\tE"
+msgstr "Lihat &Timur\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Lihat &Selatan"
+msgid "View &South\tS"
+msgstr "Lihat &Selatan\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Lihat &Barat"
+msgid "View &West\tW"
+msgstr "Lihat &Barat\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "Tam&pilan Atas"
+msgid "&Plan View\tP"
+msgstr "Tam&pilan Atas\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Ele&vasi"
+msgid "E&levation\tL"
+msgstr "E&levasi\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Kembali ta&mpilan Baku"
+msgid "Restore De&fault View\tDelete"
+msgstr "Kembali ta&mpilan Baku\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2193,8 +2238,11 @@
msgid "Bearing"
msgstr "Arah"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2209,6 +2257,18 @@
msgid "Station Names"
msgstr "Nama Stasiun"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2305,8 +2365,11 @@
msgid "Tilt angle"
msgstr "Sudut kemiringan"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2519,8 +2582,10 @@
msgid "Colour by &Survey"
msgstr "Warna menurut &Survei"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2753,7 +2818,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3056,6 +3123,10 @@
msgid "Hide others"
msgstr "Sembunyikan yang lainnya"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3092,6 +3163,8 @@
msgid "Open &Terrain..."
msgstr "Buka &Dataran..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3229,7 +3302,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Tidak bisa memiliki kaki antara dua stasiun anonim"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3240,7 +3316,10 @@
msgid "splay legs"
msgstr "kaki lebar"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
#, fuzzy
msgid "&Duplicate Legs"
@@ -3490,6 +3569,17 @@
msgid "Originally entered here"
msgstr "Aslinya dimasukkan di sini"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3497,7 +3587,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
diff -Nru survex-1.4.17/lib/images/Makefile.in survex-1.4.22/lib/images/Makefile.in
--- survex-1.4.17/lib/images/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/lib/images/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -348,6 +348,7 @@
cscope cscopelist:
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/it.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/it.msg differ
diff -Nru survex-1.4.17/lib/it.po survex-1.4.22/lib/it.po
--- survex-1.4.17/lib/it.po 2025-03-19 20:20:59.000000000 +0000
+++ survex-1.4.22/lib/it.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Fine della linea non vuota"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Scala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Atteso “%s”, “%s”, “%s” o “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "mostra solamente un breve riassunto (-qq per i soli errori)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2057,6 +2090,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "La lettura “%s” deve precedere NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2105,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Inverte la direzione"
+msgid "&Reverse Direction\tR"
+msgstr "&Inverte la direzione\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Vista verso &Nord"
+msgid "View &North\tN"
+msgstr "Vista verso &Nord\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Vista verso &Est"
+msgid "View &East\tE"
+msgstr "Vista verso &Est\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Vista verso &Sud"
+msgid "View &South\tS"
+msgstr "Vista verso &Sud\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Vista verso &Ovest"
+msgid "View &West\tW"
+msgstr "Vista verso &Ovest\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Pianta"
+msgid "&Plan View\tP"
+msgstr "&Pianta\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Pro&filo"
+msgid "E&levation\tL"
+msgstr "Profi&lo\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Ripristina la &vista predefinita"
+msgid "Restore De&fault View\tDelete"
+msgstr "Ripristina la &vista predefinita\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2196,8 +2241,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2212,6 +2260,18 @@
msgid "Station Names"
msgstr "Nome di stazione"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2308,8 +2368,11 @@
msgid "Tilt angle"
msgstr "Angolo di inclinazione"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2529,8 +2592,10 @@
msgid "Colour by &Survey"
msgstr "Colori secondo &Topografia"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2763,7 +2828,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3066,6 +3133,10 @@
msgid "Hide others"
msgstr "Nascondi altri"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3102,6 +3173,8 @@
msgid "Open &Terrain..."
msgstr "Apri Modello Digitale &Terrestre..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3239,7 +3312,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3250,7 +3326,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3500,6 +3579,17 @@
msgid "Originally entered here"
msgstr "Giá utilizzato qui"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3507,7 +3597,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/pl.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pl.msg differ
diff -Nru survex-1.4.17/lib/pl.po survex-1.4.22/lib/pl.po
--- survex-1.4.17/lib/pl.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/pl.po 2026-06-23 05:39:58.000000000 +0000
@@ -4,7 +4,7 @@
"Report-Msgid-Bugs-To: olly@survex.com\n"
"POT-Creation-Date: 1999-08-26 12:23:58 +0000\n"
"PO-Revision-Date: 2016-08-20 00:43:08 +0000\n"
-"Last-Translator: Mateusz Golicz \n"
+"Last-Translator: Paweł Gogolak \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -177,7 +177,7 @@
#: n:489
#, c-format
msgid "Expecting integer in range %d to %d"
-msgstr ""
+msgstr "Oczekiwana liczba z przedziału od %d do %d"
#: ../src/commands.c:2336
#: n:10
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Niespodziewana treść na końcu linii"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -399,13 +408,26 @@
#: n:532
#, c-format
msgid "Unknown team role “%s”"
-msgstr ""
+msgstr "Nieznana rola w zespole “%s”"
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr "Nieznany typ przyrządu: “%s”"
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
-msgstr ""
+msgstr "Jednostka “%s” jest przestarzała, zakładam “grads” - sprawdź instrukcję aby poznać szczegóły"
#: ../src/commands.c:2559
#: ../src/commands.c:2638
@@ -463,13 +485,13 @@
#: ../src/datain.c:3785
#: n:488
msgid "Output coordinate system not set"
-msgstr ""
+msgstr "Nie ustawiono wyjściowego systemu koordynatów"
#: ../src/datain.c:3287
#: n:503
#, c-format
msgid "Datum “%s” not supported"
-msgstr ""
+msgstr "Układ “%s” nie jest wspierany"
#: ../src/commands.c:2082
#: n:309
@@ -491,7 +513,7 @@
#: n:484
#, c-format
msgid "Declination: %s, grid convergence: %.1f%s"
-msgstr ""
+msgstr "Deklinacja: %s, konwergencja siatki: %.1f%s"
#. TRANSLATORS: Cavern computes the grid convergence at the
#. representative location(s) specified by the
@@ -509,7 +531,7 @@
#: n:531
#, c-format
msgid "Approximate full range of grid convergence: %.1f%s at %s to %.1f%s at %s\n"
-msgstr ""
+msgstr "Przybliżony pełny zakres konwergencji siatki: %.1f%s w %s do %.1f%s w %s\n"
#. TRANSLATORS: Used when a BEGIN command has no survey, but the
#. END command does, e.g.:
@@ -594,7 +616,7 @@
#: ../src/datain.c:2730
#: n:493
msgid "Previously fixed or equated here"
-msgstr ""
+msgstr "Wcześniej ustalone lub połączone tutaj"
#: ../src/cavern.c:312
#: ../src/filename.c:83
@@ -697,13 +719,13 @@
#: n:76
#, c-format
msgid "Assuming 2 digit year is %d"
-msgstr ""
+msgstr "Zakładam 2 cyfrowy rok to %d"
#: ../src/commands.c:2937
#: n:158
#, c-format
msgid "Interpreting as an ISO-format date - use “*date surveyed %d-%02d” to suppress this warning, or “*date %d %d” if you wanted a date range"
-msgstr ""
+msgstr "Interpretuję jako datę w formacie ISO - użyj “*date surveyed %d-%02d” aby wyłączyć to ostrzeżenie albo “*date %d %d” jeśli chciałeś ustawić zakres dat"
#: ../src/commands.c:2877
#: ../src/commands.c:2951
@@ -718,7 +740,7 @@
#: ../src/commands.c:2360
#: n:534
msgid "Invalid year"
-msgstr ""
+msgstr "Nieprawidłowy rok"
#. TRANSLATORS: Suspicious means something like 410 degrees or -20
#. degrees
@@ -805,7 +827,7 @@
#: n:416
#, c-format
msgid "Duplicate date type “%s”"
-msgstr ""
+msgstr "Duplikat typu daty “%s”"
#: ../src/commands.c:1368
#: n:68
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Skala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1432,7 +1456,7 @@
#: ../src/survexport.cc:140
#: n:462
msgid "plan view (equivalent to --tilt=-90)"
-msgstr ""
+msgstr "widok planu (równoznaczne z --tilt=-90)"
#. TRANSLATORS: This is used on printouts of tilted elevations, with
#. the first %s replaced by something like "123°", and the second by
@@ -1448,7 +1472,7 @@
#: ../src/survexport.cc:142
#: n:463
msgid "elevation view (equivalent to --tilt=0)"
-msgstr ""
+msgstr "widok przekroju (równoznaczne z --tilt=0)"
#. TRANSLATORS: This is used on printouts of extended elevations.
#: ../src/printing.cc:1236
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Spodziewałem się “%s”, “%s”, “%s”, albo “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,8 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
-msgstr "wyświetl tylko krótkie podsumowanie (-qq pokaże tylko błędy)"
+msgid "fewer messages (-qq for even fewer)"
+msgstr "mniej wiadomości (-qq aby uzyskać jeszcze mniej)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
#: ../src/cavern.c:119
@@ -1713,8 +1740,13 @@
msgid ".espec file to control extending"
msgstr "Plik .espec z instrukcjami rozwinięcia"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -1764,7 +1796,7 @@
#: ../src/mainfrm.cc:1498
#: n:496
msgid "Select a geodata file to overlay"
-msgstr ""
+msgstr "Wybierz plik danych geograficznych aby nałożyć"
#: ../src/mainfrm.cc:1462
#: n:452
@@ -1774,7 +1806,7 @@
#: ../src/mainfrm.cc:1494
#: n:495
msgid "Geodata files"
-msgstr ""
+msgstr "Pliki geodanych"
#. TRANSLATORS: Aven shows a circle of terrain covering the area
#. of the survey plus a bit, but the terrain data file didn't
@@ -1782,7 +1814,7 @@
#: ../src/gfxcore.cc:3175
#: n:161
msgid "No terrain data near area of survey"
-msgstr ""
+msgstr "Brak danych terenu blisko obszaru pomiarowego"
#. TRANSLATORS: Here "survey" is a "cave map" rather than list of questions
#. - it should be translated to the terminology that cavers using the
@@ -1853,7 +1885,7 @@
#: ../src/mainfrm.cc:1423
#: n:504
msgid "Walls project files"
-msgstr ""
+msgstr "Pliki projektu Walls"
#. TRANSLATORS: "Walls" is David McKenzie's cave
#. surveying package, so should not be translated
@@ -1924,13 +1956,13 @@
#: ../src/printing.cc:376
#: n:523
msgid "Shapefiles (lines)"
-msgstr ""
+msgstr "Shapefiles (linie)"
#: ../src/export.cc:108
#: ../src/printing.cc:377
#: n:524
msgid "Shapefiles (points)"
-msgstr ""
+msgstr "Shapefiles (punkty)"
#. TRANSLATORS: Log files from running cavern (extension .log)
#: ../src/cavernlog.cc:652
@@ -1999,7 +2031,6 @@
#. Part of cavern --help
#: ../src/cavern.c:227
#: n:507
-#, fuzzy
msgid "[SURVEY_DATA_FILE]"
msgstr "[PLIK_POMIAROWY]"
@@ -2055,6 +2086,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Wartość “%s” musi poprzedzać NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2103,53 +2146,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Odwróć kierunki"
+msgid "&Reverse Direction\tR"
+msgstr "&Odwróć kierunki\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Na &północ"
+msgid "View &North\tN"
+msgstr "Na &północ\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Na &wschód"
+msgid "View &East\tE"
+msgstr "Na &wschód\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Na połu&dnie"
+msgid "View &South\tS"
+msgstr "Na połu&dnie\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Na &zachód"
+msgid "View &West\tW"
+msgstr "Na &zachód\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "Widok p&lanu"
+msgid "&Plan View\tP"
+msgstr "Widok p&lanu\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Prze&krój"
+msgid "E&levation\tL"
+msgstr "Prze&krój\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Przywróć do&myślny widok"
+msgid "Restore De&fault View\tDelete"
+msgstr "Przywróć do&myślny widok\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2194,8 +2237,11 @@
msgid "Bearing"
msgstr "Azymut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2203,13 +2249,25 @@
#: ../src/pos.cc:90
#: n:100
msgid "Station Name"
-msgstr ""
+msgstr "Nazwa stacji"
#: ../src/printing.cc:496
#: n:260
msgid "Station Names"
msgstr "Nazwy punktów"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr "Anonimowe stacje"
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr "anonimowe stacje"
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2306,8 +2364,11 @@
msgid "Tilt angle"
msgstr "Kąt pochyłu"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2520,8 +2581,10 @@
msgid "Colour by &Survey"
msgstr "Koloruj po &Sesji"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2736,7 +2799,7 @@
#: ../src/mainfrm.cc:1033
#: n:333
msgid "Find stations"
-msgstr ""
+msgstr "Znajdź stacje"
#. TRANSLATORS: Find station tooltip when stations are found. %d is
#. replaced by the number of matching stations and %s%s%s by the
@@ -2745,16 +2808,18 @@
#: n:334
#, c-format
msgid "%d stations match %s%s%s"
-msgstr ""
+msgstr "%d stacji pasujących do wzorca %s%s%s"
#. TRANSLATORS: Tooltip for aven's station search control.
#: ../src/mainfrm.cc:1037
#: ../src/mainfrm.cc:2365
#: n:533
msgid "Station name search (substring or wildcard)"
-msgstr ""
+msgstr "Wyszukiwanie nazwy stacji (podciąg lub symbol wieloznaczny)"
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -2787,9 +2852,9 @@
#: ../src/mainfrm.cc:1751
#: ../src/mainfrm.cc:1856
#: n:338
-#, fuzzy, c-format
+#, c-format
msgid "%.2f E, %.2f N"
-msgstr "%.2f W, %.2f P"
+msgstr "%.2f Wsch., %.2f Płn."
#. TRANSLATORS: Used in Aven:
#. From : H 12.24m, Brg 234.5°
@@ -2813,9 +2878,9 @@
#. measured by the clino)
#: ../src/mainfrm.cc:1931
#: n:341
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s, Dist %.2f%s, Brg %03.1f%s, Grd %s"
-msgstr "%s: %s, Odlg %.2f%s, Az %03.1f%s, Upadzie %s"
+msgstr "%s: %s, Odl. %.2f%s, Az. %03.1f%s, Upad. %s"
#. TRANSLATORS: tickable menu item in View menu.
#.
@@ -3057,6 +3122,10 @@
msgid "Hide others"
msgstr "Ukryj inne"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3093,10 +3162,12 @@
msgid "Open &Terrain..."
msgstr "Otwórz &Teren..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
-msgstr ""
+msgstr "Nałóż dane &geograficzne..."
#: ../src/mainfrm.cc:758
#: n:144
@@ -3230,7 +3301,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Nie można dokonać pomiaru pomiędzy dwoma anonimowymi punktami"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3241,7 +3315,10 @@
msgid "splay legs"
msgstr "domiary boczne"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
#, fuzzy
msgid "&Duplicate Legs"
@@ -3491,14 +3568,25 @@
msgid "Originally entered here"
msgstr "Pierwotnie wprowadzono tutaj"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
msgid "Corresponding %s was here"
-msgstr ""
+msgstr "Odpowiadający %s był tutaj"
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
@@ -3525,12 +3613,12 @@
#: ../src/dump3d.c:52
#: n:509
msgid "equivalent to --show-dates=-"
-msgstr ""
+msgstr "równoważne z --show-dates=-"
#: ../src/dump3d.c:53
#: n:486
msgid "convert MOVE and LINE into LEG"
-msgstr ""
+msgstr "przekonwertuj MOVE i LINE do LEG"
#: ../src/gpx.cc:86
#: ../src/kml.cc:85
@@ -3552,7 +3640,7 @@
#: n:492
#, c-format
msgid "File “%s” not georeferenced"
-msgstr ""
+msgstr "Plik “%s” bez georeferencji"
#: ../src/survexport.cc:158
#: n:148
@@ -3627,12 +3715,12 @@
#: ../src/survexport.cc:173
#: n:525
msgid "produce Shapefile (lines) output"
-msgstr ""
+msgstr "wyjście w formacie Shapefile (linie)"
#: ../src/survexport.cc:174
#: n:526
msgid "produce Shapefile (points) output"
-msgstr ""
+msgstr "wyjście w formacie Shapefile (punkty)"
#: ../src/survexport.cc:175
#: n:160
@@ -3642,23 +3730,23 @@
#: ../src/survexport.cc:411
#: n:252
msgid "Export format not specified and not known from output file extension"
-msgstr ""
+msgstr "Nie określony format eksportu i nie jest znany z rozszerzenia pliku wyjściowego"
#: ../src/survexport.cc:416
#: n:253
msgid "Export format not specified"
-msgstr ""
+msgstr "Nie określony format eksportu"
#: ../src/survexport.cc:157
#: n:155
msgid "include items exported by default"
-msgstr ""
+msgstr "dołącz domyślne elementy eksportu"
#: ../src/datain.c:2515
#: n:499
#, c-format
msgid "Macro “%s” not defined"
-msgstr ""
+msgstr "Nie zdefiniowane Makro “%s”"
#: ../src/datain.c:2244
#: ../src/datain.c:2276
@@ -3667,7 +3755,7 @@
#: n:506
#, c-format
msgid "Ignoring “%s”"
-msgstr ""
+msgstr "ignoruje “%s”"
#. TRANSLATORS: Warning issued about a dubious case in survey data in
#. Walls format (.srv). Real world example:
@@ -3682,30 +3770,30 @@
#: ../src/datain.c:4453
#: n:508
msgid "Parsing as “to” station but may be isolated LRUD with missing closing delimiter"
-msgstr ""
+msgstr "Odczytuję jako stacja docelowa ale możę być to pomiar LRUD z możliwym błędem symbolu zakończenia"
#: ../src/gdalexport.cc:47
#: ../src/gdalexport.cc:53
#: n:527
#, c-format
msgid "Failed to initialise GDAL “%s” driver"
-msgstr ""
+msgstr "Niepowodzenie w inicjalizacji sterownika GDAL “%s”"
#: ../src/gdalexport.cc:142
#: n:528
msgid "Failed to create GDAL layer"
-msgstr ""
+msgstr "Niepowodzenie w stworzeniu warstwy GDAL"
#: ../src/gdalexport.cc:152
#: n:529
msgid "Failed to create GDAL field"
-msgstr ""
+msgstr "Niepowodzenie w stworzeniu pola GDAL"
#: ../src/gdalexport.cc:189
#: ../src/gdalexport.cc:207
#: n:530
msgid "Failed to create GDAL feature"
-msgstr ""
+msgstr "Niepowodzenie w stworzeniu właściwości GDAL"
#, c-format
#~ msgid "Error in format of font file “%s”"
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/pt.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pt.msg differ
diff -Nru survex-1.4.17/lib/pt.po survex-1.4.22/lib/pt.po
--- survex-1.4.17/lib/pt.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/pt.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Final da linha não está em branco"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Escala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "“%s”, “%s”, “%s” ou “%s” eram esperados"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1684,7 +1711,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1717,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2060,6 +2092,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Valor “%s” deve estar antes do NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2108,53 +2152,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Inverter Sentido"
+msgid "&Reverse Direction\tR"
+msgstr "&Inverter Sentido\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Olhar para &Norte"
+msgid "View &North\tN"
+msgstr "Olhar para &Norte\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Olhar para &Leste"
+msgid "View &East\tE"
+msgstr "Olhar para L&este\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Olhar para &Sul"
+msgid "View &South\tS"
+msgstr "Olhar para &Sul\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Olhar para &Oeste"
+msgid "View &West\tW"
+msgstr "Olhar para &Oeste\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Planta"
+msgid "&Plan View\tP"
+msgstr "&Planta\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Per&fil"
+msgid "E&levation\tL"
+msgstr "Perfi&l\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Restaurar Vista Predefinida"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Restaurar Vista Predefinida\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2199,8 +2243,11 @@
msgid "Bearing"
msgstr "Azimute"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2215,6 +2262,18 @@
msgid "Station Names"
msgstr "Nomes de base"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
#, fuzzy
@@ -2313,8 +2372,11 @@
msgid "Tilt angle"
msgstr "Grau de inclinação"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2531,8 +2593,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2765,7 +2829,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3071,6 +3137,10 @@
msgid "Hide others"
msgstr "Ocultar outros"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3107,6 +3177,8 @@
msgid "Open &Terrain..."
msgstr "Abrir &Terreno..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3244,7 +3316,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3255,7 +3330,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3506,6 +3584,17 @@
msgid "Originally entered here"
msgstr "Prefixo usado originalmente aqui"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3513,7 +3602,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/pt_BR.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/pt_BR.msg differ
diff -Nru survex-1.4.17/lib/pt_BR.po survex-1.4.22/lib/pt_BR.po
--- survex-1.4.17/lib/pt_BR.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/pt_BR.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Final da linha não está em branco"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Escala"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "“%s”, “%s”, “%s” ou “%s” eram esperados"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1684,7 +1711,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1717,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2060,6 +2092,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Valor “%s” deve estar antes do NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2108,53 +2152,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Inverter Sentido"
+msgid "&Reverse Direction\tR"
+msgstr "&Inverter Sentido\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Olhar para &Norte"
+msgid "View &North\tN"
+msgstr "Olhar para &Norte\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Olhar para &Leste"
+msgid "View &East\tE"
+msgstr "Olhar para L&este\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Olhar para &Sul"
+msgid "View &South\tS"
+msgstr "Olhar para &Sul\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Olhar para &Oeste"
+msgid "View &West\tW"
+msgstr "Olhar para &Oeste\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Planta"
+msgid "&Plan View\tP"
+msgstr "&Planta\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Per&fil"
+msgid "E&levation\tL"
+msgstr "Perfi&l\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Restaurar Vista Predefinida"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Restaurar Vista Predefinida\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2199,8 +2243,11 @@
msgid "Bearing"
msgstr "Azimute"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2215,6 +2262,18 @@
msgid "Station Names"
msgstr "Nomes de base"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
#, fuzzy
@@ -2313,8 +2372,11 @@
msgid "Tilt angle"
msgstr "Ângulo de inclinação"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2533,8 +2595,10 @@
msgid "Colour by &Survey"
msgstr "Colorir de acordo com &Topografia"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2767,7 +2831,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3074,6 +3140,10 @@
msgid "Hide others"
msgstr "Esconder outros"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3110,6 +3180,8 @@
msgid "Open &Terrain..."
msgstr "Abrir &Terreno..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3247,7 +3319,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3258,7 +3333,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3509,6 +3587,17 @@
msgid "Originally entered here"
msgstr "Prefixo usado originalmente aqui"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3516,7 +3605,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/ro.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ro.msg differ
diff -Nru survex-1.4.17/lib/ro.po survex-1.4.22/lib/ro.po
--- survex-1.4.17/lib/ro.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/ro.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Sfarsitul liniei nu este gol"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Scara"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Astept “%s”, “%s”, “%s” sau “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1743,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2058,6 +2090,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Lectura “%s” trebuie sa preceada NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2106,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Schimba directia"
+msgid "&Reverse Direction\tR"
+msgstr "&Schimba directia\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Vizualizare spre &Nord"
+msgid "View &North\tN"
+msgstr "Vizualizare spre &Nord\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Vizualizare spre &Est"
+msgid "View &East\tE"
+msgstr "Vizualizare spre &Est\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Vizualizare spre &Sud"
+msgid "View &South\tS"
+msgstr "Vizualizare spre &Sud\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Vizualizare spre &Vest"
+msgid "View &West\tW"
+msgstr "Vizualizare spre &Vest\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Plan"
+msgid "&Plan View\tP"
+msgstr "&Plan\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "Profi&l"
+msgid "E&levation\tL"
+msgstr "Profi&l\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Restabiliti setarile initiale"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Restabiliti setarile initiale\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2197,8 +2241,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2213,6 +2260,18 @@
msgid "Station Names"
msgstr "Numele punctelor de statie"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
#, fuzzy
@@ -2311,8 +2370,11 @@
msgid "Tilt angle"
msgstr "Unghi de inclinatie"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2529,8 +2591,10 @@
msgid "Colour by &Survey"
msgstr "Culori in functie de &Topografia"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2763,7 +2827,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3069,6 +3135,10 @@
msgid "Hide others"
msgstr "Ascunde restul"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3105,6 +3175,8 @@
msgid "Open &Terrain..."
msgstr "Deschidere &Model Teren..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3242,7 +3314,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
#, fuzzy
@@ -3254,7 +3329,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3504,6 +3582,17 @@
msgid "Originally entered here"
msgstr "Introdus aici in original"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3511,7 +3600,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/ru.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/ru.msg differ
diff -Nru survex-1.4.17/lib/ru.po survex-1.4.22/lib/ru.po
--- survex-1.4.17/lib/ru.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/ru.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Конец строки не пуст"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr "Отсутствует пробел после лексемы"
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr "Неизвестная роль “%s”"
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr "Неизвестный тип инструмента “%s”"
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -718,7 +740,7 @@
#: ../src/commands.c:2360
#: n:534
msgid "Invalid year"
-msgstr ""
+msgstr "Неверно указан год"
#. TRANSLATORS: Suspicious means something like 410 degrees or -20
#. degrees
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "Масштаб"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr "масштаб (50, 0.02, 1:50 и 2:100 - все это равно 1:50)"
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Ожидается “%s”, “%s”, “%s” или “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,8 +1707,9 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
-msgstr "отображать только краткие итоги (-qq для отображения только ошибок)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
+msgstr "выводить меньше сообщений (-qq еще меньше)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
#: ../src/cavern.c:119
@@ -1713,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr "файл .espec для управления разверткой"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr "отображать разрывы нитки на разрезе развертке с помощью линий поверхностной съемки"
@@ -2055,6 +2088,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Значение “%s” должно быть перед NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2103,53 +2148,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Поменять направление вращения"
+msgid "&Reverse Direction\tR"
+msgstr "&Поменять направление вращения\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "На &Север"
+msgid "View &North\tN"
+msgstr "На &Север\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "На &Восток"
+msgid "View &East\tE"
+msgstr "На &Восток\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "На &Юг"
+msgid "View &South\tS"
+msgstr "На &Юг\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "На &Запад"
+msgid "View &West\tW"
+msgstr "На &Запад\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&План"
+msgid "&Plan View\tP"
+msgstr "&План\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "&Разрез"
+msgid "E&levation\tL"
+msgstr "&Разрез\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "Восстановить об&зор по умолчанию"
+msgid "Restore De&fault View\tDelete"
+msgstr "Восстановить об&зор по умолчанию\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2194,8 +2239,11 @@
msgid "Bearing"
msgstr "Азимут"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr "азимут (90, 90d, 100g - все это равно 90°)"
@@ -2210,6 +2258,18 @@
msgid "Station Names"
msgstr "Названия пикетов"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2306,8 +2366,11 @@
msgid "Tilt angle"
msgstr "Угол наклона"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr "угол наклона (45, 45d, 50g, 100% - все это равно 45°)"
@@ -2520,8 +2583,10 @@
msgid "Colour by &Survey"
msgstr "Раскраска по &топо-съемке"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr "Раскраска по &стилю"
@@ -2736,7 +2801,7 @@
#: ../src/mainfrm.cc:1033
#: n:333
msgid "Find stations"
-msgstr ""
+msgstr "Поиск пикетов"
#. TRANSLATORS: Find station tooltip when stations are found. %d is
#. replaced by the number of matching stations and %s%s%s by the
@@ -2745,19 +2810,21 @@
#: n:334
#, c-format
msgid "%d stations match %s%s%s"
-msgstr ""
+msgstr "%d пикетов найдено по %s%s%s"
#. TRANSLATORS: Tooltip for aven's station search control.
#: ../src/mainfrm.cc:1037
#: ../src/mainfrm.cc:2365
#: n:533
msgid "Station name search (substring or wildcard)"
-msgstr ""
+msgstr "Поиск по названию пикета (подстрока или wildcard-шаблон)"
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
-msgstr ""
+msgstr "Коэффициент вертикального преувеличения"
#: ../src/mainfrm.cc:243
#: ../src/mainfrm.cc:1729
@@ -3057,6 +3124,10 @@
msgid "Hide others"
msgstr "Скрыть остальные"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3093,6 +3164,8 @@
msgid "Open &Terrain..."
msgstr "Открыть &Рельеф..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3230,7 +3303,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr "Отсутствует замер между двумя анонимными пикетами"
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3241,7 +3317,10 @@
msgid "splay legs"
msgstr "вспомогательные замеры"
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr "&Дублирующиеся Замеры"
@@ -3490,6 +3569,17 @@
msgid "Originally entered here"
msgstr "Первоначально встречено здесь"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3497,7 +3587,7 @@
msgstr "Соответствующее вхождение %s встречено здесь"
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/sk.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/sk.msg differ
diff -Nru survex-1.4.17/lib/sk.po survex-1.4.22/lib/sk.po
--- survex-1.4.17/lib/sk.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/sk.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "Koniec riadku obsahuje nepatričný znak"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1331,8 +1353,10 @@
msgid "Scale"
msgstr "Merítko"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1574,10 +1598,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "Predpokladá sa “%s”, “%s”, “%s”, alebo “%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1683,7 +1710,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "zobraz iba krátku správu (-qq iba pre chyby)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1716,8 +1744,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2057,6 +2090,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "Údaj “%s” musí predchádzať NEWLINE"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2105,53 +2150,53 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "&Otočiť rotáciu"
+msgid "&Reverse Direction\tR"
+msgstr "&Otočiť rotáciu\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
-msgstr "Pohľad na &sever"
+msgid "View &North\tN"
+msgstr "Pohľad na &sever\tN"
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
-msgstr "Pohľad na &východ"
+msgid "View &East\tE"
+msgstr "Pohľad na &východ\tE"
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
-msgstr "Pohľad na &juh"
+msgid "View &South\tS"
+msgstr "Pohľad na &juh\tS"
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
-msgstr "Pohľad na &západ"
+msgid "View &West\tW"
+msgstr "Pohľad na &západ\tW"
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
-msgstr "&Pôdorys"
+msgid "&Plan View\tP"
+msgstr "&Pôdorys\tP"
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
-msgstr "R&ez"
+msgid "E&levation\tL"
+msgstr "R&ez\tL"
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
-msgstr "&Obnovenie východzieho pohľadu"
+msgid "Restore De&fault View\tDelete"
+msgstr "&Obnovenie východzieho pohľadu\tDelete"
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
#. and "Tilt angle" fields, and the "Plan view" and "Elevation" buttons in
@@ -2196,8 +2241,11 @@
msgid "Bearing"
msgstr "Azimut"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2212,6 +2260,18 @@
msgid "Station Names"
msgstr "Mená bodov"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2308,8 +2368,11 @@
msgid "Tilt angle"
msgstr "Náklon"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2529,8 +2592,10 @@
msgid "Colour by &Survey"
msgstr "Farba podľa &merania"
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2763,7 +2828,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3067,6 +3134,10 @@
msgid "Hide others"
msgstr "Skryť ostatné"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3103,6 +3174,8 @@
msgid "Open &Terrain..."
msgstr "Otvoriť &digitálny model terénu..."
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3240,7 +3313,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
#, fuzzy
@@ -3252,7 +3328,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3502,6 +3581,17 @@
msgid "Originally entered here"
msgstr "Pôvodne vložené sem"
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3509,7 +3599,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
diff -Nru survex-1.4.17/lib/survex.lang survex-1.4.22/lib/survex.lang
--- survex-1.4.17/lib/survex.lang 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/lib/survex.lang 2026-06-23 20:53:55.000000000 +0000
@@ -84,6 +84,8 @@
right|
up|
down|
+ noteall|
+ note|
ignoreall|
ignore|
length|
diff -Nru survex-1.4.17/lib/survex.pot survex-1.4.22/lib/survex.pot
--- survex-1.4.17/lib/survex.pot 2025-03-19 20:19:29.000000000 +0000
+++ survex-1.4.22/lib/survex.pot 2026-06-23 05:39:58.000000000 +0000
@@ -235,7 +235,16 @@
msgid "End of line not blank"
msgstr ""
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -403,7 +412,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1332,8 +1354,10 @@
msgid "Scale"
msgstr ""
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr ""
@@ -1575,10 +1599,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr ""
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1682,7 +1709,7 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+msgid "fewer messages (-qq for even fewer)"
msgstr ""
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1715,8 +1742,13 @@
msgid ".espec file to control extending"
msgstr ""
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr ""
@@ -2056,6 +2088,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr ""
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2104,52 +2148,52 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
+msgid "&Reverse Direction\tR"
msgstr ""
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
+msgid "View &North\tN"
msgstr ""
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
+msgid "View &East\tE"
msgstr ""
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
+msgid "View &South\tS"
msgstr ""
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
+msgid "View &West\tW"
msgstr ""
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
+msgid "&Plan View\tP"
msgstr ""
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
+msgid "E&levation\tL"
msgstr ""
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
+msgid "Restore De&fault View\tDelete"
msgstr ""
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
@@ -2195,8 +2239,11 @@
msgid "Bearing"
msgstr ""
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr ""
@@ -2211,6 +2258,18 @@
msgid "Station Names"
msgstr ""
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2307,8 +2366,11 @@
msgid "Tilt angle"
msgstr ""
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr ""
@@ -2521,8 +2583,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2755,7 +2819,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3058,6 +3124,10 @@
msgid "Hide others"
msgstr ""
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3094,6 +3164,8 @@
msgid "Open &Terrain..."
msgstr ""
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3231,7 +3303,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3242,7 +3317,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3491,6 +3569,17 @@
msgid "Originally entered here"
msgstr ""
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3498,7 +3587,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/unifont.pixelfont and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/unifont.pixelfont differ
Binary files /srv/release.debian.org/tmp/IM0IZ2c6HB/survex-1.4.17/lib/zh_CN.msg and /srv/release.debian.org/tmp/DBxB_6QkXJ/survex-1.4.22/lib/zh_CN.msg differ
diff -Nru survex-1.4.17/lib/zh_CN.po survex-1.4.22/lib/zh_CN.po
--- survex-1.4.17/lib/zh_CN.po 2025-03-19 20:21:00.000000000 +0000
+++ survex-1.4.22/lib/zh_CN.po 2026-06-23 05:39:58.000000000 +0000
@@ -233,7 +233,16 @@
msgid "End of line not blank"
msgstr "行尾不为空"
-#: ../src/commands.c:369
+#. TRANSLATORS: Warning if there's no "blank" character (space, tab
+#. and comma by default) after a token, e.g. it would be issued
+#. after the token "fix" here:
+#.
+#. *fix1 0 0 0
+#.
+#. This is a warning rather than an error because it was quietly
+#. accepted for a long time. That wasn't intentional, but we don't
+#. want to suddenly break processing existing datasets.
+#: ../src/commands.c:403
#: n:74
msgid "No blank after token"
msgstr ""
@@ -401,7 +410,20 @@
msgid "Unknown team role “%s”"
msgstr ""
-#: ../src/commands.c:553
+#: ../src/commands.c:2195
+#: n:536
+#, c-format
+msgid "Unknown instrument type “%s”"
+msgstr ""
+
+#. TRANSLATORS: Survex has long misdefined "mils" as an alias for
+#. "grads", of which there are 400 in a circle. There are several
+#. definitions of "mils" with a circle containing 2000π SI milliradians,
+#. 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+#. they aren't in common use by cave surveyors, so we now just warn if
+#. mils are used. Here “grads” should not be translated as it shows
+#. what cavern is assuming should be written in the .svx file instead.
+#: ../src/commands.c:580
#: n:479
#, c-format
msgid "Units “%s” are deprecated, assuming “grads” - see manual for details"
@@ -1330,8 +1352,10 @@
msgid "Scale"
msgstr "比例尺"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:134
+#. TRANSLATORS: Used in survexport --help output. The --scale option
+#. accepts any of these ways of specifying the scale. These example
+#. input values should not be translated.
+#: ../src/survexport.cc:139
#: n:217
msgid "scale (50, 0.02, 1:50 and 2:100 all mean 1:50)"
msgstr "比例(50、 0.02、1:50 和 2:100 均为 1:50)"
@@ -1573,10 +1597,13 @@
msgid "Expecting “%s”, “%s”, “%s”, or “%s”"
msgstr "应为“%s”、“%s”、“%s”或“%s”"
-#: ../src/readval.c:692
-#: ../src/readval.c:700
-#: ../src/readval.c:708
-#: ../src/readval.c:716
+#. TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+#. They're enabled by `*units bearing quadrants` and supported in
+#. Walls format data.
+#: ../src/readval.c:712
+#: ../src/readval.c:720
+#: ../src/readval.c:728
+#: ../src/readval.c:736
#: n:483
#, c-format
msgid "Expecting quadrant bearing, found “%s”"
@@ -1680,7 +1707,8 @@
#. TRANSLATORS: --help output for cavern --quiet option
#: ../src/cavern.c:117
#: n:163
-msgid "only show brief summary (-qq for errors only)"
+#, fuzzy
+msgid "fewer messages (-qq for even fewer)"
msgstr "仅显示简要摘要(-qq仅用于错误)"
#. TRANSLATORS: --help output for cavern --no-auxiliary-files option
@@ -1713,8 +1741,13 @@
msgid ".espec file to control extending"
msgstr "用.espec文件来控制扩展"
-#. TRANSLATORS: --help output for extend --show-breaks option
-#: ../src/extend.c:490
+#. TRANSLATORS: --help output for extend --show-breaks option. When
+#. generating an extended elevation, the survey gets broken (disconnected)
+#. when there's a loop, and the station we break at appears twice in the
+#. output. This option adds a leg between copies of a station, flagged as
+#. "surface" (so they can be toggled on off, and appear as dotted lines in
+#. aven).
+#: ../src/extend.c:496
#: n:91
msgid "show breaks with surface survey legs in output"
msgstr "使用输出中的地面测量段显示中断"
@@ -2054,6 +2087,18 @@
msgid "Reading “%s” must occur before NEWLINE"
msgstr "必须在NEWLINE前读取“%s”"
+#. TRANSLATORS: The first %s is replaced by the problematic reading.
+#. The second %s is replaced a reading which consumes the rest of the
+#. current line. An example bad command and the resulting error:
+#.
+#. *data nosurvey ignoreall station
+#. x.svx:1: Reading “station” not allowed after reading “ignoreall”
+#: ../src/commands.c:1679
+#: n:540
+#, c-format
+msgid "Reading “%s” not allowed after reading “%s”"
+msgstr ""
+
#. TRANSLATORS: e.g.
#.
#. *data normal from to tape newline compass clino
@@ -2102,52 +2147,52 @@
#: ../src/mainfrm.cc:793
#: n:234
-msgid "&Reverse Direction"
-msgstr "反向(&R)"
+msgid "&Reverse Direction\tR"
+msgstr "反向(&R)\tR"
#. TRANSLATORS: View *looking* North
#: ../src/gfxcore.cc:4393
#: ../src/mainfrm.cc:796
#: n:240
-msgid "View &North"
+msgid "View &North\tN"
msgstr ""
#. TRANSLATORS: View *looking* East
#: ../src/gfxcore.cc:4395
#: ../src/mainfrm.cc:797
#: n:241
-msgid "View &East"
+msgid "View &East\tE"
msgstr ""
#. TRANSLATORS: View *looking* South
#: ../src/gfxcore.cc:4397
#: ../src/mainfrm.cc:798
#: n:242
-msgid "View &South"
+msgid "View &South\tS"
msgstr ""
#. TRANSLATORS: View *looking* West
#: ../src/gfxcore.cc:4399
#: ../src/mainfrm.cc:799
#: n:243
-msgid "View &West"
+msgid "View &West\tW"
msgstr ""
#: ../src/gfxcore.cc:4419
#: ../src/mainfrm.cc:801
#: n:248
-msgid "&Plan View"
+msgid "&Plan View\tP"
msgstr ""
#: ../src/gfxcore.cc:4420
#: ../src/mainfrm.cc:802
#: n:249
-msgid "Ele&vation"
+msgid "E&levation\tL"
msgstr ""
#: ../src/mainfrm.cc:804
#: n:254
-msgid "Restore De&fault View"
+msgid "Restore De&fault View\tDelete"
msgstr ""
#. TRANSLATORS: Used as a label for the surrounding box for the "Bearing"
@@ -2193,8 +2238,11 @@
msgid "Bearing"
msgstr "方位"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:136
+#. TRANSLATORS: Used in survexport --help output. The --bearing option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a vertical axis. These example input values should not
+#. be translated.
+#: ../src/survexport.cc:145
#: n:460
msgid "bearing (90, 90d, 100g all mean 90°)"
msgstr "方位 (90, 90d, 100g 均为 90°)"
@@ -2209,6 +2257,18 @@
msgid "Station Names"
msgstr "站名"
+#. TRANSLATORS: Label for a checkbox in the print/export dialog.
+#: ../src/printing.cc:500
+#: n:537
+msgid "Anonymous stations"
+msgstr ""
+
+#. TRANSLATORS: Option description in `survexport --help` output.
+#: ../src/survexport.cc:149
+#: n:538
+msgid "anonymous stations"
+msgstr ""
+
#: ../src/survexport.cc:147
#: n:475
msgid "station labels"
@@ -2305,8 +2365,11 @@
msgid "Tilt angle"
msgstr "倾角"
-#. TRANSLATORS: These example input values should not be translated.
-#: ../src/survexport.cc:138
+#. TRANSLATORS: Used in survexport --help output. The --tilt option
+#. accepts any of these ways of specifying how much to rotate the
+#. survey about a horizontol axis. These example input values should
+#. not be translated.
+#: ../src/survexport.cc:151
#: n:461
msgid "tilt (45, 45d, 50g, 100% all mean 45°)"
msgstr "倾斜角(45, 45d, 50g, 100% 均等同于 45°)"
@@ -2519,8 +2582,10 @@
msgid "Colour by &Survey"
msgstr ""
-#: ../src/gfxcore.cc:4471
-#: ../src/mainfrm.cc:871
+#. TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+#. the survey style ("normal", diving, "nosurvey", etc).
+#: ../src/gfxcore.cc:4474
+#: ../src/mainfrm.cc:883
#: n:482
msgid "Colour by St&yle"
msgstr ""
@@ -2753,7 +2818,9 @@
msgid "Station name search (substring or wildcard)"
msgstr ""
-#: ../src/mainfrm.cc:1050
+#. TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+#. in aven are scaled by this factor.
+#: ../src/mainfrm.cc:1064
#: n:535
msgid "Z exaggeration factor"
msgstr ""
@@ -3056,6 +3123,10 @@
msgid "Hide others"
msgstr "隐藏其他"
+#. TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+#. on a survey in the tree and select this and all the other surveys
+#. at the same level will be hidden, leaving only the chosen survey
+#. showing.
#: ../src/aventreectrl.cc:389
#: n:388
msgid "Hide si&blings"
@@ -3092,6 +3163,8 @@
msgid "Open &Terrain..."
msgstr "打开地形...(&T)"
+#. TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+#. shapefile, etc over the survey in Aven.
#: ../src/mainfrm.cc:757
#: n:494
msgid "Overlay &Geodata..."
@@ -3230,7 +3303,10 @@
msgid "Can't have a leg between two anonymous stations"
msgstr ""
-#: ../src/mainfrm.cc:850
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "splay" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:866
#: ../src/printing.cc:488
#: n:406
msgid "Spla&y Legs"
@@ -3241,7 +3317,10 @@
msgid "splay legs"
msgstr ""
-#: ../src/mainfrm.cc:857
+#. TRANSLATORS: A sub-menu in aven which allows selecting how to display
+#. survey legs with the "duplicate" flag set (options in the sub-menu
+#. are "Hide"/"Dashed"/"Fade"/"Show").
+#: ../src/mainfrm.cc:877
#: n:251
msgid "&Duplicate Legs"
msgstr ""
@@ -3490,6 +3569,17 @@
msgid "Originally entered here"
msgstr ""
+#. TRANSLATORS: Used when a BEGIN command has a survey name, but the
+#. END command omits it, e.g.:
+#.
+#. *begin entrance
+#. 1 2 10.00 178 -01
+#. *end
+#.
+#. gives:
+#.
+#. eg.svx:3: warning: Survey name omitted from END
+#. eg.svx:1: info: Corresponding BEGIN was here
#: ../src/commands.c:1123
#: n:22
#, c-format
@@ -3497,7 +3587,7 @@
msgstr ""
#. TRANSLATORS: Use of the ROOT character (which is "\" by default) is
-#. deprecated, so this error would be generated by:
+#. deprecated, so this warning would be generated by:
#.
#. *equate \foo.7 1
#.
diff -Nru survex-1.4.17/missing survex-1.4.22/missing
--- survex-1.4.17/missing 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/missing 2026-06-23 21:22:45.000000000 +0000
@@ -1,11 +1,11 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU and other programs.
-scriptversion=2024-06-07.14; # UTC
+scriptversion=2025-06-18.21; # UTC
# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells
-# Copyright (C) 1996-2024 Free Software Foundation, Inc.
+# Copyright (C) 1996-2025 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
@@ -228,9 +228,9 @@
exit $st
# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru survex-1.4.17/src/Makefile.am survex-1.4.22/src/Makefile.am
--- survex-1.4.17/src/Makefile.am 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/Makefile.am 2026-05-25 04:52:21.000000000 +0000
@@ -11,9 +11,9 @@
out.h readval.h str.h useful.h validate.h gdalexport.h\
glbitmapfont.h gllogerror.h guicontrol.h gla.h gpx.h moviemaker.h\
export3d.h exportfilter.h hpgl.h cavernlog.h aboutdlg.h aven.h avenpal.h\
- gfxcore.h json.h log.h mainfrm.h pos.h vector3.h wx.h\
+ gfxcore.h json.h log.h mainfrm.h pos.h vector3.h\
aventreectrl.h export.h model.h printing.h avenprcore.h img2aven.h\
- thgeomag.h thgeomagdata.h moviemaker-legacy.cc
+ thgeomag.h thgeomagdata.h
LDADD = $(LIBOBJS)
@@ -63,7 +63,10 @@
bin_PROGRAMS += wrapaven wrapsurvexport
wrapaven_SOURCES = wrapaven.c
-wrapaven_LDFLAGS = -mwindows -municode
+# Link in the resources so wrapper gets aven's icon.
+wrapaven_LDADD = avenrc.o
+# -mwindows: no console window flashes when the wrapper launches.
+wrapaven_LDFLAGS = -mwindows
wrapsurvexport_SOURCES = wrapsurvexport.c
endif
@@ -72,7 +75,11 @@
aven_CFLAGS = $(AM_CFLAGS) $(WX_CFLAGS) -DAVEN
aven_CXXFLAGS = $(AM_CXXFLAGS) $(GDAL_CFLAGS) $(PROJ_CFLAGS) $(FFMPEG_CFLAGS) $(WX_CXXFLAGS)
+if WIN32
+aven_LDFLAGS = -mwindows
+else
aven_LDFLAGS =
+endif
survexport_CXXFLAGS = $(AM_CXXFLAGS) $(GDAL_CFLAGS) $(PROJ_CFLAGS) $(WX_CXXFLAGS)
survexport_LDFLAGS =
diff -Nru survex-1.4.17/src/Makefile.in survex-1.4.22/src/Makefile.in
--- survex-1.4.17/src/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/src/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -185,8 +185,7 @@
am__wrapaven_SOURCES_DIST = wrapaven.c
@WIN32_TRUE@am_wrapaven_OBJECTS = wrapaven.$(OBJEXT)
wrapaven_OBJECTS = $(am_wrapaven_OBJECTS)
-wrapaven_LDADD = $(LDADD)
-wrapaven_DEPENDENCIES = $(LIBOBJS)
+@WIN32_TRUE@wrapaven_DEPENDENCIES = avenrc.o
wrapaven_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(wrapaven_LDFLAGS) \
$(LDFLAGS) -o $@
am__wrapsurvexport_SOURCES_DIST = wrapsurvexport.c
@@ -456,9 +455,9 @@
out.h readval.h str.h useful.h validate.h gdalexport.h\
glbitmapfont.h gllogerror.h guicontrol.h gla.h gpx.h moviemaker.h\
export3d.h exportfilter.h hpgl.h cavernlog.h aboutdlg.h aven.h avenpal.h\
- gfxcore.h json.h log.h mainfrm.h pos.h vector3.h wx.h\
+ gfxcore.h json.h log.h mainfrm.h pos.h vector3.h\
aventreectrl.h export.h model.h printing.h avenprcore.h img2aven.h\
- thgeomag.h thgeomagdata.h moviemaker-legacy.cc
+ thgeomag.h thgeomagdata.h
LDADD = $(LIBOBJS)
COMMONSRC = cmdline.c message.c str.c filename.c z_getopt.c getopt1.c
@@ -485,11 +484,15 @@
aven_LDADD = $(LIBOBJS) $(WX_LIBS) $(GDAL_LIBS) $(PROJ_LIBS) \
$(FFMPEG_LIBS) $(am__append_1)
@WIN32_TRUE@wrapaven_SOURCES = wrapaven.c
-@WIN32_TRUE@wrapaven_LDFLAGS = -mwindows -municode
+# Link in the resources so wrapper gets aven's icon.
+@WIN32_TRUE@wrapaven_LDADD = avenrc.o
+# -mwindows: no console window flashes when the wrapper launches.
+@WIN32_TRUE@wrapaven_LDFLAGS = -mwindows
@WIN32_TRUE@wrapsurvexport_SOURCES = wrapsurvexport.c
aven_CFLAGS = $(AM_CFLAGS) $(WX_CFLAGS) -DAVEN
aven_CXXFLAGS = $(AM_CXXFLAGS) $(GDAL_CFLAGS) $(PROJ_CFLAGS) $(FFMPEG_CFLAGS) $(WX_CXXFLAGS)
-aven_LDFLAGS =
+@WIN32_FALSE@aven_LDFLAGS =
+@WIN32_TRUE@aven_LDFLAGS = -mwindows
survexport_CXXFLAGS = $(AM_CXXFLAGS) $(GDAL_CFLAGS) $(PROJ_CFLAGS) $(WX_CXXFLAGS)
survexport_LDFLAGS =
survexport_LDADD = $(LIBOBJS) $(WX_LIBS) $(GDAL_LIBS) $(PROJ_LIBS)
@@ -1444,6 +1447,7 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
diff -Nru survex-1.4.17/src/aboutdlg.cc survex-1.4.22/src/aboutdlg.cc
--- survex-1.4.17/src/aboutdlg.cc 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/aboutdlg.cc 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -30,7 +30,6 @@
#include
#include
-#include
BEGIN_EVENT_TABLE(AboutDlg, wxDialog)
EVT_TIMER(about_TIMER, AboutDlg::OnTimer)
diff -Nru survex-1.4.17/src/aboutdlg.h survex-1.4.22/src/aboutdlg.h
--- survex-1.4.17/src/aboutdlg.h 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/aboutdlg.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,14 +17,14 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef aboutdlg_h
#define aboutdlg_h
-#include "wx.h"
+#include
enum {
about_TIMER = 1000
diff -Nru survex-1.4.17/src/aven.cc survex-1.4.22/src/aven.cc
--- survex-1.4.17/src/aven.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/aven.cc 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -40,7 +40,6 @@
#include
#include
-#include
#if wxUSE_DISPLAY
// wxDisplay was added in wx 2.5; but it may not be built for mingw (because
// the header seems to be missing).
@@ -186,9 +185,7 @@
// The GLX-based wxGLCanvas doesn't work under Wayland, and the code
// segfaults: https://github.com/wxWidgets/wxWidgets/issues/17702
//
- // Therefore we force X11 unless we're using the EGL-based wxGLCanvas
- // (which was added in wxWidgets 3.1.5 and hasn't been backported to
- // 3.0.x).
+ // Therefore we force X11 unless we're using the EGL-based wxGLCanvas.
//
// Setting GDK_BACKEND=x11 is the recommended workaround, and it seems to
// work to set it here. GTK2 doesn't support Wayland, so doesn't need
diff -Nru survex-1.4.17/src/aven.h survex-1.4.22/src/aven.h
--- survex-1.4.17/src/aven.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/aven.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
*/
/* Note: this header needs to be safe to include from C code */
@@ -41,7 +41,11 @@
#ifdef __cplusplus
#include "message.h"
-#include "wx.h"
+
+#include
+#if !wxCHECK_VERSION(3,2,0)
+# error We support building with wxWidgets 3.2.0 or newer
+#endif
#include
diff -Nru survex-1.4.17/src/aven.rc survex-1.4.22/src/aven.rc
--- survex-1.4.17/src/aven.rc 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/aven.rc 2026-05-25 03:18:57.000000000 +0000
@@ -1,3 +1,4 @@
AAA_aven ICON aven.ico
+#define wxUSE_RC_MANIFEST 1
#define wxUSE_DPI_AWARE_MANIFEST 1
#include "wx/msw/wx.rc"
diff -Nru survex-1.4.17/src/avenprcore.cc survex-1.4.22/src/avenprcore.cc
--- survex-1.4.17/src/avenprcore.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/avenprcore.cc 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -26,9 +26,7 @@
#include "useful.h"
#include "avenprcore.h"
-#if defined __WXMSW__ || defined __WXMAC__
-# include
-#else
+#if !(defined __WXMSW__ || defined __WXMAC__)
# include
#endif
#include
@@ -44,7 +42,7 @@
//
// It may seem like data->GetPaperSize() would tell us this page size
// without having to construct a temporary DC, but that just returns
- // (0, 0) for the size, at least with wxGTK 3.0.2.
+ // (0, 0) for the size (most recent version checked was wxGTK 3.2.6).
#if defined __WXMSW__ || defined __WXMAC__
wxPrinterDC pdc(data->GetPrintData());
#else
diff -Nru survex-1.4.17/src/avenprcore.h survex-1.4.22/src/avenprcore.h
--- survex-1.4.17/src/avenprcore.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/avenprcore.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,14 +14,14 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef survex_included_avenprcore_h
#define survex_included_avenprcore_h
-#include
+#include
#include "export.h"
/* 1: is the default scale */
diff -Nru survex-1.4.17/src/aventreectrl.cc survex-1.4.22/src/aventreectrl.cc
--- survex-1.4.17/src/aventreectrl.cc 2025-03-18 01:19:48.000000000 +0000
+++ survex-1.4.22/src/aventreectrl.cc 2026-05-18 20:48:38.000000000 +0000
@@ -18,8 +18,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -386,6 +386,10 @@
menu.AppendSeparator();
//menu.Append(menu_SURVEY_HIDE, wmsg(/*&Hide*/407));
menu.Append(menu_SURVEY_SHOW, wmsg(/*&Show*/409));
+ // TRANSLATORS: Menu item for Aven's survey tree. Bring up the menu
+ // on a survey in the tree and select this and all the other surveys
+ // at the same level will be hidden, leaving only the chosen survey
+ // showing.
//menu.Append(menu_SURVEY_HIDE_SIBLINGS, wmsg(/*Hide si&blings*/388));
switch (GetItemState(menu_item)) {
case STATE_ON: // Currently shown.
diff -Nru survex-1.4.17/src/aventreectrl.h survex-1.4.22/src/aventreectrl.h
--- survex-1.4.17/src/aventreectrl.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/aventreectrl.h 2026-03-21 21:06:18.000000000 +0000
@@ -18,14 +18,15 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef aventreectrl_h
#define aventreectrl_h
-#include "wx.h"
+#include
+#include
#include "model.h"
diff -Nru survex-1.4.17/src/cavern.c survex-1.4.22/src/cavern.c
--- survex-1.4.17/src/cavern.c 2025-03-18 04:24:44.000000000 +0000
+++ survex-1.4.22/src/cavern.c 2026-05-18 02:00:19.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -62,8 +62,7 @@
FILE *fhErrStat = NULL;
img *pimg = NULL;
-bool fQuiet = false; /* just show brief summary + errors */
-bool fMute = false; /* just show errors */
+int quiet = 0; // 1 to turn off progress messages; >=2 turns off summary too.
bool fSuppress = false; /* only output 3d file */
static bool fLog = false; /* stdout to .log file */
static bool f_warnings_are_errors = false; /* turn warnings into errors */
@@ -114,7 +113,7 @@
/* TRANSLATORS: --help output for cavern --output option */
{HLP_ENCODELONG(2), /*set location for output files*/162, 0, 0},
/* TRANSLATORS: --help output for cavern --quiet option */
- {HLP_ENCODELONG(3), /*only show brief summary (-qq for errors only)*/163, 0, 0},
+ {HLP_ENCODELONG(3), /*fewer messages (-qq for even fewer)*/163, 0, 0},
/* TRANSLATORS: --help output for cavern --no-auxiliary-files option */
{HLP_ENCODELONG(4), /*do not create .err file*/164, 0, 0},
/* TRANSLATORS: --help output for cavern --warnings-are-errors option */
@@ -249,8 +248,7 @@
break;
}
case 'q':
- if (fQuiet) fMute = 1;
- fQuiet = 1;
+ ++quiet;
break;
case 's':
fSuppress = 1;
@@ -314,7 +312,7 @@
free(fnm);
}
- if (!fMute) {
+ if (quiet < 2) {
const char *p = COPYRIGHT_MSG;
puts(PRETTYPACKAGE" "VERSION);
while (1) {
@@ -371,8 +369,8 @@
if (fhErrStat) safe_fclose(fhErrStat);
out_current_action(msg(/*Calculating statistics*/120));
- if (!fMute) do_stats();
- if (!fQuiet) {
+ if (quiet < 2) do_stats();
+ if (!quiet) {
/* clock() typically wraps after 72 minutes, but there doesn't seem
* to be a better way. Still 72 minutes means some cave!
* We detect if clock() could have wrapped and suppress CPU time
diff -Nru survex-1.4.17/src/cavern.h survex-1.4.22/src/cavern.h
--- survex-1.4.17/src/cavern.h 2025-03-18 04:24:53.000000000 +0000
+++ survex-1.4.22/src/cavern.h 2026-06-23 20:53:55.000000000 +0000
@@ -1,6 +1,6 @@
/* cavern.h
* SURVEX Cave surveying software - header file
- * Copyright (C) 1991-2025 Olly Betts
+ * Copyright (C) 1991-2026 Olly Betts
* Copyright (C) 2004 Simeon Warner
*
* This program is free software; you can redistribute it and/or modify
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef CAVERN_H
@@ -60,6 +60,7 @@
#define SPECIAL_PLUS 0x0400
#define SPECIAL_OPEN 0x0800
#define SPECIAL_CLOSE 0x1000
+#define SPECIAL_DQUOTE_ 0x2000
extern char *fnm_output_base;
extern bool fnm_output_base_is_dir;
@@ -85,8 +86,8 @@
INFER_EXPORTS,
INFER_PLUMBS,
INFER_SUBSURVEYS,
- /* In Compass DAT files a dummy zero-length leg from a station to itself is
- * used to provide a place to specify LRUD for the start or end of a
+ /* In Compass DAT files, a dummy zero-length leg from a station to itself
+ * is used to provide a place to specify LRUD for the start or end of a
* traverse (depending if dimensions are measured at the from or to
* station), so we shouldn't warn about equating a station to itself.
* This should be set *as well as* INFER_EQUATES.
@@ -132,15 +133,15 @@
} flags;
/* flags are currently stored in an unsigned char */
-typedef int compiletimeassert_flags0[FLAGS_STYLE_BIT2 <= 7 ? 1 : -1];
+static_assert(FLAGS_STYLE_BIT2 <= 7, "FLAGS_* don't fit in a byte");
/* Mask to AND with to get bits to pass to img library. */
#define FLAGS_MASK \
(BIT(FLAGS_SURFACE) | BIT(FLAGS_DUPLICATE) | BIT(FLAGS_SPLAY))
-typedef int compiletimeassert_flags1[BIT(FLAGS_SURFACE) == img_FLAG_SURFACE ? 1 : -1];
-typedef int compiletimeassert_flags2[BIT(FLAGS_DUPLICATE) == img_FLAG_DUPLICATE ? 1 : -1];
-typedef int compiletimeassert_flags3[BIT(FLAGS_SPLAY) == img_FLAG_SPLAY ? 1 : -1];
+static_assert(BIT(FLAGS_SURFACE) == img_FLAG_SURFACE, "*_SURFACE differ");
+static_assert(BIT(FLAGS_DUPLICATE) == img_FLAG_DUPLICATE, "*_DUPLICATE differ");
+static_assert(BIT(FLAGS_SPLAY) == img_FLAG_SPLAY, "*_SPLAY differ");
typedef enum {
/* Don't reorder these values! They need to match with img.h too. */
@@ -148,7 +149,7 @@
SFLAGS_FIXED, SFLAGS_ANON, SFLAGS_WALL,
/* These values don't need to match img.h, but mustn't clash. */
SFLAGS_HANGING = 9,
- SFLAGS_UNUSED_FIXED_POINT = 10,
+ SFLAGS_USED = 10, // Warn unused fixed point if unset but SFLAGS_FIXED set.
SFLAGS_SOLVED = 11,
SFLAGS_SUSPECTTYPO = 12,
SFLAGS_SURVEY = 13,
@@ -162,13 +163,13 @@
BIT(SFLAGS_ENTRANCE) | BIT(SFLAGS_EXPORTED) | BIT(SFLAGS_FIXED) |\
BIT(SFLAGS_ANON) | BIT(SFLAGS_WALL))
-typedef int compiletimeassert_sflags1[BIT(SFLAGS_SURFACE) == img_SFLAG_SURFACE ? 1 : -1];
-typedef int compiletimeassert_sflags2[BIT(SFLAGS_UNDERGROUND) == img_SFLAG_UNDERGROUND ? 1 : -1];
-typedef int compiletimeassert_sflags3[BIT(SFLAGS_ENTRANCE) == img_SFLAG_ENTRANCE ? 1 : -1];
-typedef int compiletimeassert_sflags4[BIT(SFLAGS_EXPORTED) == img_SFLAG_EXPORTED ? 1 : -1];
-typedef int compiletimeassert_sflags5[BIT(SFLAGS_FIXED) == img_SFLAG_FIXED ? 1 : -1];
-typedef int compiletimeassert_sflags6[BIT(SFLAGS_ANON) == img_SFLAG_ANON ? 1 : -1];
-typedef int compiletimeassert_sflags7[BIT(SFLAGS_WALL) == img_SFLAG_WALL ? 1 : -1];
+static_assert(BIT(SFLAGS_SURFACE) == img_SFLAG_SURFACE, "*_SURFACE differ");
+static_assert(BIT(SFLAGS_UNDERGROUND) == img_SFLAG_UNDERGROUND, "*_UNDERGROUND differ");
+static_assert(BIT(SFLAGS_ENTRANCE) == img_SFLAG_ENTRANCE, "*_ENTRANCE differ");
+static_assert(BIT(SFLAGS_EXPORTED) == img_SFLAG_EXPORTED, "*_EXPORTED differ");
+static_assert(BIT(SFLAGS_FIXED) == img_SFLAG_FIXED, "*_FIXED differ");
+static_assert(BIT(SFLAGS_ANON) == img_SFLAG_ANON, "*_ANON differ");
+static_assert(BIT(SFLAGS_WALL) == img_SFLAG_WALL, "*_WALL differ");
/* enumeration of field types */
typedef enum {
@@ -184,27 +185,30 @@
* Fr must be the first reading after this comment!
*/
Fr, To, Station, Depth, DepthChange, Count, Dir,
- Newline, IgnoreAllAndNewLine, Ignore, IgnoreAll,
+ Note, NoteAll,
+ Newline, Ignore, IgnoreAll,
/* IgnoreAll must be the last reading before this comment!
*
- * Readings after this comment are only used in datain.c
- * so can have enum values >= 32 because we only use a
- * bitmask for those readings used in commands.c.
+ * Readings after this comment are not used in the bitmasks in commands.c
+ * which are used to detect repeated or missing readings so can have enum
+ * values >= 32.
*/
+ IgnoreAllAndNewLine,
+
CompassDATFr, CompassDATTo,
CompassDATComp, CompassDATClino, CompassDATBackComp, CompassDATBackClino,
CompassDATLeft, CompassDATRight, CompassDATUp, CompassDATDown,
CompassDATFlags,
WallsSRVFr, WallsSRVTo, WallsSRVTape, WallsSRVComp, WallsSRVClino,
+ WallsSRVFrDepth, WallsSRVToDepth,
// Optional pair of readings giving heights above stations on CT surveys.
WallsSRVHeights,
// Optional delimited LRUD and variance overrides.
WallsSRVExtras
} reading;
-/* if IgnoreAll is >= 32, the compiler will choke on this */
-typedef char compiletimeassert_reading[IgnoreAll < 32 ? 1 : -1];
+static_assert(IgnoreAll < 32, "IgnoreAll doesn't fit in 32-bit mask");
/* position or length vector */
typedef real delta[3];
@@ -227,12 +231,17 @@
const char *p;
char i[sizeof(const char*)];
} ident;
- // A filename:line where this name was used. If it's a station used in *fix
- // then this will be the location of such a *fix, otherwise if it's a
- // station used in *equate then it's the location of such a *equate.
- // Otherwise it's the first place it was used.
+ // A filename:line:column where this name was used. If it's a station used
+ // in *fix then this will be the location of such a *fix, otherwise if it's
+ // a station used in *equate then it's the location of such a *equate.
+ // Otherwise it's the first place it was used. (For a station invented to
+ // do a delta-star transform, this will be NULL.)
const char *filename;
unsigned int line;
+ unsigned short column;
+ /* stn flags - e.g. surface, underground, entrance
+ * also suspecttypo and survey */
+ unsigned short sflags;
/* If (min_export == 0) then max_export is max # levels above is this
* prefix is used (and so needs to be exported) (0 == parent only).
* If (min_export > 0) then max_export is max # levels above this
@@ -244,9 +253,6 @@
* the end of the run, we also mark stations with min_export == USHRT_MAX
* and max_export > 0 as exported. */
unsigned short max_export, min_export;
- /* stn flags - e.g. surface, underground, entrance
- * also suspecttypo and survey */
- unsigned short sflags;
} prefix;
static inline const char *prefix_ident(const prefix *p) {
@@ -263,11 +269,15 @@
/* stuff stored for both forward & reverse legs */
typedef struct {
struct Node *to;
- /* bits 0..1 = reverse leg number; bit7 is fFullLeg */
- /* bit6 = fReplacementLeg (by reduction rules) */
- /* bit5 = articulation leg (i.e. carries no error) */
+ // Reverse leg number (0, 1 or 2)
unsigned char reverse;
- /* flags - e.g. surface, duplicate survey
+ // These are "internal" flag bits:
+ // bit 4: FLAG_FAKE (an equate or leg inside an sdfix
+ // bit 5: FLAG_ARTICULATION (i.e. carries no error)
+ // bit 6: FLAG_REPLACEMENTLEG (by reduction rules)
+ // bit 7: FLAG_DATAHERE (i.e. this is a forward leg)
+ unsigned char bits;
+ /* flags - e.g. FLAGS_SURFACE, FLAGS_DUPLICATE.
* only used if (FLAG_DATAHERE & !(FLAG_REPLACEMENTLEG|FLAG_FAKE))
* This could be only in linkfor, but this is actually more space
* efficient.
@@ -326,11 +336,12 @@
#define STYLE_PASSAGE 5
#define STYLE_IGNORE 6
-typedef int compiletimeassert_style1[STYLE_NORMAL == img_STYLE_NORMAL ? 1 : -1];
-typedef int compiletimeassert_style2[STYLE_DIVING == img_STYLE_DIVING ? 1 : -1];
-typedef int compiletimeassert_style3[STYLE_CARTESIAN == img_STYLE_CARTESIAN ? 1 : -1];
-typedef int compiletimeassert_style4[STYLE_CYLPOLAR == img_STYLE_CYLPOLAR ? 1 : -1];
-typedef int compiletimeassert_style5[STYLE_NOSURVEY == img_STYLE_NOSURVEY ? 1 : -1];
+static_assert(STYLE_NORMAL == img_STYLE_NORMAL, "*_NORMAL differ");
+static_assert(STYLE_DIVING == img_STYLE_DIVING, "*_DIVING differ");
+static_assert(STYLE_CARTESIAN == img_STYLE_CARTESIAN, "*_CARTESIAN differ");
+static_assert(STYLE_CYLPOLAR == img_STYLE_CYLPOLAR, "*_CYLPOLAR differ");
+static_assert(STYLE_NOSURVEY == img_STYLE_NOSURVEY, "*_NOSURVEY differ");
+static_assert(STYLE_NORMAL == img_STYLE_NORMAL, "*_NORMAL differ");
/* various settings preserved by *BEGIN and *END */
typedef struct Settings {
@@ -411,8 +422,7 @@
extern real totadj, total, totplan, totvert;
extern real min[9], max[9];
extern prefix *pfxHi[9], *pfxLo[9];
-extern bool fQuiet; /* just show brief summary + errors */
-extern bool fMute; /* just show errors */
+extern int quiet; // 1 to turn off progress messages; >=2 turns off summary too.
extern bool fSuppress; /* only output 3d file */
/* macros */
@@ -420,8 +430,8 @@
#define POS(S, D) ((S)->name->pos->p[(D)])
#define POSD(S) ((S)->name->pos->p)
-#define data_here(L) ((L)->l.reverse & FLAG_DATAHERE)
-#define reverse_leg_dirn(L) ((L)->l.reverse & MASK_REVERSEDIRN)
+#define data_here(L) ((L)->l.bits & FLAG_DATAHERE)
+#define reverse_leg_dirn(L) ((L)->l.reverse)
#define reverse_leg(L) ((L)->l.to->leg[reverse_leg_dirn(L)])
/* if p[0]==UNFIXED_VAL, station is unfixed */
@@ -452,7 +462,7 @@
#define isSign(c) (pcs->Translate[(c)] & (SPECIAL_PLUS | SPECIAL_MINUS))
#define isData(c) (pcs->Translate[(c)] & (SPECIAL_OMIT | SPECIAL_ROOT|\
SPECIAL_SEPARATOR | SPECIAL_NAMES | SPECIAL_DECIMAL | SPECIAL_PLUS |\
- SPECIAL_MINUS))
+ SPECIAL_MINUS | SPECIAL_DQUOTE_))
typedef struct nosurveylink {
node *fr, *to;
diff -Nru survex-1.4.17/src/cavernlog.cc survex-1.4.22/src/cavernlog.cc
--- survex-1.4.17/src/cavernlog.cc 2025-03-19 22:50:10.000000000 +0000
+++ survex-1.4.22/src/cavernlog.cc 2026-06-23 20:32:37.000000000 +0000
@@ -1,7 +1,7 @@
/* cavernlog.cc
* Run cavern inside an Aven window
*
- * Copyright (C) 2005-2024 Olly Betts
+ * Copyright (C) 2005-2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -39,6 +39,10 @@
#include
+#ifdef _WIN32
+# include // For _commit().
+#endif
+
#define GVIM_COMMAND "gvim +'call cursor($l,$c)' $f"
#define VIM_COMMAND "x-terminal-emulator -e vim +'call cursor($l,$c)' $f"
#define NVIM_COMMAND "x-terminal-emulator -e nvim +'call cursor($l,$c)' $f"
@@ -118,7 +122,7 @@
GetViewStart(&scroll_x, &scroll_y);
int fsize = dc.GetFont().GetPixelSize().GetHeight();
int limit = min((rect.y + rect.height + fsize - 1) / fsize + scroll_y, int(line_info.size()) - 1);
- for (int i = max(rect.y / fsize, scroll_y); i <= limit ; ++i) {
+ for (int i = max(rect.y / fsize, scroll_y); i <= limit; ++i) {
LineInfo& info = line_info[i];
// Leave a small margin to the left.
int x = fsize / 2 - scroll_x * fsize;
@@ -281,13 +285,11 @@
survey(survey_),
timer(this)
{
-#if wxCHECK_VERSION(3,2,0)
if (wxSystemSettings::GetAppearance().IsDark()) {
SetOwnBackgroundColour(*wxBLACK);
dark_mode = true;
return;
}
-#endif
SetOwnBackgroundColour(*wxWHITE);
}
@@ -666,6 +668,10 @@
return;
}
FWRITE_(log_txt.data(), log_txt.size(), 1, fh_log);
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ _commit(fileno(fh_log));
+#endif
fclose(fh_log);
}
diff -Nru survex-1.4.17/src/cavernlog.h survex-1.4.22/src/cavernlog.h
--- survex-1.4.17/src/cavernlog.h 2025-03-18 18:49:55.000000000 +0000
+++ survex-1.4.22/src/cavernlog.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,14 +14,14 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef SURVEX_CAVERNLOG_H
#define SURVEX_CAVERNLOG_H
-#include "wx.h"
+#include
#include
#include
diff -Nru survex-1.4.17/src/cmdline.c survex-1.4.22/src/cmdline.c
--- survex-1.4.17/src/cmdline.c 2025-03-17 23:17:37.000000000 +0000
+++ survex-1.4.22/src/cmdline.c 2026-06-23 20:32:37.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -107,7 +107,7 @@
if (help->placeholder) {
fputs(help->placeholder, stdout);
} else {
- for (p = longopt; *p ; p++) {
+ for (p = longopt; *p; p++) {
unsigned char ch = *p;
PUTCHAR((ch == '-') ? '_' : toupper(ch));
}
diff -Nru survex-1.4.17/src/cmdline.h survex-1.4.22/src/cmdline.h
--- survex-1.4.17/src/cmdline.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/cmdline.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef CMDLINE_H
diff -Nru survex-1.4.17/src/commands.c survex-1.4.22/src/commands.c
--- survex-1.4.17/src/commands.c 2025-03-19 22:23:18.000000000 +0000
+++ survex-1.4.22/src/commands.c 2026-06-23 20:53:55.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -59,11 +59,10 @@
}
}
-int fix_station(prefix *fix_name, const double* coords) {
+int fix_station(prefix *fix_name, const double* coords, long offset) {
bool new_stn = (fix_name->stn == NULL &&
!TSTBIT(fix_name->sflags, SFLAGS_SOLVED));
fix_name->sflags |= BIT(SFLAGS_FIXED);
- if (new_stn) fix_name->sflags |= BIT(SFLAGS_UNUSED_FIXED_POINT);
node *stn = StnFromPfx(fix_name);
if (fixed(stn)) {
if (coords[0] != POS(stn, 0) ||
@@ -88,6 +87,7 @@
// Make the station's file:line location reflect where it was fixed.
fix_name->filename = file.filename;
fix_name->line = file.line;
+ fix_name->column = offset >= 0 ? offset - file.lpos : 0;
return 0;
}
@@ -98,10 +98,7 @@
#endif
)
{
- bool new_stn = (fix_name->stn == NULL &&
- !TSTBIT(fix_name->sflags, SFLAGS_SOLVED));
- if (new_stn) fix_name->sflags |= BIT(SFLAGS_UNUSED_FIXED_POINT);
-
+ fix_name->sflags |= BIT(SFLAGS_FIXED);
node *stn = StnFromPfx(fix_name);
if (!fixed(stn)) {
node *fixpt = osnew(node);
@@ -209,6 +206,7 @@
t['{'] |= SPECIAL_OPEN;
t['}'] |= SPECIAL_CLOSE;
#endif
+ t['"'] |= SPECIAL_DQUOTE_;
}
static void
@@ -232,15 +230,43 @@
static short separator_map[256];
void
-scan_compass_station_name(prefix *stn)
+update_separator_map_for_foreign_name(const char* p)
{
- /* We only need to scan the leaf station name - any survey hierarchy above
+ /* Used for Compass, where we scan every station name used to see what
+ * characters are actually used (since Compass allows pretty much every
+ * character except space.
+ *
+ * We only need to scan the leaf station name - any survey hierarchy above
* that must have been set up in .svx files for which we update
* separator_map via cmd_set() plus adding the defaults in
* find_output_separator().
+ *
+ * Also used for Walls SRV to mark space as used if we use the special
+ * name "empty name".
*/
- for (const char *p = prefix_ident(stn); *p; ++p) {
+ while (*p) {
separator_map[(unsigned char)*p] |= SPECIAL_NAMES;
+ ++p;
+ }
+}
+
+// Update the separator_map to reflect what can be SPECIAL_NAMES in the passed
+// translation table.
+//
+// Used for Walls currently. Compass DAT allows everything >= ASCII 33 except
+// 127 in station names so there we scan each station name to see what's actually
+// used (see update_separator_map_for_foreign_name()).
+//
+// In a pure Walls dataset this will lead to `:` being picked as the separator
+// for the .3d file, which makes sense as it matches Walls native separator.
+// (If you process Walls data with Survex and/or Compass data, potentially `:`
+// could be in SPECIAL_NAMES for Survex or used in a Compass station name in
+// which case another separator character may be chosen).
+void
+update_separator_map_for_foreign_format(const short *t)
+{
+ for (int i = 0; i <= 0xff; i++) {
+ separator_map[i] |= t[i];
}
}
@@ -366,6 +392,15 @@
{
if (!s_empty(&token)) {
if (!isBlank(ch) && !isComm(ch) && !isEol(ch)) {
+ // TRANSLATORS: Warning if there's no "blank" character (space, tab
+ // and comma by default) after a token, e.g. it would be issued
+ // after the token "fix" here:
+ //
+ // *fix1 0 0 0
+ //
+ // This is a warning rather than an error because it was quietly
+ // accepted for a long time. That wasn't intentional, but we don't
+ // want to suddenly break processing existing datasets.
compile_diagnostic(DIAG_WARN|DIAG_COL, /*No blank after token*/74);
}
}
@@ -542,13 +577,15 @@
s_str(&token));
return UNITS_NULL;
}
- /* Survex has long misdefined "mils" as an alias for "grads", of which
- * there are 400 in a circle. There are several definitions of "mils"
- * with a circle containing 2000π SI milliradians, 6400 NATO mils, 6000
- * Warsaw Pact mils, and 6300 Swedish streck, and they aren't in common
- * use by cave surveyors, so we now just warn if mils are used.
- */
if (units == UNITS_DEPRECATED_ALIAS_FOR_GRADS) {
+ /* TRANSLATORS: Survex has long misdefined "mils" as an alias for
+ * "grads", of which there are 400 in a circle. There are several
+ * definitions of "mils" with a circle containing 2000π SI milliradians,
+ * 6400 NATO mils, 6000 Warsaw Pact mils, and 6300 Swedish streck, and
+ * they aren't in common use by cave surveyors, so we now just warn if
+ * mils are used. Here “grads” should not be translated as it shows
+ * what cavern is assuming should be written in the .svx file instead.
+ */
compile_diagnostic(DIAG_WARN|DIAG_TOKEN|DIAG_SKIP,
/*Units “%s” are deprecated, assuming “grads” - see manual for details*/479,
s_str(&token));
@@ -656,7 +693,7 @@
/*FIXME {"CLOSE", SPECIAL_CLOSE }, */
{"COMMENT", SPECIAL_COMMENT },
{"DECIMAL", SPECIAL_DECIMAL },
- {"EOL", SPECIAL_EOL }, /* EOL won't work well */
+ {"EOL", SPECIAL_EOL },
{"KEYWORD", SPECIAL_KEYWORD },
{"MINUS", SPECIAL_MINUS },
{"NAMES", SPECIAL_NAMES },
@@ -684,7 +721,7 @@
if (mask == SPECIAL_ROOT) {
if (root_depr_count < 5) {
/* TRANSLATORS: Use of the ROOT character (which is "\" by default) is
- * deprecated, so this error would be generated by:
+ * deprecated, so this warning would be generated by:
*
* *equate \foo.7 1
*
@@ -714,6 +751,9 @@
for (i = 0; i < 256; i++)
if (!isalnum(i)) pcs->Translate[i] &= ~mask;
+ // Set special flag for double quote.
+ pcs->Translate['"'] |= SPECIAL_DQUOTE_;
+
/* now set this flag for all specified chars */
while (!isEol(ch)) {
int char_to_set;
@@ -728,13 +768,13 @@
set_pos(&fp);
break;
}
- hex = isdigit(ch) ? ch - '0' : tolower(ch) - 'a';
+ hex = isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10;
nextch();
if (!isxdigit(ch)) {
set_pos(&fp);
break;
}
- hex = hex << 4 | (isdigit(ch) ? ch - '0' : tolower(ch) - 'a');
+ hex = hex << 4 | (isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10);
char_to_set = hex;
} else {
break;
@@ -744,6 +784,11 @@
nextch();
}
+ // Clear special flag for double quote if it has been assigned a meaning.
+ if (pcs->Translate['"'] != SPECIAL_DQUOTE_) {
+ pcs->Translate['"'] &= ~SPECIAL_DQUOTE_;
+ }
+
output_separator = find_output_separator();
}
@@ -816,6 +861,7 @@
survey->sflags |= BIT(SFLAGS_PREFIX_ENTERED);
survey->filename = file.filename;
survey->line = file.line;
+ survey->column = fpos_ptr->offset - file.lpos;
}
}
@@ -823,21 +869,9 @@
static void
cmd_prefix(void)
{
- static int prefix_depr_count = 0;
- prefix *survey;
filepos fp;
- /* Issue warning first, so "*prefix \" warns first that *prefix is
- * deprecated and then that ROOT is...
- */
- if (prefix_depr_count < 5) {
- /* TRANSLATORS: If you're unsure what "deprecated" means, see:
- * https://en.wikipedia.org/wiki/Deprecation */
- compile_diagnostic(DIAG_WARN|DIAG_TOKEN, /**prefix is deprecated - use *begin and *end instead*/109);
- if (++prefix_depr_count == 5)
- compile_diagnostic(DIAG_INFO, /*Further uses of this deprecated feature will not be reported*/95);
- }
get_pos(&fp);
- survey = read_prefix(PFX_SURVEY|PFX_ALLOW_ROOT);
+ prefix *survey = read_prefix(PFX_SURVEY|PFX_ALLOW_ROOT);
pcs->Prefix = survey;
check_reentry(survey, &fp);
}
@@ -879,7 +913,6 @@
pcsNew->next = pcs;
pcs = pcsNew;
- skipblanks();
pcs->begin_survey = NULL;
pcs->begin_col = 0;
if (!isEol(ch) && !isComm(ch)) {
@@ -949,64 +982,6 @@
}
void
-set_declination_location(real x, real y, real z, const char *proj_str)
-{
- /* Convert to WGS84 lat long. */
- PJ *transform = proj_create_crs_to_crs(PJ_DEFAULT_CTX,
- proj_str,
- WGS84_DATUM_STRING,
- NULL);
- if (transform) {
- /* Normalise the output order so x is longitude and y latitude - by
- * default new PROJ has them switched for EPSG:4326 which just seems
- * confusing.
- */
- PJ* pj_norm = proj_normalize_for_visualization(PJ_DEFAULT_CTX,
- transform);
- proj_destroy(transform);
- transform = pj_norm;
- }
-
- if (proj_angular_input(transform, PJ_FWD)) {
- /* Input coordinate system expects radians. */
- x = rad(x);
- y = rad(y);
- }
-
- PJ_COORD coord = {{x, y, z, HUGE_VAL}};
- coord = proj_trans(transform, PJ_FWD, coord);
- x = coord.xyzt.x;
- y = coord.xyzt.y;
- z = coord.xyzt.z;
-
- if (x == HUGE_VAL || y == HUGE_VAL || z == HUGE_VAL) {
- compile_diagnostic(DIAG_ERR, /*Failed to convert coordinates: %s*/436,
- proj_context_errno_string(PJ_DEFAULT_CTX,
- proj_errno(transform)));
- /* Set dummy values which are finite. */
- x = y = z = 0;
- }
- proj_destroy(transform);
-
- report_declination(pcs);
-
- double lon = rad(x);
- double lat = rad(y);
- pcs->z[Q_DECLINATION] = HUGE_REAL;
- pcs->dec_lat = lat;
- pcs->dec_lon = lon;
- pcs->dec_alt = z;
- pcs->dec_filename = file.filename;
- pcs->dec_line = file.line;
- pcs->dec_context = grab_line();
- /* Invalidate cached declination. */
- pcs->declination = HUGE_REAL;
- /* Invalidate cached grid convergence values. */
- pcs->convergence = HUGE_REAL;
- pcs->input_convergence = HUGE_REAL;
-}
-
-void
pop_settings(void)
{
settings * p = pcs;
@@ -1078,7 +1053,6 @@
/* note need to read using root *before* BEGIN */
prefix *survey = NULL;
- skipblanks();
if (!isEol(ch) && !isComm(ch)) {
get_pos(&fp);
survey = read_prefix(PFX_SURVEY|PFX_ALLOW_ROOT);
@@ -1120,6 +1094,18 @@
fseek(file.fh, begin_lpos + begin_col - 1, SEEK_SET);
nextch();
}
+ /* TRANSLATORS: Used when a BEGIN command has a survey name, but the
+ * END command omits it, e.g.:
+ *
+ * *begin entrance
+ * 1 2 10.00 178 -01
+ * *end
+ *
+ * gives:
+ *
+ * eg.svx:3: warning: Survey name omitted from END
+ * eg.svx:1: info: Corresponding BEGIN was here
+ */
compile_diagnostic(DIAG_INFO|word_flag, /*Corresponding %s was here*/22, "BEGIN");
file = file_save;
set_pos(&fp_save);
@@ -1130,8 +1116,7 @@
cmd_entrance(void)
{
prefix *pfx = read_prefix(PFX_STATION);
- pfx->sflags |= BIT(SFLAGS_ENTRANCE);
- pfx->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ pfx->sflags |= BIT(SFLAGS_ENTRANCE)|BIT(SFLAGS_USED);
}
static const prefix * first_fix_name = NULL;
@@ -1159,6 +1144,9 @@
if (!s_empty(&uctoken)) set_pos(&fp);
}
+ skipblanks();
+ get_pos(&fp);
+
// If `REFERENCE` is specified the coordinates can't be omitted.
coord.v[0] = read_numeric(!reference);
if (coord.v[0] == HUGE_REAL) {
@@ -1233,7 +1221,8 @@
if (coord.v[0] == HUGE_VAL ||
coord.v[1] == HUGE_VAL ||
coord.v[2] == HUGE_VAL) {
- compile_diagnostic(DIAG_ERR, /*Failed to convert coordinates: %s*/436,
+ compile_diagnostic(DIAG_ERR|DIAG_FROM(fp),
+ /*Failed to convert coordinates: %s*/436,
proj_context_errno_string(PJ_DEFAULT_CTX,
proj_errno(transform)));
/* Set dummy values which are finite. */
@@ -1297,7 +1286,7 @@
if (reference) {
// `*fix reference` so suppress "unused fixed point" warning.
- fix_name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ fix_name->sflags |= BIT(SFLAGS_USED);
}
if (!first_fix_name) {
/* We track if we've fixed a station yet, and if so what the name
@@ -1321,10 +1310,10 @@
first_fix_line = file.line;
}
- int fix_result = fix_station(fix_name, coord.v);
+ int fix_result = fix_station(fix_name, coord.v, fp_stn.offset);
if (reference) {
// `*fix reference` so suppress "unused fixed point" warning.
- fix_name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ fix_name->sflags |= BIT(SFLAGS_USED);
}
if (fix_result == 0) {
return;
@@ -1403,6 +1392,7 @@
// reflect this *equate.
name->filename = file.filename;
name->line = file.line;
+ name->column = fp.offset - file.lpos;
}
skipblanks();
if (isEol(ch) || isComm(ch)) {
@@ -1550,6 +1540,8 @@
{"LENGTH", Tape },
{"NEWLINE", Newline },
{"NORTHING", Dy },
+ {"NOTE", Note },
+ {"NOTEALL", NoteAll },
{"RIGHT", Right },
{"STATION", Station }, /* Fr&To in multiline */
{"TAPE", Tape }, /* alternative name */
@@ -1560,7 +1552,9 @@
{NULL, End }
};
-#define MASK_stns BIT(Fr) | BIT(To) | BIT(Station)
+#define MASK_note BIT(Note) | BIT(NoteAll)
+#define MASK_station BIT(Station) | MASK_note
+#define MASK_stns BIT(Fr) | BIT(To) | MASK_station
#define MASK_tape BIT(Tape) | BIT(BackTape) | BIT(FrCount) | BIT(ToCount) | BIT(Count)
#define MASK_dpth BIT(FrDepth) | BIT(ToDepth) | BIT(Depth) | BIT(DepthChange)
#define MASK_comp BIT(Comp) | BIT(BackComp)
@@ -1571,7 +1565,7 @@
#define MASK_CARTESIAN MASK_stns | BIT(Dx) | BIT(Dy) | BIT(Dz)
#define MASK_CYLPOLAR MASK_stns | BIT(Dir) | MASK_tape | MASK_comp | MASK_dpth
#define MASK_NOSURVEY MASK_stns
-#define MASK_PASSAGE BIT(Station) | BIT(Left) | BIT(Right) | BIT(Up) | BIT(Down)
+#define MASK_PASSAGE MASK_station | BIT(Left) | BIT(Right) | BIT(Up) | BIT(Down)
#define MASK_IGNORE 0 // No readings in this style.
// readings which may be given for each style (index is STYLE_*)
@@ -1582,23 +1576,30 @@
// readings which may be omitted for each style (index is STYLE_*)
static const unsigned long mask_optional[] = {
- BIT(Dir) | BIT(Clino) | BIT(BackClino),
- BIT(Dir) | BIT(Clino) | BIT(BackClino),
- 0,
- BIT(Dir),
- 0,
- 0, /* BIT(Left) | BIT(Right) | BIT(Up) | BIT(Down), */
+ // STYLE_NORMAL:
+ MASK_note | BIT(Dir) | MASK_clin,
+ // STYLE_DIVING:
+ MASK_note | BIT(Dir) | MASK_clin,
+ // STYLE_CARTESIAN:
+ MASK_note,
+ // STYLE_CYLPOLAR:
+ MASK_note | BIT(Dir),
+ // STYLE_NOSURVEY:
+ MASK_note,
+ // STYLE_IGNORE:
+ MASK_note | BIT(Left) | BIT(Right) | BIT(Up) | BIT(Down),
0
};
+#define MASK_common BIT(Ignore) | BIT(IgnoreAll) | BIT(End)
/* all valid readings */
static const unsigned long mask_all[] = {
- MASK_NORMAL | BIT(Newline) | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
- MASK_DIVING | BIT(Newline) | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
- MASK_CARTESIAN | BIT(Newline) | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
- MASK_CYLPOLAR | BIT(Newline) | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
- MASK_NOSURVEY | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
- MASK_PASSAGE | BIT(Ignore) | BIT(IgnoreAll) | BIT(End),
+ MASK_NORMAL | BIT(Newline) | MASK_common,
+ MASK_DIVING | BIT(Newline) | MASK_common,
+ MASK_CARTESIAN | BIT(Newline) | MASK_common,
+ MASK_CYLPOLAR | BIT(Newline) | MASK_common,
+ MASK_NOSURVEY | MASK_common,
+ MASK_PASSAGE | MASK_common,
MASK_IGNORE
};
#define STYLE_DEFAULT -2
@@ -1617,7 +1618,7 @@
{NULL, STYLE_UNKNOWN }
};
-#define m_multi (BIT(Station) | BIT(Count) | BIT(Depth))
+#define m_multi (BIT(Station) | BIT(Count) | BIT(Depth) | BIT(Note) | BIT(NoteAll))
int style, k = 0;
reading d;
@@ -1673,12 +1674,12 @@
int kMac = 6; /* minimum for NORMAL style */
reading *new_order = osmalloc(kMac * sizeof(reading));
char *style_name = s_steal(&token);
- do {
- filepos fp;
- get_pos(&fp);
+ while (true) {
+ skipblanks();
+ if (!isalpha((unsigned char)ch)) break;
get_token();
d = match_tok(dtab, TABSIZE(dtab));
- if (d == End && !s_empty(&token)) {
+ if (d == End) {
compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP,
/*Reading “%s” not allowed in data style “%s”*/63,
s_str(&token), style_name);
@@ -1687,10 +1688,23 @@
return;
}
- /* only token allowed after IGNOREALL is NEWLINE */
- if (k && new_order[k - 1] == IgnoreAll && d != Newline) {
- set_pos(&fp);
- break;
+ /* only token allowed after IGNOREALL or NOTEALL is NEWLINE */
+ if (k &&
+ (new_order[k - 1] == IgnoreAll || new_order[k - 1] == NoteAll) &&
+ d != Newline) {
+ /* TRANSLATORS: The first %s is replaced by the problematic reading.
+ * The second %s is replaced a reading which consumes the rest of the
+ * current line. An example bad command and the resulting error:
+ *
+ * *data nosurvey ignoreall station
+ * x.svx:1: Reading “station” not allowed after reading “ignoreall”
+ */
+ compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP,
+ /*Reading “%s” not allowed after reading “%s”*/540,
+ s_str(&token), "ignoreall");
+ free(style_name);
+ free(new_order);
+ return;
}
/* Note: an unknown token is reported as trailing garbage */
if (!TSTBIT(mask_all[style], d)) {
@@ -1723,7 +1737,7 @@
/* Check for duplicates unless it's a special reading:
* IGNOREALL,IGNORE (duplicates allowed) ; END (not possible)
*/
- if (!((BIT(Ignore) | BIT(End) | BIT(IgnoreAll)) & BIT(d))) {
+ if (!((BIT(Ignore) | BIT(IgnoreAll)) & BIT(d))) {
if (TSTBIT(mUsed, d)) {
/* TRANSLATORS: complains about a situation like trying to define
* two from stations per leg */
@@ -1761,12 +1775,16 @@
if (mUsed & (BIT(FrDepth) | BIT(ToDepth) | BIT(Depth)))
fBad = true;
break;
+ case Note: case NoteAll:
+ if (mUsed & (BIT(Note) | BIT(NoteAll)))
+ fBad = true;
+ break;
case Newline:
if (mUsed & ~m_multi) {
/* TRANSLATORS: e.g.
*
* *data normal from to tape newline compass clino */
- compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP, /*NEWLINE can only be preceded by STATION, DEPTH, and COUNT*/226);
+ compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP, /*NEWLINE can only be preceded by STATION, DEPTH, and COUNT*/226);//FIXME: NOTE, NOTEALL
free(style_name);
free(new_order);
return;
@@ -1810,41 +1828,61 @@
new_order = osrealloc(new_order, kMac * sizeof(reading));
}
new_order[k++] = d;
- } while (d != End);
+ }
- if (k >= 2 && new_order[k - 2] == Newline) {
+ if (k && (new_order[k - 1] == Newline ||
+ new_order[k - 1] == IgnoreAllAndNewLine)) {
/* TRANSLATORS: error from:
*
- * *data normal from to tape compass clino newline */
+ * *data normal station newline */
compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP, /*NEWLINE can’t be the last reading*/223);
free(style_name);
free(new_order);
return;
}
- if (style == STYLE_NOSURVEY) {
- if (TSTBIT(mUsed, Station)) {
- if (k >= kMac) {
- kMac = kMac * 2;
- new_order = osrealloc(new_order, kMac * sizeof(reading));
- }
- new_order[k - 1] = Newline;
- new_order[k++] = End;
- }
- } else if (style == STYLE_PASSAGE) {
- /* Station doesn't mean "multiline" for STYLE_PASSAGE. */
- } else if (!TSTBIT(mUsed, Newline) && (m_multi & mUsed)) {
+ /* Station doesn't mean "multiline" for STYLE_PASSAGE. In STYLE_NOSURVEY,
+ * "interleaved" style isn't really interleaved.
+ */
+ if (style != STYLE_NOSURVEY &&
+ style != STYLE_PASSAGE &&
+ !TSTBIT(mUsed, Newline) &&
+ (m_multi & mUsed)) {
/* TRANSLATORS: Error given by something like:
*
* *data normal station tape compass clino
*
- * ("station" signifies interleaved data). */
+ * ("station" signifies interleaved data).
+ */
compile_diagnostic(DIAG_ERR|DIAG_SKIP, /*Interleaved readings, but no NEWLINE*/224);
free(style_name);
free(new_order);
return;
}
+ if (style == STYLE_NOSURVEY && TSTBIT(mUsed, Station)) {
+ // Convert IgnoreAll to IgnoreAllAndNewLine or append Newline.
+ if (k && new_order[k - 1] == IgnoreAll) {
+ new_order[k - 1] = IgnoreAllAndNewLine;
+ } else {
+ if (k >= kMac) {
+ kMac = kMac * 2;
+ new_order = osrealloc(new_order, kMac * sizeof(reading));
+ }
+ new_order[k++] = Newline;
+ }
+ }
+ if (k && new_order[k - 1] == IgnoreAll) {
+ // IgnoreAll serves in place of End.
+ } else {
+ // Add End.
+ if (k >= kMac) {
+ kMac = kMac * 2;
+ new_order = osrealloc(new_order, kMac * sizeof(reading));
+ }
+ new_order[k++] = End;
+ }
+
#if 0
printf("mUsed = 0x%x\n", mUsed);
#endif
@@ -2060,6 +2098,8 @@
pcs->cartesian_north = north;
pcs->cartesian_rotation = 0.0;
+ do_legacy_token_warning();
+
skipblanks();
if (!isEol(ch) && !isComm(ch)) {
real rotation = read_numeric(false);
@@ -2093,10 +2133,12 @@
}
/* *declination auto X Y Z */
+ filepos fp;
+ get_pos(&fp);
real x = read_numeric(false);
real y = read_numeric(false);
real z = read_numeric(false);
- set_declination_location(x, y, z, pcs->proj_str);
+ set_declination_location(x, y, z, pcs->proj_str, &fp);
} else {
/* *declination D UNITS */
int units = get_units(BIT(Q_DECLINATION), false);
@@ -2118,15 +2160,6 @@
{ "UNITS", CMD_UNITS },
{ NULL, CMD_NULL }
};
- static int default_depr_count = 0;
-
- if (default_depr_count < 5) {
- /* TRANSLATORS: If you're unsure what "deprecated" means, see:
- * https://en.wikipedia.org/wiki/Deprecation */
- compile_diagnostic(DIAG_WARN|DIAG_TOKEN, /**DEFAULT is deprecated - use *CALIBRATE/DATA/SD/UNITS with argument DEFAULT instead*/20);
- if (++default_depr_count == 5)
- compile_diagnostic(DIAG_INFO, /*Further uses of this deprecated feature will not be reported*/95);
- }
get_token();
switch (match_tok(defaulttab, TABSIZE(defaulttab))) {
@@ -2183,35 +2216,6 @@
free(pth);
}
-static void
-cmd_sd(void)
-{
- real sd, variance;
- int units;
- unsigned long qmask, m;
- int quantity;
- qmask = get_qlist(BIT(Q_DECLINATION));
- if (!qmask) return; /* no quantities found - error already reported */
-
- if (qmask == BIT(Q_DEFAULT)) {
- default_grade(pcs);
- return;
- }
- sd = read_numeric(false);
- if (sd <= (real)0.0) {
- compile_diagnostic(DIAG_ERR|DIAG_SKIP|DIAG_COL, /*Standard deviation must be positive*/48);
- return;
- }
- units = get_units(qmask, false);
- if (units == UNITS_NULL) return;
-
- sd *= factor_tab[units];
- variance = sqrd(sd);
-
- for (quantity = 0, m = BIT(quantity); m <= qmask; quantity++, m <<= 1)
- if (qmask & m) pcs->Var[quantity] = variance;
-}
-
enum {
ROLE_BACKTAPE,
ROLE_BACKCOMPASS,
@@ -2258,6 +2262,7 @@
{"DZ", ROLE_ALTITUDE},
{"EXPLORER", ROLE_EXPLORER},
{"FLOOR", ROLE_DOWN},
+ {"GPS", ROLE_POSITION},
{"GRADIENT", ROLE_CLINO},
{"INSTRUMENTS", ROLE_INSTRUMENTS},
{"INSTS", ROLE_INSTRUMENTS},
@@ -2276,6 +2281,72 @@
};
static void
+cmd_instrument(void)
+{
+ int n_roles = 0;
+ while (true) {
+ filepos fp;
+ get_pos(&fp);
+ get_token();
+ int role = match_tok(role_tab, TABSIZE(role_tab));
+ if (role < 0) {
+ if (n_roles > 0) {
+ set_pos(&fp);
+ break;
+ }
+ // Skip after warning to avoid triggering multiple warnings for one
+ // *instrument command in existing data from before this check was
+ // implemented.
+ compile_diagnostic(DIAG_WARN|DIAG_TOKEN|DIAG_SKIP, /*Unknown instrument type “%s”*/536,
+ s_str(&token));
+ return;
+ }
+ ++n_roles;
+ }
+
+ skipblanks();
+ string name = S_INIT;
+ if (!read_string_warning(&name)) {
+ skipline();
+ return;
+ }
+ s_free(&name);
+
+ skipblanks();
+ if (!isComm(ch) && !isEol(ch))
+ compile_diagnostic(DIAG_WARN|DIAG_TAIL, /*End of line not blank*/15);
+}
+
+static void
+cmd_sd(void)
+{
+ real sd, variance;
+ int units;
+ unsigned long qmask, m;
+ int quantity;
+ qmask = get_qlist(BIT(Q_DECLINATION));
+ if (!qmask) return; /* no quantities found - error already reported */
+
+ if (qmask == BIT(Q_DEFAULT)) {
+ default_grade(pcs);
+ return;
+ }
+ sd = read_numeric(false);
+ if (sd <= (real)0.0) {
+ compile_diagnostic(DIAG_ERR|DIAG_SKIP|DIAG_COL, /*Standard deviation must be positive*/48);
+ return;
+ }
+ units = get_units(qmask, false);
+ if (units == UNITS_NULL) return;
+
+ sd *= factor_tab[units];
+ variance = sqrd(sd);
+
+ for (quantity = 0, m = BIT(quantity); m <= qmask; quantity++, m <<= 1)
+ if (qmask & m) pcs->Var[quantity] = variance;
+}
+
+static void
cmd_team(void)
{
string name = S_INIT;
@@ -2340,7 +2411,6 @@
static void
cmd_copyright(void)
{
- skipblanks();
filepos fp;
get_pos(&fp);
unsigned y1 = read_uint_raw(DIAG_WARN|DIAG_UINT, /*Invalid year*/534, NULL);
@@ -2798,7 +2868,6 @@
// Add extra 0 so `*require 1.4.10.1` fails with cavern version 1.4.10.
const unsigned version[] = {COMMAVERSION, 0};
- skipblanks();
filepos fp;
get_pos(&fp);
@@ -3122,7 +3191,7 @@
cmd_flags,
cmd_include,
cmd_infer,
- skipline, /*cmd_instrument,*/
+ cmd_instrument,
#ifndef NO_DEPRECATED
cmd_prefix,
#endif
@@ -3174,7 +3243,6 @@
case CMD_DATA:
case CMD_DATE:
case CMD_DECLINATION:
- case CMD_DEFAULT:
case CMD_FLAGS:
case CMD_INFER:
case CMD_INSTRUMENT:
@@ -3186,13 +3254,41 @@
case CMD_TITLE:
case CMD_TRUNCATE:
case CMD_UNITS:
- /* These can occur between *begin and *export */
+ /* These can all occur between *begin and *export */
break;
+ case CMD_DEFAULT: {
+ // Issue warning here before we skipblanks().
+ static int default_depr_count = 0;
+ if (default_depr_count < 5) {
+ /* TRANSLATORS: If you're unsure what "deprecated" means, see:
+ * https://en.wikipedia.org/wiki/Deprecation */
+ compile_diagnostic(DIAG_WARN|DIAG_TOKEN, /**DEFAULT is deprecated - use *CALIBRATE/DATA/SD/UNITS with argument DEFAULT instead*/20);
+ if (++default_depr_count == 5)
+ compile_diagnostic(DIAG_INFO, /*Further uses of this deprecated feature will not be reported*/95);
+ }
+ /* Can occur between *begin and *export */
+ break;
+ }
+ case CMD_PREFIX: {
+ // Issue warning here before we skipblanks().
+ static int prefix_depr_count = 0;
+ if (prefix_depr_count < 5) {
+ /* TRANSLATORS: If you're unsure what "deprecated" means, see:
+ * https://en.wikipedia.org/wiki/Deprecation */
+ compile_diagnostic(DIAG_WARN|DIAG_TOKEN, /**prefix is deprecated - use *begin and *end instead*/109);
+ if (++prefix_depr_count == 5)
+ compile_diagnostic(DIAG_INFO, /*Further uses of this deprecated feature will not be reported*/95);
+ }
+ f_export_ok = false;
+ break;
+ }
default:
/* NB: additional handling for "*begin " in cmd_begin */
f_export_ok = false;
break;
}
+ skipblanks();
+
cmd_funcs[cmdtok]();
}
diff -Nru survex-1.4.17/src/commands.h survex-1.4.22/src/commands.h
--- survex-1.4.17/src/commands.h 2025-03-14 22:18:03.000000000 +0000
+++ survex-1.4.22/src/commands.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,20 +13,23 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "str.h"
/* Fix station if not already fixed.
*
+ * stn_offset gives column info - it should be the file offset (offset member
+ * of a filepos) or -1 for no column info.
+ *
* Returns:
* 0 if not already fixed
* 1 if already fixed at the same coordinates
* -1 if already fixed but at different coordinates
*/
-int fix_station(prefix *fix_name, const double* coords);
+int fix_station(prefix *fix_name, const double* coords, long stn_offset);
/* Fix station with variance.
*
@@ -57,7 +60,6 @@
void pop_settings(void);
void invalidate_pj_cached(void);
void report_declination(settings *p);
-void set_declination_location(real x, real y, real z, const char *proj_str);
void copy_on_write_meta(settings *s);
@@ -86,5 +88,6 @@
#define TABSIZE(T) ((sizeof(T) / sizeof(sztok)) - 1)
-void scan_compass_station_name(prefix *stn);
+void update_separator_map_for_foreign_name(const char* name);
+void update_separator_map_for_foreign_format(const short *t);
void update_output_separator(void);
diff -Nru survex-1.4.17/src/datain.c survex-1.4.22/src/datain.c
--- survex-1.4.17/src/datain.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/datain.c 2026-06-23 20:53:55.000000000 +0000
@@ -1,6 +1,6 @@
/* datain.c
* Reads in survey files, dealing with special characters, keywords & data
- * Copyright (C) 1991-2025 Olly Betts
+ * Copyright (C) 1991-2026 Olly Betts
* Copyright (C) 2004 Simeon Warner
*
* This program is free software; you can redistribute it and/or modify
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -143,6 +143,67 @@
fatalerror_in_file(file.filename, 0, /*Error reading file*/18);
}
+void
+set_declination_location(real x, real y, real z, const char *proj_str,
+ filepos *fp)
+{
+ /* Convert to WGS84 lat long. */
+ PJ *transform = proj_create_crs_to_crs(PJ_DEFAULT_CTX,
+ proj_str,
+ WGS84_DATUM_STRING,
+ NULL);
+ if (transform) {
+ /* Normalise the output order so x is longitude and y latitude - by
+ * default new PROJ has them switched for EPSG:4326 which just seems
+ * confusing.
+ */
+ PJ* pj_norm = proj_normalize_for_visualization(PJ_DEFAULT_CTX,
+ transform);
+ proj_destroy(transform);
+ transform = pj_norm;
+ }
+
+ if (proj_angular_input(transform, PJ_FWD)) {
+ /* Input coordinate system expects radians. */
+ x = rad(x);
+ y = rad(y);
+ }
+
+ PJ_COORD coord = {{x, y, z, HUGE_VAL}};
+ coord = proj_trans(transform, PJ_FWD, coord);
+ x = coord.xyzt.x;
+ y = coord.xyzt.y;
+ z = coord.xyzt.z;
+
+ if (x == HUGE_VAL || y == HUGE_VAL || z == HUGE_VAL) {
+ int diag_flags = DIAG_ERR;
+ if (fp) diag_flags |= DIAG_FROM(*fp);
+ compile_diagnostic(diag_flags, /*Failed to convert coordinates: %s*/436,
+ proj_context_errno_string(PJ_DEFAULT_CTX,
+ proj_errno(transform)));
+ /* Set dummy values which are finite. */
+ x = y = z = 0;
+ }
+ proj_destroy(transform);
+
+ report_declination(pcs);
+
+ double lon = rad(x);
+ double lat = rad(y);
+ pcs->z[Q_DECLINATION] = HUGE_REAL;
+ pcs->dec_lat = lat;
+ pcs->dec_lon = lon;
+ pcs->dec_alt = z;
+ pcs->dec_filename = file.filename;
+ pcs->dec_line = file.line;
+ pcs->dec_context = grab_line();
+ /* Invalidate cached declination. */
+ pcs->declination = HUGE_REAL;
+ /* Invalidate cached grid convergence values. */
+ pcs->convergence = HUGE_REAL;
+ pcs->input_convergence = HUGE_REAL;
+}
+
static void
report_parent(parse * p) {
if (p->parent)
@@ -396,7 +457,7 @@
va_list ap;
int severity = (diag_flags & DIAG_SEVERITY_MASK);
va_start(ap, en);
- v_report(severity, pfx->filename, pfx->line, 0, en, ap);
+ v_report(severity, pfx->filename, pfx->line, pfx->column, en, ap);
va_end(ap);
caret_width = 0;
}
@@ -612,14 +673,57 @@
update_output_separator();
}
-/* For reading Compass MAK files which have a freeform syntax */
+/* For reading Compass MAK files which have a free-form syntax */
+static void
+skipblanks_mak(void)
+{
+ while (true) {
+ skipblanks();
+ if (ch == '/') {
+ // Comment which spans to the next `/` or the end of the line.
+ // Their syntax is very free-form - e.g. a comment can occur in the
+ // middle of a filename!
+ do {
+ nextch();
+ } while (!isEol(ch) && ch != '/' && ch != EOF);
+ if (ch == '/') nextch();
+ if (isEol(ch)) process_eol();
+ continue;
+ }
+ if (!isEol(ch) || ch == EOF)
+ return;
+ process_eol();
+ }
+}
+
+static void
+nextch_mak(void)
+{
+ nextch();
+ skipblanks_mak();
+}
+
+// Like nextch_mak() but doesn't skip blanks.
static void
nextch_handling_eol(void)
{
- nextch();
- while (ch != EOF && isEol(ch)) {
- process_eol();
- }
+ nextch();
+ while (true) {
+ if (ch == '/') {
+ // Comment which spans to the next `/` or the end of the line.
+ // Their syntax is very free-form - e.g. a comment can occur in the
+ // middle of a filename!
+ do {
+ nextch();
+ } while (!isEol(ch) && ch != '/' && ch != EOF);
+ if (ch == '/') nextch();
+ if (isEol(ch)) process_eol();
+ continue;
+ }
+ if (!isEol(ch) || ch == EOF)
+ return;
+ process_eol();
+ }
}
static bool
@@ -658,6 +762,8 @@
static void
data_file_compass_dat_or_clp(bool is_clp)
{
+ // Format documentation:
+ // https://fountainware.com/compass/HTML_Help/Compass_Editor/surveyfileformat.htm
initialise_common_compass_settings();
default_units(pcs);
default_calib(pcs);
@@ -833,6 +939,8 @@
static void
data_file_compass_mak(void)
{
+ // Format documentation:
+ // https://fountainware.com/compass/HTML_Help/Project_Manager/projectfileformat.htm
initialise_common_compass_settings();
short *t = pcs->Translate;
// In a Compass MAK file a station name can't contain these three
@@ -858,19 +966,29 @@
int len;
} *folder_stack = NULL;
+ skipblanks_mak();
while (ch != EOF && !FERROR(file.fh)) {
switch (ch) {
case '#': {
- /* include a file */
+ /* Include a file. */
int ch_store;
string dat_fnm = S_INIT;
- nextch_handling_eol();
+ while (isEol(ch)) process_eol();
+ nextch_mak();
+ int trim_len = 0;
while (ch != ',' && ch != ';' && ch != EOF) {
- while (isEol(ch)) process_eol();
s_appendch(&dat_fnm, (char)ch);
+ if (!isBlank(ch)) trim_len = s_len(&dat_fnm);
+ // Compass ignores embedded newlines and comments in
+ // filenames here (as documented!) The documentation
+ // suggests this is also true for spaces, but experimentation
+ // shows that embedded spaces are in fact included in the
+ // filename.
nextch_handling_eol();
}
- if (!s_empty(&dat_fnm)) {
+ if (trim_len > 0) {
+ // However whitespace after the filename is not included.
+ s_truncate(&dat_fnm, trim_len);
if (base_utm_zone) {
// Process the previous @ command using the datum from &.
char *proj_str = img_compass_utm_proj_str(datum,
@@ -884,7 +1002,7 @@
file.lpos = base_lpos;
file.prev_line_len = 0; // Not used for Compass MAK.
set_declination_location(base_x, base_y, base_z,
- proj_str);
+ proj_str, NULL);
file.line = saved_line;
file.lpos = saved_lpos;
if (!pcs->proj_str) {
@@ -901,16 +1019,16 @@
ch_store = ch;
data_file(s_str(&path), s_str(&dat_fnm));
ch = ch_store;
- s_free(&dat_fnm);
}
+ s_free(&dat_fnm);
while (ch != ';' && ch != EOF) {
- nextch_handling_eol();
+ nextch_mak();
filepos fp_name;
get_pos(&fp_name);
prefix *name = read_prefix(PFX_STATION|PFX_OPT);
if (name) {
- scan_compass_station_name(name);
- skipblanks();
+ update_separator_map_for_foreign_name(prefix_ident(name));
+ skipblanks_mak();
if (ch == '[') {
/* fixed pt */
real coords[3];
@@ -920,28 +1038,28 @@
// from 0.0 at these points) so we do too.
name->sflags |= BIT(SFLAGS_FIXED) |
BIT(SFLAGS_ENTRANCE);
- nextch_handling_eol();
+ nextch_mak();
if (ch == 'F' || ch == 'f') {
in_feet = true;
- nextch_handling_eol();
+ nextch_mak();
} else if (ch == 'M' || ch == 'm') {
- nextch_handling_eol();
+ nextch_mak();
} else {
compile_diagnostic(DIAG_ERR|DIAG_COL, /*Expecting “%s” or “%s”*/103, "F", "M");
}
while (!isdigit(ch) && ch != '+' && ch != '-' &&
ch != '.' && ch != ']' && ch != EOF) {
- nextch_handling_eol();
+ nextch_mak();
}
coords[0] = read_numeric(false);
while (!isdigit(ch) && ch != '+' && ch != '-' &&
ch != '.' && ch != ']' && ch != EOF) {
- nextch_handling_eol();
+ nextch_mak();
}
coords[1] = read_numeric(false);
while (!isdigit(ch) && ch != '+' && ch != '-' &&
ch != '.' && ch != ']' && ch != EOF) {
- nextch_handling_eol();
+ nextch_mak();
}
coords[2] = read_numeric(false);
if (in_feet) {
@@ -949,7 +1067,7 @@
coords[1] *= METRES_PER_FOOT;
coords[2] *= METRES_PER_FOOT;
}
- int fix_result = fix_station(name, coords);
+ int fix_result = fix_station(name, coords, fp_name.offset);
if (fix_result) {
filepos fp;
get_pos(&fp);
@@ -962,10 +1080,9 @@
set_pos(&fp);
compile_diagnostic_pfx(DIAG_INFO, name, /*Previously fixed or equated here*/493);
}
- while (ch != ']' && ch != EOF) nextch_handling_eol();
+ while (ch != ']' && ch != EOF) nextch_mak();
if (ch == ']') {
- nextch_handling_eol();
- skipblanks();
+ nextch_mak();
}
} else {
/* FIXME: link station - ignore for now */
@@ -973,18 +1090,18 @@
* can be "reused", which is problematic... */
}
while (ch != ',' && ch != ';' && ch != EOF)
- nextch_handling_eol();
+ nextch_mak();
}
}
+ if (ch == ';') nextch_mak();
break;
}
case '$':
/* UTM zone */
- nextch();
- skipblanks();
+ nextch_mak();
utm_zone = read_int(-60, 60);
- skipblanks();
- if (ch == ';') nextch_handling_eol();
+ skipblanks_mak();
+ if (ch == ';') nextch_mak();
update_proj_str:
if (!pcs->next || pcs->proj_str != pcs->next->proj_str)
@@ -1008,16 +1125,15 @@
string p = S_INIT;
int datum_len = 0;
int c = 0;
- nextch();
- skipblanks();
+ nextch_mak();
while (ch != ';' && !isEol(ch)) {
s_appendch(&p, (char)ch);
++c;
/* Ignore trailing blanks. */
if (!isBlank(ch)) datum_len = c;
- nextch();
+ nextch_handling_eol();
}
- if (ch == ';') nextch_handling_eol();
+ if (ch == ';') nextch_mak();
datum = img_parse_compass_datum_string(s_str(&p), datum_len);
s_free(&p);
goto update_proj_str;
@@ -1030,15 +1146,15 @@
folder_stack->len = s_len(&path);
if (!s_empty(&path))
s_appendch(&path, FNM_SEP_LEV);
- nextch();
+ nextch_mak();
while (ch != ';' && !isEol(ch)) {
if (ch == '\\') {
ch = FNM_SEP_LEV;
}
s_appendch(&path, (char)ch);
- nextch();
+ nextch_mak();
}
- if (ch == ';') nextch_handling_eol();
+ if (ch == ';') nextch_mak();
break;
}
case ']': {
@@ -1051,9 +1167,8 @@
s_truncate(&path, folder_stack->len);
folder_stack = folder_stack->next;
free(p);
- nextch();
- skipblanks();
- if (ch == ';') nextch_handling_eol();
+ nextch_mak();
+ if (ch == ';') nextch_mak();
break;
}
case '@': {
@@ -1061,23 +1176,23 @@
* UTM East, UTM North, Elevation, UTM Zone, Convergence Angle
* The first three are in metres.
*/
- nextch();
+ nextch_mak();
real easting = read_numeric(false);
- skipblanks();
+ skipblanks_mak();
if (ch != ',') break;
- nextch();
+ nextch_mak();
real northing = read_numeric(false);
- skipblanks();
+ skipblanks_mak();
if (ch != ',') break;
- nextch();
+ nextch_mak();
real elevation = read_numeric(false);
- skipblanks();
+ skipblanks_mak();
if (ch != ',') break;
- nextch();
+ nextch_mak();
int zone = read_int(-60, 60);
- skipblanks();
+ skipblanks_mak();
if (ch != ',') break;
- nextch();
+ nextch_mak();
real convergence_angle = read_numeric(false);
/* We've now read them all successfully so store them. The
* Compass documentation gives an example which specifies the
@@ -1092,12 +1207,57 @@
// We ignore the stored UTM grid convergence angle since we get
// this from PROJ.
(void)convergence_angle;
- if (ch == ';') nextch_handling_eol();
+ if (ch == ';') nextch_mak();
+ break;
+ }
+ case '%':
+ // UTM convergence angle (file-level). We quietly ignore this
+ // and always calculate the convergence angle instead.
+ case '*':
+ // UTM convergence angle (non file-level). We quietly ignore
+ // this and always calculate the convergence angle instead.
+ case '!':
+ // Project parameters. These are mostly only really meaningful
+ // inside Compass so we quietly ignore them.
+ while (ch != ';' && ch != EOF) {
+ nextch_mak();
+ }
+ if (ch == ';')
+ nextch_mak();
+ break;
+ default: {
+ // Warn for unknown commands. Compass actually quietly ignores
+ // them but if we do the same it risks hiding missing support for
+ // new commands and any bugs in our parsing. It also risks
+ // hiding typos in user-entered data.
+ filepos fp;
+ get_pos(&fp);
+ string p = S_INIT;
+ int trimmed_len = 0;
+ int c = 0;
+ while (ch != ';' && ch != EOF) {
+ s_appendch(&p, (char)ch);
+ ++c;
+ /* Ignore trailing blanks. */
+ if (!isBlank(ch)) trimmed_len = c;
+ nextch_mak();
+ }
+ if (ch == ';') {
+ s_appendch(&p, (char)ch);
+ } else {
+ s_truncate(&p, trimmed_len);
+ }
+ filepos fp_save;
+ get_pos(&fp_save);
+ set_pos(&fp);
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Unknown command “%s”*/12, s_str(&p));
+ set_pos(&fp_save);
+ s_free(&p);
+ if (ch == ';') {
+ nextch_handling_eol();
+ }
break;
}
- default:
- nextch_handling_eol();
- break;
}
}
@@ -1339,8 +1499,8 @@
// Here we rely on the integer values of the reading codes used fitting in
// a byte so assert that is the case.
-typedef int compiletimeassert_order_byte_encoding_ok[
- (WallsSRVTape|WallsSRVComp|WallsSRVClino|Dx|Dy|Dz) < 0x100 ? 1 : -1];
+static_assert((WallsSRVTape|WallsSRVComp|WallsSRVClino|Dx|Dy|Dz) < 0x100,
+ "WallsSRV* codes don't all fit in a byte");
static const sztok walls_order_tab[] = {
{"AD", WALLS_ORDER_CT(WallsSRVComp, WallsSRVTape, 0)},
@@ -1362,6 +1522,21 @@
{NULL, -1}
};
+enum {
+ WALLS_TAPE_IT, // Default.
+ WALLS_TAPE_IS,
+ WALLS_TAPE_SS,
+ WALLS_TAPE_ST
+};
+
+static const sztok walls_tape_tab[] = {
+ {"IS", WALLS_TAPE_IS},
+ {"IT", WALLS_TAPE_IT},
+ {"SS", WALLS_TAPE_SS},
+ {"ST", WALLS_TAPE_ST},
+ {NULL, -1}
+};
+
// In #FLAG Walls seems to only document `/` but based on real-world use also
// allows `\`. FIXME: Are there other places that allow `\`?
static inline bool isWallsSlash(int c) { return c == '/' || c == '\\'; }
@@ -1373,21 +1548,30 @@
// NULL for any level not currently set (all NULL by default).
char* prefix[3];
- // Data order for CT legs.
- reading data_order_ct[8];
-
- // Data order for RECT legs (also used for #Fix coordinate order).
- reading data_order_rect[7];
+ // Current (computed) data order.
+ reading data_order[8];
// Is this from SAVE in .OPTIONS / #Units?
bool explicit;
+ // RECT in effect?
+ bool rect;
+
// Flags to apply to stations in #FIX.
int fix_station_flags;
// Default Compass-compatible flags to apply to legs.
unsigned long compass_dat_flags;
+ // Current TAPE= setting.
+ int tape_method;
+
+ // Current ORDER= setting for CT data.
+ int order_ct;
+
+ // Current ORDER= setting for RECT data.
+ int order_rect;
+
// Current path including trailing directory separator if one is needed.
string path;
@@ -1400,27 +1584,33 @@
// prefix[3]
{ NULL, NULL, NULL },
- // data_order_ct[8]
+ // data_order[8]
{
WallsSRVFr, WallsSRVTo, WallsSRVTape, WallsSRVComp, WallsSRVClino,
WallsSRVHeights, WallsSRVExtras, End
},
- // data_order_rect[7]
- {
- WallsSRVFr, WallsSRVTo, Dx, Dy, Dz,
- WallsSRVExtras, End
- },
-
// explicit
false,
+ // rect
+ false,
+
// fix_station_flags
0,
// compass_dat_flags
0,
+ // tape_method
+ WALLS_TAPE_IT,
+
+ // order_ct
+ WALLS_ORDER_CT(WallsSRVTape, WallsSRVComp, WallsSRVClino),
+
+ // order_rect
+ WALLS_ORDER_CT(Dx, Dy, Dz) & ((1 << 24) - 1),
+
// path
S_INIT,
@@ -1517,6 +1707,13 @@
t['+'] |= SPECIAL_PLUS;
pcs->Translate = t;
+ static bool separator_map_updated_for_walls = false;
+ if (!separator_map_updated_for_walls) {
+ separator_map_updated_for_walls = true;
+ update_separator_map_for_foreign_format(t);
+ update_output_separator();
+ }
+
pcs->begin_lineno = 0;
// Spec says "maximum of eight characters" - we currently allow arbitrarily
// many.
@@ -1529,6 +1726,47 @@
}
static void
+walls_update_data_order(void)
+{
+ bool rect = p_walls_options->rect;
+ reading* p = p_walls_options->data_order + 2;
+ int order;
+ int style;
+ if (rect) {
+ // "RECT" order.
+ style = STYLE_CARTESIAN;
+ order = p_walls_options->order_rect;
+ } else {
+ // "CT" order.
+ style = STYLE_NORMAL;
+ order = p_walls_options->order_ct;
+ }
+ while (order) {
+ *p++ = (order & 0xff);
+ order >>= 8;
+ }
+ if (!rect) {
+ if (p_walls_options->tape_method == WALLS_TAPE_SS &&
+ (p - p_walls_options->data_order) == 4) {
+ // Walls manual recommends recording diving data using `TAPE=SS
+ // ORDER=DA` or `TAPE=SS ORDER=AD`, so we map this combination to
+ // Survex's diving style.
+ style = STYLE_DIVING;
+ *p++ = WallsSRVFrDepth;
+ *p++ = WallsSRVToDepth;
+ } else {
+ *p++ = WallsSRVHeights;
+ }
+ }
+ *p++ = WallsSRVExtras;
+ *p = End;
+
+ pcs->ordering = p_walls_options->data_order;
+
+ pcs->recorded_style = pcs->style = style;
+}
+
+static void
walls_reset(void)
{
// "[S]et all parameters (including the current name prefix) to their
@@ -1539,13 +1777,12 @@
default_calib(pcs);
// FIXME: pcs->z[Q_DECLINATION] = HUGE_REAL;
- pcs->recorded_style = pcs->style = STYLE_NORMAL;
- pcs->ordering = p_walls_options->data_order_ct;
-
for (int i = 0; i < 3; ++i) {
free(p_walls_options->prefix[i]);
}
*p_walls_options = walls_options_default;
+
+ walls_update_data_order();
}
static real
@@ -1580,13 +1817,15 @@
static real
read_walls_distance(bool f_optional, real default_units)
{
+ bool f_decimal_point = false;
real distance;
+ skipblanks();
if (ch == 'i' || ch == 'I') {
// Length specified in inches only, e.g. `i6` is 6 inches.
distance = 0.0;
goto inches_only;
}
- distance = read_numeric(f_optional);
+ distance = read_number_or_int(f_optional, false, &f_decimal_point);
if (distance != HUGE_REAL) {
if (isalpha((unsigned char)ch)) {
inches_only:
@@ -1602,16 +1841,28 @@
distance *= METRES_PER_FOOT;
break;
case 'I':
- if (isdigit(ch)) {
- real inches = read_numeric(false);
- distance += inches / 12.0;
+ if (!f_decimal_point) {
+ // 'i' is only valid if the first part does not contain a
+ // decimal point (e.g. 10.0i6 is invalid).
+ if (isdigit(ch)) {
+ real inches = read_numeric(false);
+ distance += inches / 12.0;
+ }
+ distance *= METRES_PER_FOOT;
+ break;
}
- distance *= METRES_PER_FOOT;
- break;
+ // FALLTHRU
default:
bad_distance_units:
- compile_diagnostic(DIAG_ERR|DIAG_COL,
- /*Expecting “%s” or “%s”*/103, "F", "M");
+ if (f_decimal_point) {
+ compile_diagnostic(DIAG_ERR|DIAG_TOKEN,
+ /*Expecting “%s” or “%s”*/103, "F", "M");
+ } else {
+ compile_diagnostic(DIAG_ERR|DIAG_TOKEN,
+ /*Expecting “%s”, “%s”, or “%s”*/188, "F", "I", "M");
+ }
+ // Skip past rest of this field to try to reduce error avalanche.
+ while (!isBlank(ch) && !isEol(ch)) nextch();
}
} else {
distance *= default_units;
@@ -1654,15 +1905,7 @@
nextch();
}
- val_h = read_walls_distance(false, true);
- if (ch == 'F' || ch == 'f') {
- val_h *= METRES_PER_FOOT;
- nextch();
- } else if (ch == 'M' || ch == 'm') {
- nextch();
- } else {
- val_h *= pcs->units[Q_LENGTH];
- }
+ val_h = read_walls_distance(false, pcs->units[Q_LENGTH]);
}
bool rms_v = rms_h;
real val_v = val_h;
@@ -1749,7 +1992,7 @@
// Walls #FLAG values seem to be arbitrary strings - we attempt to infer
// suitable Survex station flags from a few key words.
static int
-parse_walls_flags(bool check_for_quote)
+walls_parse_flags(bool check_for_quote)
{
//#define DEBUG_WALLS_FLAGS
int station_flags = 0;
@@ -1775,8 +2018,6 @@
get_token();
if (S_EQ(&uctoken, "ENTRANCE")) {
station_flags |= BIT(SFLAGS_ENTRANCE);
- } else if (S_EQ(&uctoken, "FIX")) {
- station_flags |= BIT(SFLAGS_FIXED);
} else if (s_empty(&token)) {
nextch();
#ifdef DEBUG_WALLS_FLAGS
@@ -1791,7 +2032,8 @@
S_EQ(&uctoken, "SHAFT") ||
S_EQ(&uctoken, "UPPER") ||
S_EQ(&uctoken, "CAVE") ||
- S_EQ(&uctoken, "GPS") || // -> FIXED flag?
+ S_EQ(&uctoken, "FIX") || // FIXED flag is set based on #FIX.
+ S_EQ(&uctoken, "GPS") ||
S_EQ(&uctoken, "SURVEYED") ||
S_EQ(&uctoken, "BATS") ||
S_EQ(&uctoken, "MYOTIS") ||
@@ -1818,7 +2060,7 @@
}
static void
-parse_walls_segment(unsigned long* p_compass_dat_flags)
+walls_parse_segment(unsigned long* p_compass_dat_flags)
{
*p_compass_dat_flags = 0;
const unsigned long valid_compass_dat_flags =
@@ -1890,8 +2132,12 @@
}
static void
-parse_options(void)
+walls_parse_options(void)
{
+ // Track if we need to call walls_update_data_order(). We postpone
+ // doing so until after we've parsed a set of options to avoid some
+ // redundant calls.
+ bool update_data_order = false;
skipblanks();
while (!isEol(ch)) {
get_token();
@@ -2095,7 +2341,7 @@
set_pos(&fp);
}
break;
- case WALLS_UNITS_OPT_ORDER:
+ case WALLS_UNITS_OPT_ORDER: {
get_token();
int order = match_tok(walls_order_tab,
TABSIZE(walls_order_tab));
@@ -2103,24 +2349,15 @@
compile_diagnostic(DIAG_ERR|DIAG_TOKEN, /*Data style “%s” unknown*/65, s_str(&token));
break;
}
- reading* p;
bool rect = (order & (1 << 24));
if (rect) {
- order &= ((1 << 24) - 1);
- // "RECT" order.
- p = p_walls_options->data_order_rect + 2;
+ p_walls_options->order_rect = order & ((1 << 24) - 1);
} else {
- // "CT" order.
- p = p_walls_options->data_order_ct + 2;
- }
- while (order) {
- *p++ = (order & 0xff);
- order >>= 8;
+ p_walls_options->order_ct = order;
}
- if (!rect) *p++ = WallsSRVHeights;
- *p++ = WallsSRVExtras;
- *p = End;
+ update_data_order = true;
break;
+ }
case WALLS_UNITS_OPT_DECL:
pcs->z[Q_DECLINATION] = -read_walls_angle(M_PI / 180.0);
break;
@@ -2164,8 +2401,8 @@
// North.
pcs->cartesian_rotation = read_walls_angle(M_PI / 180.0);
} else {
- pcs->recorded_style = pcs->style = STYLE_CARTESIAN;
- pcs->ordering = p_walls_options->data_order_rect;
+ p_walls_options->rect = true;
+ update_data_order = true;
}
break;
case WALLS_UNITS_OPT_CASE:
@@ -2186,8 +2423,8 @@
}
break;
case WALLS_UNITS_OPT_CT:
- pcs->recorded_style = pcs->style = STYLE_NORMAL;
- pcs->ordering = p_walls_options->data_order_ct;
+ p_walls_options->rect = false;
+ update_data_order = true;
break;
case WALLS_UNITS_OPT_PREFIX:
case WALLS_UNITS_OPT_PREFIX2:
@@ -2215,11 +2452,20 @@
s_free(&val);
break;
}
- case WALLS_UNITS_OPT_TAPE:
+ case WALLS_UNITS_OPT_TAPE: {
get_token();
- /* FIXME: Implement different taping methods? */
- /* IT, SS, IS, ST (default is IT). */
+ int tape_method = match_tok(walls_tape_tab,
+ TABSIZE(walls_tape_tab));
+ if (tape_method < 0) {
+ compile_diagnostic(DIAG_ERR|DIAG_TOKEN,
+ /*Expecting “%s”, “%s”, “%s”, or “%s”*/189,
+ "IS", "IT", "SS", "ST");
+ break;
+ }
+ p_walls_options->tape_method = tape_method;
+ update_data_order = true;
break;
+ }
case WALLS_UNITS_OPT_TYPEAB:
get_token();
if (s_str(&uctoken)[0] == 'N') {
@@ -2301,7 +2547,7 @@
skipblanks();
if (ch == '=') {
nextch();
- p_walls_options->fix_station_flags = parse_walls_flags(true);
+ p_walls_options->fix_station_flags = walls_parse_flags(true);
} else {
p_walls_options->fix_station_flags = 0;
}
@@ -2368,11 +2614,10 @@
// pcs->z[Q_BACKGRADIENT] = pcs->z[Q_GRADIENT] = -rad(read_numeric(false));
// pcs->z[Q_LENGTH] = -METRES_PER_FOOT * read_numeric(false);
- /* Original "Inclination Units" were "Depth Gauge". */
- //pcs->recorded_style = STYLE_DIVING;
- //skipline();
skipblanks();
}
+
+ if (update_data_order) walls_update_data_order();
}
static void
@@ -2391,13 +2636,7 @@
// Default flags assigned to stations in #FIX.
int fix_station_flags = p_walls_options->fix_station_flags;
- // FIXME: We need to update the separator_map to reflect what can be
- // SPECIAL_NAMES. Or should we use the Compass approach and base this
- // on what's actually used? The first approach would pick the separator
- // from {':', ';', ',', '#', space}; the latter would pick '.' if
- // the station naming recommendations in the Walls documentation are
- // followed.
- update_output_separator();
+ walls_update_data_order();
/* errors in nested functions can longjmp here */
if (setjmp(jbSkipLine)) {
@@ -2406,11 +2645,6 @@
process_eol();
}
- if (pcs->style == STYLE_NORMAL)
- pcs->ordering = p_walls_options->data_order_ct;
- else
- pcs->ordering = p_walls_options->data_order_rect;
-
while (ch != EOF && !FERROR(file.fh)) {
next_line:
skipblanks();
@@ -2418,7 +2652,8 @@
if (ch == ';' || isEol(ch)) {
skipline();
process_eol();
- } else if (pcs->style == STYLE_NORMAL) {
+ } else if (pcs->style != STYLE_CARTESIAN) {
+ // STYLE_NORMAL and STYLE_DIVING.
data_normal();
} else {
// Set up Dz in case it's omitted.
@@ -2552,7 +2787,7 @@
switch (directive) {
case WALLS_CMD_UNITS:
- parse_options();
+ walls_parse_options();
break;
case WALLS_CMD_DATE: {
int year, month, day;
@@ -2584,6 +2819,7 @@
}
case WALLS_CMD_FIX: {
real coords[3];
+ skipblanks();
filepos fp_stn;
get_pos(&fp_stn);
prefix *name = read_walls_station(p_walls_options->prefix,
@@ -2592,18 +2828,18 @@
// Or E/S instead of W/N.
enum { UNKNOWN, LATLONG, UTM } format = UNKNOWN;
- for (int i = 0; i < 3; ++i) {
- // The order of the coordinates is specified by data_order_rect.
- int compiletimeassert_dxdydz[Dy - Dx == 1 && Dz - Dy == 1 ? 1 : -1];
- (void)compiletimeassert_dxdydz;
- int dim = p_walls_options->data_order_rect[i + 2] - Dx;
- if ((unsigned)dim > 2) {
- // FIXME: Survex doesn't currently support horizontal-only
- // fixes.
- coords[2] = 0.0;
- break;
- }
-
+ // The order of the coordinates is specified by order_rect.
+ int order = p_walls_options->order_rect;
+ if ((order & 0xff0000) == 0) {
+ // FIXME: Survex doesn't currently support horizontal-only
+ // fixes.
+ coords[2] = 0.0;
+ }
+ while (order) {
+ static_assert(Dy - Dx == 1 && Dz - Dy == 1,
+ "Dx, Dy, Dz not consecutive integers");
+ int dim = (order & 0xff) - Dx;
+ order >>= 8;
real coord;
skipblanks();
int upper_ch = toupper(ch);
@@ -2622,13 +2858,13 @@
e_or_w ? "N" : "E", e_or_w ? "S" : "W");
}
nextch();
- coord = read_number(false, true);
- if (ch == ':') {
- // FIXME: This accepts decimals on any component e.g `N40.1:1:1`.
+ bool f_decimal_point = false;
+ coord = read_number_or_int(false, true, &f_decimal_point);
+ if (!f_decimal_point && ch == ':') {
nextch();
- real minutes = read_number(false, true);
+ real minutes = read_number_or_int(false, true, &f_decimal_point);
coord += minutes / 60.0;
- if (ch == ':') {
+ if (!f_decimal_point && ch == ':') {
nextch();
real seconds = read_number(false, true);
coord += seconds / 3600.0;
@@ -2714,7 +2950,7 @@
if (var_xy == 0.0 && var_z == 0.0) {
// Exact fix.
- int fix_result = fix_station(name, coords);
+ int fix_result = fix_station(name, coords, fp_stn.offset);
if (fix_result) {
filepos fp;
get_pos(&fp);
@@ -2759,6 +2995,10 @@
// store a list of the stations we note the position, scan ahead
// and parse the flag, then come back and actually parse the
// stations and apply the flag.
+
+ // Declare here to workaround error on macOS 14 (compiler bug?)
+ filepos fp_end;
+
skipblanks();
if (isEol(ch) || isComm(ch)) {
// Just "#FLAG" with no arguments clears the default flag.
@@ -2766,6 +3006,7 @@
break;
}
bool setting_default_flag = isWallsSlash(ch);
+ int station_flags = 0;
filepos fp;
get_pos(&fp);
@@ -2784,22 +3025,25 @@
//
// These seem to occur in real data, but we ignore
// unknown flag names, so it seems reasonable to just
- // ignore these too. Or maybe we should warn? FIXME
- process_eol();
- goto next_line;
+ // ignore these too (except that we want to read them
+ // for syntax-checking purposes and to handle #FLAG
+ // suppressing unused fix point warnings).
+ //
+ // Or maybe we should warn? FIXME
+ goto read_flagged_stations;
}
nextch();
}
nextch();
- int station_flags = parse_walls_flags(false);
+ station_flags = walls_parse_flags(false);
if (setting_default_flag) {
fix_station_flags = station_flags;
break;
}
+read_flagged_stations:
// Go back and read stations and apply the flags.
- filepos fp_end;
get_pos(&fp_end);
set_pos(&fp);
// It seems / and \ can't be used in #flag station names?
@@ -2808,12 +3052,12 @@
int save_translate_bslash = pcs->Translate['\\'];
pcs->Translate['/'] = 0;
pcs->Translate['\\'] = 0;
- while (!isWallsSlash(ch)) {
+ while (!isWallsSlash(ch) && !isEol(ch) && !isComm(ch)) {
prefix *name = read_walls_station(p_walls_options->prefix,
false, NULL);
name->sflags |= station_flags;
// Suppress "unused fixed point" warnings for stations in #flag.
- name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ name->sflags |= BIT(SFLAGS_USED);
skipblanks();
}
@@ -2846,22 +3090,44 @@
// "unused fixed point" warnings.
prefix *name = read_walls_station(p_walls_options->prefix,
false, NULL);
- name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ name->sflags |= BIT(SFLAGS_USED);
skipline();
break;
}
case WALLS_CMD_SEGMENT:
- parse_walls_segment(&p_walls_options->compass_dat_flags);
+ walls_parse_segment(&p_walls_options->compass_dat_flags);
break;
case WALLS_CMD_SYMBOL:
- // Now to draw symbols. Not really appropriate here as this is
+ // How to draw symbols. Not really appropriate here as this is
// presentation information, so we just ignore it.
skipline();
break;
- case WALLS_CMD_NULL:
+ case WALLS_CMD_NULL: {
+ // Walls quietly accepts some apparently invalid directive lines.
+ // The exact rules are hard to discern, but it seems there needs
+ // to be a comma after the invalid directive, with no whitespace
+ // in between. Also `#` followed only by whitespace is allowed.
+ // We check for these cases and emit a warning instead of an error.
+ //
// FIXME it's a "directive" in Walls-speak.
- compile_diagnostic(DIAG_ERR|DIAG_TOKEN|DIAG_SKIP, /*Unknown command “%s”*/12, s_str(&token));
+ int diag_type = DIAG_ERR;
+ if (s_empty(&token) && isEol(ch)) {
+ diag_type = DIAG_WARN;
+ } else {
+ filepos fp;
+ get_pos(&fp);
+ while (!isspace((unsigned char)ch) && !isEol(ch)) {
+ if (ch == ',') {
+ diag_type = DIAG_WARN;
+ break;
+ }
+ nextch();
+ }
+ set_pos(&fp);
+ }
+ compile_diagnostic(diag_type|DIAG_TOKEN|DIAG_SKIP, /*Unknown command “%s”*/12, s_str(&token));
break;
+ }
}
if (!s_empty(&line)) {
@@ -2990,23 +3256,6 @@
walls_initialise_settings();
walls_reset();
- // FIXME: We need to update the separator_map to reflect what can be
- // SPECIAL_NAMES. Or should we use the Compass approach and base this
- // on what's actually used? The first approach would pick the separator
- // from {':', ';', ',', '#', space}; the latter would pick '.' if
- // the documentation station naming recommendations were followed.
- update_output_separator();
-
- /* We need to update separator_map so we don't pick a separator character
- * which occurs in a station name. However Compass DAT allows everything
- * >= ASCII char 33 except 127 in station names so if we just added all
- * the valid station name characters we'd always pick space as the
- * separator for any dataset which included a DAT file, yet in practice
- * '.' is never used in any of the sample DAT files I've seen. So
- * instead we scan the characters actually used in station names when we
- * process CompassDATFr and CompassDATTo fields. (FIXME)
- */
-
// Start from the location of this WPJ.
s_append(&p_walls_options->path, pth);
@@ -3205,7 +3454,7 @@
in_survey = false;
break;
case WALLS_WPJ_CMD_OPTIONS:
- parse_options();
+ walls_parse_options();
break;
case WALLS_WPJ_CMD_PATH: {
skipblanks();
@@ -3297,7 +3546,7 @@
char *proj_str = img_compass_utm_proj_str(datum,
walls_ref.zone);
set_declination_location(walls_ref.x, walls_ref.y, walls_ref.z,
- proj_str);
+ proj_str, NULL);
if (!pcs->proj_str) {
pcs->proj_str = proj_str;
if (!proj_str_out) {
@@ -3312,7 +3561,7 @@
const char *proj_str =
(walls_ref.zone > 0 ? "EPSG:5041" : "EPSG:5042");
set_declination_location(walls_ref.x, walls_ref.y, walls_ref.z,
- proj_str);
+ proj_str, NULL);
if (!pcs->proj_str) {
pcs->proj_str = osstrdup(proj_str);
if (!proj_str_out) {
@@ -3890,14 +4139,12 @@
}
static real
-handle_clino(q_quantity q, reading r, real val, bool percent, clino_type *p_ctype)
+handle_clino(q_quantity q, reading r, real val, clino_type *p_ctype)
{
bool range_0_180;
real z;
real diff_from_abs90;
val *= pcs->units[q];
- /* percentage scale */
- if (percent) val = atan(val);
/* We want to warn if there's a reading which it would be impossible
* to have read from the instrument (e.g. on a -90 to 90 degree scale
* you can't read "96" (it's probably a typo for "69"). However, the
@@ -3964,13 +4211,11 @@
reading comp_given = handle_comp_units();
if (ctype == CTYPE_READING) {
- clin = handle_clino(Q_GRADIENT, Clino, clin,
- pcs->f_clino_percent, &ctype);
+ clin = handle_clino(Q_GRADIENT, Clino, clin, &ctype);
}
if (backctype == CTYPE_READING) {
- backclin = handle_clino(Q_BACKGRADIENT, BackClino, backclin,
- pcs->f_backclino_percent, &backctype);
+ backclin = handle_clino(Q_BACKGRADIENT, BackClino, backclin, &backctype);
}
/* un-infer the plumb if the backsight was just a reading */
@@ -4391,7 +4636,7 @@
get_token();
walls_cmd directive = match_tok(walls_cmd_tab, TABSIZE(walls_cmd_tab));
if (directive == WALLS_CMD_SEGMENT) {
- parse_walls_segment(p_compass_dat_flags);
+ walls_parse_segment(p_compass_dat_flags);
} else {
compile_diagnostic(DIAG_ERR|DIAG_SKIP|DIAG_TOKEN,
/*Expecting “%s”, “%s”, or “%s”*/188,
@@ -4479,7 +4724,7 @@
* error in a reading, we might not, so make sure it has been cleared here.
*/
pcs->flags &= ~(BIT(FLAGS_ANON_ONE_END) | BIT(FLAGS_IMPLICIT_SPLAY));
- for (const reading *ordering = pcs->ordering ; ; ordering++) {
+ for (const reading *ordering = pcs->ordering; ; ordering++) {
skipblanks();
switch (*ordering) {
case Fr:
@@ -4512,6 +4757,19 @@
case WallsSRVExtras:
read_walls_extras(&compass_dat_flags);
break;
+ case Note: {
+ if (isOmit(ch)) {
+ nextch();
+ break;
+ }
+ string note = S_INIT;
+ read_string(¬e);
+ s_free(¬e);
+ break;
+ }
+ case NoteAll:
+ skipline();
+ break;
case Ignore:
skipword(); break;
case IgnoreAllAndNewLine:
@@ -4647,6 +4905,10 @@
return 1;
}
+static_assert((WallsSRVToDepth - WallsSRVFrDepth == 1) &&
+ (ToDepth - FrDepth == 1),
+ "*ToDepth values not all one more than corresponding *FrDepth");
+
/* Process tape/compass/clino, diving, and cylpolar styles of survey data
* Also handles topofil (fromcount/tocount or count) in place of tape */
static void
@@ -4702,11 +4964,11 @@
// Compass DAT is always From then To.
first_stn = Fr;
fr = read_prefix(PFX_STATION);
- scan_compass_station_name(fr);
+ update_separator_map_for_foreign_name(prefix_ident(fr));
break;
case CompassDATTo:
to = read_prefix(PFX_STATION);
- scan_compass_station_name(to);
+ update_separator_map_for_foreign_name(prefix_ident(to));
break;
case Station:
fr = to;
@@ -4786,6 +5048,23 @@
process_eol();
return;
}
+ if (r == Clino) {
+ if (pcs->f_clino_percent) {
+ VAL(r) *= pcs->units[Q_GRADIENT];
+ VAL(r) = atan(VAL(r));
+ // Scale result of atan() back so handle_clino() can reapply
+ // the scale factor unconditionally.
+ VAL(r) /= pcs->units[Q_GRADIENT];
+ }
+ } else {
+ if (pcs->f_backclino_percent) {
+ VAL(r) *= pcs->units[Q_BACKGRADIENT];
+ VAL(r) = atan(VAL(r));
+ // Scale result of atan() back so handle_clino() can reapply
+ // the scale factor unconditionally.
+ VAL(r) /= pcs->units[Q_BACKGRADIENT];
+ }
+ }
*p_ctype = CTYPE_READING;
break;
}
@@ -4880,17 +5159,16 @@
return;
}
break;
- case WallsSRVTape:
+ case WallsSRVTape: {
+ filepos fp;
+ get_pos(&fp);
LOC(Tape) = ftell(file.fh);
- VAL(Tape) = read_numeric(true);
+ VAL(Tape) = read_walls_distance(true, pcs->units[Q_LENGTH]);
if (VAL(Tape) == HUGE_REAL) {
- if (ch == 'i' || ch == 'I') {
- // Length specified in inches only, e.g. `i6` is 6 inches.
- VAL(Tape) = 0.0;
- goto inches_only;
- }
- // Walls expects 2 or more - for an omitted value.
+ // Walls expects 2 or more `-` for an omitted value in this
+ // context, so a single `-` is an error.
if (ch != '-' || nextch() != '-') {
+ set_pos(&fp);
compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
/* Avoid also warning about omitted tape reading. */
VAL(Tape) = 0;
@@ -4898,28 +5176,16 @@
while (nextch() == '-') { }
}
} else {
+ // Adjust to what the length would be in the globally specified
+ // units, as that gets scaled for later.
+ VAL(Tape) /= pcs->units[Q_LENGTH];
if (VAL(Tape) < (real)0.0)
compile_diagnostic_reading(DIAG_WARN, Tape, /*Negative tape reading*/60);
- switch (ch) {
- case 'I': case 'i':
-inches_only:
- nextch();
- if (isdigit(ch)) {
- real inches = read_numeric(false);
- VAL(Tape) += inches / 12.0;
- }
- /* FALLTHRU */
- case 'F': case 'f':
- VAL(Tape) *= METRES_PER_FOOT;
- /* FALLTHRU */
- case 'M': case 'm':
- VAL(Tape) /= pcs->units[Q_LENGTH];
- nextch();
- }
}
WID(Tape) = ftell(file.fh) - LOC(Tape);
VAR(Tape) = var(Q_LENGTH);
break;
+ }
case WallsSRVComp: {
skipblanks();
LOC(Comp) = ftell(file.fh);
@@ -4927,7 +5193,8 @@
if (isalpha(ch)) {
VAL(Comp) = read_quadrant(false);
} else {
- VAL(Comp) = read_number(true, false);
+ bool f_decimal_point = false;
+ VAL(Comp) = read_number_or_int(true, false, &f_decimal_point);
if (VAL(Comp) == HUGE_REAL) {
if (ch != '-') {
compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
@@ -4955,6 +5222,36 @@
VAL(Comp) *= M_PI / 3200.0 / pcs->units[Q_BEARING];
nextch();
break;
+ case ':': {
+ if (f_decimal_point) break;
+ // Degree:Minute:Second (or Degree:Minute).
+ nextch();
+ if (isdigit(ch)) {
+ real minutes = read_number_or_int(false, true, &f_decimal_point);
+ if (VAL(Comp) >= 0.0) {
+ VAL(Comp) += minutes / 60.0;
+ } else {
+ VAL(Comp) -= minutes / 60.0;
+ }
+ if (!f_decimal_point && ch == ':') {
+ nextch();
+ if (isdigit(ch)) {
+ real seconds = read_number(false, true);
+ if (VAL(Comp) >= 0.0) {
+ VAL(Comp) += seconds / (60.0 * 60.0);
+ } else {
+ VAL(Comp) -= seconds / (60.0 * 60.0);
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ VAL(Comp) *= M_PI / 180.0 / pcs->units[Q_BEARING];
+ break;
+ }
}
}
}
@@ -4970,7 +5267,8 @@
if (isalpha(ch)) {
VAL(BackComp) = read_quadrant(false);
} else {
- VAL(BackComp) = read_number(true, false);
+ bool f_decimal_point = false;
+ VAL(BackComp) = read_number_or_int(true, false, &f_decimal_point);
if (VAL(BackComp) == HUGE_REAL) {
if (ch != '-') {
compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
@@ -4998,6 +5296,36 @@
VAL(BackComp) *= M_PI / 3200.0 / pcs->units[Q_BACKBEARING];
nextch();
break;
+ case ':': {
+ if (f_decimal_point) break;
+ // Degree:Minute:Second (or Degree:Minute).
+ nextch();
+ if (isdigit(ch)) {
+ real minutes = read_number_or_int(false, true, &f_decimal_point);
+ if (VAL(BackComp) >= 0.0) {
+ VAL(BackComp) += minutes / 60.0;
+ } else {
+ VAL(BackComp) -= minutes / 60.0;
+ }
+ if (!f_decimal_point && ch == ':') {
+ nextch();
+ if (isdigit(ch)) {
+ real seconds = read_number(false, true);
+ if (VAL(BackComp) >= 0.0) {
+ VAL(BackComp) += seconds / (60.0 * 60.0);
+ } else {
+ VAL(BackComp) -= seconds / (60.0 * 60.0);
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ VAL(BackComp) *= M_PI / 180.0 / pcs->units[Q_BACKBEARING];
+ break;
+ }
}
}
}
@@ -5015,11 +5343,12 @@
skipblanks();
LOC(Clino) = ftell(file.fh);
if (ch != '/') {
- real clin = read_number(true, false);
+ bool f_decimal_point = false;
+ real clin = read_number_or_int(true, false, &f_decimal_point);
if (clin == HUGE_REAL) {
if (ch != '-') {
if (TSTBIT(pcs->flags, FLAGS_ANON_ONE_END) &&
- p_walls_options->data_order_ct[4] == WallsSRVClino) {
+ p_walls_options->data_order[4] == WallsSRVClino) {
// The clino can be completely omitted with order=dav
// or order=adv on a leg to/from an anonymous station.
} else {
@@ -5050,6 +5379,46 @@
clin *= M_PI / 3200.0 / pcs->units[Q_GRADIENT];
nextch();
break;
+ case 'P': case 'p':
+ // Percent.
+ clin = atan(clin * 0.01) / pcs->units[Q_GRADIENT];
+ nextch();
+ break;
+ case ':': {
+ if (f_decimal_point) break;
+ // Degree:Minute:Second (or Degree:Minute).
+ nextch();
+ if (isdigit(ch)) {
+ real minutes = read_number_or_int(false, true, &f_decimal_point);
+ if (clin >= 0.0) {
+ clin += minutes / 60.0;
+ } else {
+ clin -= minutes / 60.0;
+ }
+ if (!f_decimal_point && ch == ':') {
+ nextch();
+ if (isdigit(ch)) {
+ real seconds = read_number(false, true);
+ if (clin >= 0.0) {
+ clin += seconds / (60.0 * 60.0);
+ } else {
+ clin -= seconds / (60.0 * 60.0);
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ clin *= M_PI / 180.0 / pcs->units[Q_GRADIENT];
+ break;
+ }
+ default:
+ if (pcs->f_clino_percent) {
+ clin = atan(clin * 0.01) / pcs->units[Q_GRADIENT];
+ }
+ break;
}
VAL(Clino) = clin;
ctype = CTYPE_READING;
@@ -5062,7 +5431,8 @@
}
if (ch == '/' && !isBlank(nextch())) {
LOC(BackClino) = ftell(file.fh);
- real backclin = read_number(true, false);
+ bool f_decimal_point = false;
+ real backclin = read_number_or_int(true, false, &f_decimal_point);
if (backclin == HUGE_REAL) {
if (ch != '-') {
compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
@@ -5090,6 +5460,46 @@
backclin *= M_PI / 3200.0 / pcs->units[Q_BACKGRADIENT];
nextch();
break;
+ case 'P': case 'p':
+ // Percent.
+ backclin = atan(backclin * 0.01) / pcs->units[Q_BACKGRADIENT];
+ nextch();
+ break;
+ case ':': {
+ if (f_decimal_point) break;
+ // Degree:Minute:Second (or Degree:Minute).
+ nextch();
+ if (isdigit(ch)) {
+ real minutes = read_number_or_int(false, true, &f_decimal_point);
+ if (backclin >= 0.0) {
+ backclin += minutes / 60.0;
+ } else {
+ backclin -= minutes / 60.0;
+ }
+ if (!f_decimal_point && ch == ':') {
+ nextch();
+ if (isdigit(ch)) {
+ real seconds = read_number(false, true);
+ if (backclin >= 0.0) {
+ backclin += seconds / (60.0 * 60.0);
+ } else {
+ backclin -= seconds / (60.0 * 60.0);
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ }
+ } else {
+ compile_diagnostic(DIAG_WARN|DIAG_COL, /*Expecting numeric field, found “%s”*/9, "");
+ }
+ backclin *= M_PI / 180.0 / pcs->units[Q_BACKGRADIENT];
+ break;
+ }
+ default:
+ if (pcs->f_backclino_percent) {
+ backclin = atan(backclin * 0.01) / pcs->units[Q_BACKGRADIENT];
+ }
+ break;
}
VAL(BackClino) = backclin;
backctype = CTYPE_READING;
@@ -5103,12 +5513,33 @@
}
break;
}
+ case WallsSRVFrDepth:
+ case WallsSRVToDepth: {
+ reading r = *ordering - WallsSRVFrDepth + FrDepth;
+ LOC(r) = ftell(file.fh);
+ real depth = read_walls_distance(true, pcs->units[Q_LENGTH]);
+ if (depth == HUGE_REAL) {
+ depth = 0.0;
+ if (ch == '-') {
+ // Walls expects 2 or more - for an omitted value.
+ if (nextch() != '-') {
+ compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
+ } else {
+ while (nextch() == '-') { }
+ }
+ }
+ }
+ VAL(r) = -depth;
+ WID(r) = ftell(file.fh) - LOC(r);
+ VAR(r) = var(Q_DEPTH);
+ break;
+ }
case WallsSRVHeights: {
real instrument_height = read_walls_distance(true,
pcs->units[Q_LENGTH]);
if (instrument_height == HUGE_REAL) {
- instrument_height = 0.0;
if (ch == '-') {
+ instrument_height = 0.0;
// Walls expects 2 or more - for an omitted value.
if (nextch() != '-') {
compile_diagnostic_token_show(DIAG_ERR, /*Expecting numeric field, found “%s”*/9);
@@ -5133,6 +5564,7 @@
}
// FIXME: Ideally we'd make use of these, or at least warn if
// they aren't equal...
+ // FIXME: Tape tape_method into account too...
(void)instrument_height;
(void)target_height;
}
@@ -5141,6 +5573,19 @@
case WallsSRVExtras:
read_walls_extras(&compass_dat_flags);
break;
+ case Note: {
+ if (isOmit(ch)) {
+ nextch();
+ break;
+ }
+ string note = S_INIT;
+ read_string(¬e);
+ s_free(¬e);
+ break;
+ }
+ case NoteAll:
+ skipline();
+ break;
case Ignore:
skipword(); break;
case IgnoreAllAndNewLine:
@@ -5402,8 +5847,9 @@
{
prefix *stn = NULL;
const reading *ordering;
+ VAL(Left) = VAL(Right) = VAL(Up) = VAL(Down) = -1;
- for (ordering = pcs->ordering ; ; ordering++) {
+ for (ordering = pcs->ordering; ; ordering++) {
skipblanks();
switch (*ordering) {
case Station:
@@ -5422,6 +5868,19 @@
}
break;
}
+ case Note: {
+ if (isOmit(ch)) {
+ nextch();
+ break;
+ }
+ string note = S_INIT;
+ read_string(¬e);
+ s_free(¬e);
+ break;
+ }
+ case NoteAll:
+ skipline();
+ break;
case Ignore:
skipword(); break;
case IgnoreAll:
@@ -5443,8 +5902,8 @@
nosurveylink *link;
/* Suppress "unused fixed point" warnings for these stations. */
- fr->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
- to->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ fr->sflags |= BIT(SFLAGS_USED);
+ to->sflags |= BIT(SFLAGS_USED);
/* add to linked list which is dealt with after network is solved */
link = osnew(nosurveylink);
@@ -5476,7 +5935,7 @@
again:
- for (ordering = pcs->ordering ; ; ordering++) {
+ for (ordering = pcs->ordering; ; ordering++) {
skipblanks();
switch (*ordering) {
case Fr:
@@ -5492,6 +5951,19 @@
to = read_prefix(PFX_STATION);
first_stn = To;
break;
+ case Note: {
+ if (isOmit(ch)) {
+ nextch();
+ break;
+ }
+ string note = S_INIT;
+ read_string(¬e);
+ s_free(¬e);
+ break;
+ }
+ case NoteAll:
+ skipline();
+ break;
case Ignore:
skipword(); break;
case IgnoreAllAndNewLine:
diff -Nru survex-1.4.17/src/datain.h survex-1.4.22/src/datain.h
--- survex-1.4.17/src/datain.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/datain.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef DATAIN_H
@@ -31,6 +31,7 @@
typedef struct parse {
FILE *fh;
const char *filename;
+ // ftell() at start of the current line.
long lpos;
unsigned int line;
bool reported_where : 1;
@@ -53,6 +54,9 @@
void get_pos(filepos *fp);
void set_pos(const filepos *fp);
+void set_declination_location(real x, real y, real z, const char *proj_str,
+ filepos *fp);
+
void skipblanks(void);
/* reads complete data file */
@@ -79,7 +83,7 @@
// Context type values:
#define DIAG_CONTEXT_MASK 0x78
-// Report column number based of the current file position.
+// Report column number based on the current file position.
#define DIAG_COL 0x08
// Set caret_width to s_len(&token):
#define DIAG_TOKEN 0x10
diff -Nru survex-1.4.17/src/date.c survex-1.4.22/src/date.c
--- survex-1.4.17/src/date.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/date.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/date.h survex-1.4.22/src/date.h
--- survex-1.4.17/src/date.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/date.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifdef __cplusplus
diff -Nru survex-1.4.17/src/debug.h survex-1.4.22/src/debug.h
--- survex-1.4.17/src/debug.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/debug.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/*#define DEBUG_INVALID 1*/
diff -Nru survex-1.4.17/src/diffpos.c survex-1.4.22/src/diffpos.c
--- survex-1.4.17/src/diffpos.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/diffpos.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/dump3d.c survex-1.4.22/src/dump3d.c
--- survex-1.4.17/src/dump3d.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/dump3d.c 2026-06-23 05:38:23.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/export.cc survex-1.4.22/src/export.cc
--- survex-1.4.17/src/export.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/export.cc 2026-05-04 02:24:42.000000000 +0000
@@ -2,7 +2,7 @@
* Export to GIS formats, CAD formats, and other formats.
*/
-/* Copyright (C) 1994-2025 Olly Betts
+/* Copyright (C) 1994-2026 Olly Betts
* Copyright (C) 2004 John Pybus (SVG Output code)
*
* This program is free software; you can redistribute it and/or modify
@@ -16,21 +16,22 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
#include "export.h"
-#include "wx.h"
-#include
+#include
+
#include "export3d.h"
#include "exportfilter.h"
#include "gdalexport.h"
#include "gpx.h"
#include "hpgl.h"
+#include "img.h"
#include "json.h"
#include "kml.h"
#include "mainfrm.h"
@@ -62,52 +63,52 @@
const format_info export_format_info[] = {
{ ".3d", /*Survex 3d files*/207,
- LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS, /* FIXME: expand... */
- LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS },
+ LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS|ANON_STNS, /* FIXME: expand... */
+ LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS|ANON_STNS },
{ ".csv", /*CSV files*/101,
- LABELS|ENTS|FIXES|EXPORTS,
+ LABELS|ENTS|FIXES|EXPORTS|ANON_STNS,
LABELS },
{ ".dxf", /*DXF files*/411,
- LABELS|LEGS|SURF|SPLAYS|STNS|PASG|XSECT|WALLS|MARKER_SIZE|TEXT_HEIGHT|GRID|FULL_COORDS|ORIENTABLE,
+ LABELS|LEGS|SURF|SPLAYS|STNS|ANON_STNS|PASG|XSECT|WALLS|MARKER_SIZE|TEXT_HEIGHT|GRID|FULL_COORDS|ORIENTABLE,
LABELS|LEGS|STNS },
{ ".eps", /*EPS files*/412,
- LABELS|LEGS|SURF|SPLAYS|STNS|PASG|XSECT|WALLS|ORIENTABLE,
+ LABELS|LEGS|SURF|SPLAYS|STNS|ANON_STNS|PASG|XSECT|WALLS|ORIENTABLE,
LABELS|LEGS|STNS },
{ ".gpx", /*GPX files*/413,
- LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS|PROJ,
+ LABELS|LEGS|SURF|SPLAYS|ENTS|FIXES|EXPORTS|ANON_STNS|PROJ,
LABELS },
/* TRANSLATORS: Here "plotter" refers to a machine which draws a printout
* on a (usually large) sheet of paper using a pen mounted in a motorised
* mechanism. */
{ ".hpgl", /*HPGL for plotters*/414,
- LABELS|LEGS|SURF|SPLAYS|STNS|CENTRED|SCALE|ORIENTABLE,
+ LABELS|LEGS|SURF|SPLAYS|STNS|ANON_STNS|CENTRED|SCALE|ORIENTABLE,
LABELS|LEGS|STNS },
{ ".json", /*JSON files*/445,
LEGS|SURF|SPLAYS|CENTRED,
LEGS },
{ ".kml", /*KML files*/444,
- LABELS|LEGS|SURF|SPLAYS|PASG|XSECT|WALLS|ENTS|FIXES|EXPORTS|PROJ|CLAMP_TO_GROUND,
+ LABELS|LEGS|SURF|SPLAYS|PASG|XSECT|WALLS|ENTS|FIXES|EXPORTS|ANON_STNS|PROJ|CLAMP_TO_GROUND,
LABELS|LEGS },
/* TRANSLATORS: "Compass" and "Carto" are the names of software packages,
* so should not be translated:
* https://www.fountainware.com/compass/ */
{ ".plt", /*Compass PLT for use with Carto*/415,
- LABELS|LEGS|SURF|SPLAYS|ORIENTABLE,
- LABELS|LEGS },
+ LABELS|ANON_STNS|LEGS|SURF|SPLAYS|ORIENTABLE,
+ LABELS|ANON_STNS|LEGS },
/* TRANSLATORS: Survex is the name of the software, and "pos" refers to a
* file extension, so neither should be translated. */
{ ".pos", /*Survex pos files*/166,
- LABELS|ENTS|FIXES|EXPORTS,
+ LABELS|ENTS|FIXES|EXPORTS|ANON_STNS,
LABELS },
{ ".svg", /*SVG files*/417,
- LABELS|LEGS|SURF|SPLAYS|STNS|PASG|XSECT|WALLS|MARKER_SIZE|TEXT_HEIGHT|SCALE|ORIENTABLE,
+ LABELS|LEGS|SURF|SPLAYS|STNS|ANON_STNS|PASG|XSECT|WALLS|MARKER_SIZE|TEXT_HEIGHT|SCALE|ORIENTABLE,
LABELS|LEGS|STNS },
{ ".shp", /*Shapefiles (lines)*/523,
LEGS|SURF|SPLAYS,
LEGS },
{ ".shp", /*Shapefiles (points)*/524,
- LABELS|ENTS|FIXES|EXPORTS|STNS,
- LABELS|STNS },
+ LABELS|ENTS|FIXES|EXPORTS|STNS|ANON_STNS,
+ LABELS|STNS|ANON_STNS },
};
static_assert(sizeof(export_format_info) == FMT_MAX_PLUS_ONE_ * sizeof(export_format_info[0]),
@@ -143,6 +144,8 @@
return "Surface";
case STNS:
return "Stations";
+ case ANON_STNS:
+ return "Anonymous Stations";
case LABELS:
return "Labels";
case XSECT:
@@ -161,7 +164,7 @@
const int *
ExportFilter::passes() const
{
- static const int default_passes[] = { LEGS|SURF|STNS|LABELS, 0 };
+ static const int default_passes[] = { LEGS|SURF|STNS|ANON_STNS|LABELS, 0 };
return default_passes;
}
@@ -193,7 +196,7 @@
DXF::passes() const
{
static const int dxf_passes[] = {
- PASG, XSECT, WALL1, WALL2, LEGS|SURF|STNS|LABELS, 0
+ PASG, XSECT, WALL1, WALL2, LEGS|SURF|STNS|LABELS, ANON_STNS, 0
};
return dxf_passes;
}
@@ -468,7 +471,7 @@
typedef struct point {
img_point p;
- const char *label;
+ char *label;
struct point *next;
} point;
@@ -524,7 +527,7 @@
if (pt->p.x == p->x && pt->p.y == p->y && pt->p.z == p->z)
return pt->label;
}
- return "?";
+ return NULL;
}
class SVG : public ExportFilter {
@@ -560,7 +563,7 @@
SVG::passes() const
{
static const int svg_passes[] = {
- PASG, LEGS|SURF, XSECT, WALL1, WALL2, LABELS, STNS, 0
+ PASG, LEGS|SURF, XSECT, WALL1, WALL2, LABELS, STNS, ANON_STNS, 0
};
return svg_passes;
}
@@ -572,8 +575,6 @@
{
const char *unit = "mm";
const double SVG_MARGIN = 5.0; // In units of "unit".
- htab = (point **)osmalloc(HTAB_SIZE * sizeof(point *));
- for (size_t i = 0; i < HTAB_SIZE; ++i) htab[i] = NULL;
fprintf(fh, "\n");
double width = (max_x - min_x) * factor + SVG_MARGIN * 2;
double height = (max_y - min_y) * factor + SVG_MARGIN * 2;
@@ -648,7 +649,6 @@
p->x * factor, p->y * -factor);
html_escape(fh, s);
fputs("\n", fh);
- set_name(p, s);
}
void
@@ -739,8 +739,12 @@
unsigned anon_counter = 0;
+ img_datum datum = img_DATUM_UNKNOWN;
+
+ int utm_zone = 0;
+
public:
- PLT() { }
+ PLT(const char * input_datum);
const int * passes() const override;
void header(const char *, time_t,
double min_x, double min_y, double min_z,
@@ -750,9 +754,151 @@
void footer() override;
};
+PLT::PLT(const char * input_datum)
+{
+ if (!input_datum || input_datum[0] == '\0') return;
+
+ // If the coordinate system is an EPSG code, we check if it is UTM in a
+ // datum which Compass supports and if so write out `G` and `O` commands in
+ // the generated PLT file.
+ if (strncmp(input_datum, "EPSG:", 5) != 0) return;
+
+ /* First check the three which seem to be commonly used in Compass data. */
+ int epsg_code = atoi(input_datum + 5);
+ if (epsg_code > 32600 && epsg_code <= 32660) {
+ datum = img_DATUM_WGS84;
+ utm_zone = epsg_code - 32600;
+ return;
+ }
+ if (epsg_code > 32700 && epsg_code <= 32760) {
+ datum = img_DATUM_WGS84;
+ utm_zone = 32700 - epsg_code;
+ return;
+ }
+ if (epsg_code > 26700 && epsg_code <= 26723) {
+ datum = img_DATUM_NAD27;
+ utm_zone = epsg_code - 26700;
+ return;
+ }
+ if (epsg_code >= 3311 + 59 && epsg_code <= 3311 + 60) {
+ datum = img_DATUM_NAD27;
+ utm_zone = epsg_code - 3311;
+ return;
+ }
+ if (epsg_code > 26900 && epsg_code <= 26923) {
+ datum = img_DATUM_NAD83;
+ utm_zone = epsg_code - 26900;
+ return;
+ }
+ if (epsg_code == 9712) {
+ datum = img_DATUM_NAD83;
+ utm_zone = 24;
+ return;
+ }
+
+ if (epsg_code >= 3313 + 59 && epsg_code <= 3313 + 60) {
+ datum = img_DATUM_NAD83;
+ utm_zone = epsg_code - 3313;
+ return;
+ }
+ if (epsg_code >= 20135 && epsg_code <= 20138) {
+ datum = img_DATUM_ADINDAN;
+ utm_zone = epsg_code - 20100;
+ return;
+ }
+ if (epsg_code >= 20934 && epsg_code <= 20936) {
+ datum = img_DATUM_ARC1950;
+ utm_zone = 20900 - epsg_code;
+ return;
+ }
+ if (epsg_code >= 21035 && epsg_code <= 21037) {
+ datum = img_DATUM_ARC1960;
+ utm_zone = 21000 - epsg_code;
+ return;
+ }
+ if (epsg_code >= 22234 && epsg_code <= 22236) {
+ datum = img_DATUM_CAPE;
+ utm_zone = 22200 - epsg_code;
+ return;
+ }
+ if (epsg_code >= 23028 && epsg_code <= 23038) {
+ datum = img_DATUM_EUROPEAN1950;
+ utm_zone = epsg_code - 23000;
+ return;
+ }
+ if (epsg_code >= 27258 && epsg_code <= 27260) {
+ datum = img_DATUM_NZGD49;
+ utm_zone = epsg_code - 27200;
+ return;
+ }
+ if (epsg_code == 3829) {
+ datum = img_DATUM_HUTZUSHAN1950;
+ utm_zone = 51;
+ return;
+ }
+ if (epsg_code >= 3148 && epsg_code <= 3149) {
+ datum = img_DATUM_INDIAN1960;
+ utm_zone = epsg_code - 3100;
+ return;
+ }
+ if (epsg_code >= 3041 + 51 && epsg_code <= 3041 + 55) {
+ datum = img_DATUM_TOKYO;
+ utm_zone = epsg_code - 3041;
+ return;
+ }
+ if (epsg_code > 32200 && epsg_code <= 32260) {
+ datum = img_DATUM_WGS72;
+ utm_zone = epsg_code - 32200;
+ return;
+ }
+ if (epsg_code > 32300 && epsg_code <= 32360) {
+ datum = img_DATUM_WGS72;
+ utm_zone = 32300 - epsg_code;
+ return;
+ }
+
+ // img_compass_utm_proj_str() also returns PROJ4 strings for NAD27 and
+ // NAD83 zones which don't have an EPSG code, so handle these too here:
+ //
+ // "+proj=utm +zone=%d +datum=NAD27 +units=m +no_defs +type=crs"
+ // "+proj=utm +zone=%d +datum=NAD83 +units=m +no_defs +type=crs"
+ // "+proj=utm +zone=%d +south +datum=NAD27 +units=m +no_defs +type=crs"
+ // "+proj=utm +zone=%d +south +datum=NAD83 +units=m +no_defs +type=crs"
+ if (strncmp(input_datum, "+proj=utm +zone=", 16) == 0) {
+ const char * p = input_datum + 16;
+ int zone = 0;
+ while (isdigit((unsigned char)*p)) {
+ zone = zone * 10 + (*p - '0');
+ ++p;
+ }
+ if (zone >= 1 && zone <= 60) {
+ if (strncmp(p, " +south", 7) == 0) {
+ p += 7;
+ zone = -zone;
+ }
+ if (strncmp(p, " +datum=NAD", 11) == 0 &&
+ strcmp(p + 13, " +units=m +no_defs +type=crs") == 0) {
+ p += 11;
+ if (memcmp(p, "27", 2) == 0) {
+ datum = img_DATUM_NAD27;
+ utm_zone = zone;
+ return;
+ }
+ if (memcmp(p, "83", 2) == 0) {
+ datum = img_DATUM_NAD83;
+ utm_zone = zone;
+ return;
+ }
+ }
+ }
+ }
+}
+
const int *
PLT::passes() const
{
+ // We assume any leg end whose position doesn't match a label is an
+ // anonymous station, so we don't need ANON_STNS here.
static const int plt_passes[] = { LABELS, LEGS|SURF, 0 };
return plt_passes;
}
@@ -775,6 +921,28 @@
max_A = max_z / METRES_PER_FOOT;
fprintf(fh, "Z %.3f %.3f %.3f %.3f %.3f %.3f\r\n",
min_N, max_N, min_E, max_E, min_A, max_A);
+ if (utm_zone) {
+ // The file format doesn't seem to specify the ordering of `O` and `G`, but
+ // Compass always seems to write `G` before `O` so follow this lead to
+ // try to maximise compatibility with other programs parsing this format.
+ static const char * compass_datum_names[] = {
+ "",
+ "Adindan",
+ "Arc 1950",
+ "Arc 1960",
+ "Cape",
+ "European 1950",
+ "Geodetic 1949",
+ "Hu Tzu Shan",
+ "Indian",
+ "North American 1927",
+ "North American 1983",
+ "Tokyo",
+ "WGS 1972",
+ "WGS 1984",
+ };
+ fprintf(fh, "G%d\r\nO%s\r\n", utm_zone, compass_datum_names[datum]);
+ }
fprintf(fh, "N%s D 1 1 1 C%s\r\n", survey ? survey : "X",
(title && title[0]) ? title : "X");
}
@@ -808,27 +976,41 @@
{
const char * s = find_name(p);
escaped.resize(0);
- if (*s == '\0') {
+ if (!s) {
// Anonymous station - number sequentially using a counter. We start
- // the name with "%:" since we escape any % in a real station name
- // below, but only insert % followed by two hex digits.
+ // the name with "^" which gives a unique name since we escape any ^ in
+ // a real station name below, but only insert ^ followed by one of
+ // @, A-Z, a-e, ^, _.
char buf[32];
- snprintf(buf, sizeof(buf), "%%:%u", ++anon_counter);
+ snprintf(buf, sizeof(buf), "^%u", ++anon_counter);
escaped = buf;
return escaped.c_str();
}
// PLT format can't handle spaces or control characters, so escape them
- // like in URLs (an arbitrary choice of escaping, but at least a familiar
- // one and % isn't likely to occur in station names).
+ // as `^` followed by another character (which is a bit arbitrary, but `^`
+ // is not likely to occur in station names, the encoding is compact, and
+ // it is somewhat mnemonic since e.g byte 8 (Ctrl-H) -> `^H`, space ->
+ // `^_`, `^` -> `^^`
const char * q;
for (q = s; *q; ++q) {
unsigned char ch = *q;
- if (ch <= ' ' || ch == '%') {
+ if (ch <= 32) {
+ escaped.append(s, q - s);
+ if (ch == 32) {
+ escaped.append("^_");
+ } else {
+ escaped += '^';
+ if (ch <= 26) {
+ escaped += (ch + 0x40);
+ } else {
+ escaped += (ch + 0x60 - 26);
+ }
+ }
+ s = q + 1;
+ } else if (ch == '^') {
escaped.append(s, q - s);
- escaped += '%';
- escaped += "0123456789abcdef"[ch >> 4];
- escaped += "0123456789abcdef"[ch & 0x0f];
+ escaped.append("^^");
s = q + 1;
}
}
@@ -842,6 +1024,7 @@
void
PLT::label(const img_point *p, const wxString& str, int sflags, int)
{
+ // Named station.
const char* s = str.utf8_str();
(void)sflags; /* unused */
set_name(p, s);
@@ -883,7 +1066,7 @@
EPS::passes() const
{
static const int eps_passes[] = {
- PASG, XSECT, WALL1, WALL2, LEGS|SURF|STNS|LABELS, 0
+ PASG, XSECT, WALL1, WALL2, LEGS|SURF|STNS|ANON_STNS|LABELS, 0
};
return eps_passes;
}
@@ -1320,7 +1503,7 @@
break;
}
case FMT_PLT:
- filt = new PLT;
+ filt = new PLT(model.GetCSProj().c_str());
show_mask |= FULL_COORDS;
break;
case FMT_POS:
@@ -1451,6 +1634,13 @@
for (pass = filt->passes(); *pass; ++pass) {
int pass_mask = show_mask & *pass;
+ if (pass_mask & (ANON_STNS)) {
+ if (filter && !filter->CheckVisible(wxString())) {
+ // Turn off ANON_STNS up front if there's a filter which doesn't
+ // allow it.
+ pass_mask &= ~ANON_STNS;
+ }
+ }
if (!pass_mask)
continue;
filt->start_pass(*pass);
@@ -1495,6 +1685,12 @@
list::const_iterator pos = model.GetLabels();
list::const_iterator end = model.GetLabelsEnd();
for ( ; pos != end; ++pos) {
+ int sflags = (*pos)->get_flags();
+ if ((sflags & img_SFLAG_ANON)) {
+ // Anonymous station.
+ continue;
+ }
+
if (filter && !filter->CheckVisible((*pos)->GetText()))
continue;
@@ -1513,7 +1709,6 @@
} else if (pass_mask & LABELS) {
type = LABELS;
}
- int sflags = (*pos)->get_flags();
if (type) {
filt->label(&p, (*pos)->GetText(), sflags, type);
}
@@ -1522,6 +1717,24 @@
}
}
}
+ if (pass_mask & (ANON_STNS)) {
+ list::const_iterator pos = model.GetLabels();
+ list::const_iterator end = model.GetLabelsEnd();
+ for ( ; pos != end; ++pos) {
+ int sflags = (*pos)->get_flags();
+ if (!(sflags & img_SFLAG_ANON)) {
+ // Not an anonymous station.
+ continue;
+ }
+
+ transform_point(**pos, pre_offset, COS, SIN, COST, SINT, &p);
+ p.x += x_offset;
+ p.y += y_offset;
+ p.z += z_offset;
+
+ filt->cross(&p, wxEmptyString, sflags);
+ }
+ }
if (pass_mask & (XSECT|WALLS|PASG)) {
bool elevation = (tilt == 0.0);
list>::const_iterator tube = model.tubes_begin();
@@ -1583,7 +1796,20 @@
}
filt->footer();
delete filt;
- free(htab);
- htab = NULL;
+
+ if (htab) {
+ // Free hash table entries.
+ for (size_t i = 0; i < HTAB_SIZE; ++i) {
+ point* h = htab[i];
+ while (h) {
+ point* old_h = h;
+ h = h->next;
+ free(old_h->label);
+ free(old_h);
+ }
+ }
+ free(htab);
+ htab = NULL;
+ }
return true;
}
diff -Nru survex-1.4.17/src/export.h survex-1.4.22/src/export.h
--- survex-1.4.17/src/export.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/export.h 2026-05-04 02:13:57.000000000 +0000
@@ -2,7 +2,7 @@
* Export to GIS formats, CAD formats, and other formats.
*/
-/* Copyright (C) 2004-2024 Olly Betts
+/* Copyright (C) 2004-2026 Olly Betts
*
* 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,15 +15,15 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef SURVEX_INCLUDED_EXPORT_H
#define SURVEX_INCLUDED_EXPORT_H
#include "img_for_survex.h"
-#include "wx.h"
+#include
class Model;
class SurveyFilter;
@@ -82,6 +82,7 @@
#define SCALE 0x00080000
#define FULL_COORDS 0x00100000
#define CLAMP_TO_GROUND 0x00200000
+#define ANON_STNS 0x00400000
#define DEFAULT_GRID_SPACING 100 // metres
#define DEFAULT_TEXT_HEIGHT 0.6
diff -Nru survex-1.4.17/src/export3d.cc survex-1.4.22/src/export3d.cc
--- survex-1.4.17/src/export3d.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/export3d.cc 2026-05-04 02:13:57.000000000 +0000
@@ -1,7 +1,7 @@
/* survex3d.cc
* Export from Aven as Survex .3d.
*/
-/* Copyright (C) 2001-2024 Olly Betts
+/* Copyright (C) 2001-2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -37,7 +37,9 @@
const int *
Export3D::passes() const
{
- static const int default_passes[] = { LEGS|SURF|LABELS|ENTS|FIXES|EXPORTS, 0 };
+ static const int default_passes[] = {
+ LEGS|SURF|LABELS|ENTS|FIXES|EXPORTS|ANON_STNS, 0
+ };
return default_passes;
}
@@ -62,11 +64,19 @@
void
Export3D::label(const img_point* p, const wxString& str, int sflags, int)
{
+ // Named station.
const char* s = str.utf8_str();
img_write_item(pimg, img_LABEL, sflags, s, p->x, p->y, p->z);
}
void
+Export3D::cross(const img_point* p, const wxString&, int sflags)
+{
+ // Anonymous station.
+ img_write_item(pimg, img_LABEL, sflags, "", p->x, p->y, p->z);
+}
+
+void
Export3D::footer()
{
img_close(pimg);
diff -Nru survex-1.4.17/src/export3d.h survex-1.4.22/src/export3d.h
--- survex-1.4.17/src/export3d.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/export3d.h 2026-05-04 02:13:57.000000000 +0000
@@ -2,7 +2,7 @@
* Export from Aven as Survex .3d.
*/
-/* Copyright (C) 2005-2024 Olly Betts
+/* Copyright (C) 2005-2026 Olly Betts
*
* 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 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
@@ -43,5 +43,6 @@
double, double, double) override;
void line(const img_point *, const img_point *, unsigned, bool) override;
void label(const img_point *, const wxString&, int, int) override;
+ void cross(const img_point *, const wxString&, int) override;
void footer() override;
};
diff -Nru survex-1.4.17/src/exportfilter.h survex-1.4.22/src/exportfilter.h
--- survex-1.4.17/src/exportfilter.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/exportfilter.h 2026-05-18 01:45:31.000000000 +0000
@@ -2,7 +2,7 @@
* Export to GIS formats, CAD formats, and other formats.
*/
-/* Copyright (C) 2005-2024 Olly Betts
+/* Copyright (C) 2005-2026 Olly Betts
*
* 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,15 +15,19 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef SURVEX_EXPORTFILTER_H
#define SURVEX_EXPORTFILTER_H
#include
-#include "wx.h"
+#include
+
+#ifdef _WIN32
+# include // For _commit().
+#endif
#include "img_for_survex.h"
@@ -34,7 +38,15 @@
public:
ExportFilter() { }
// FIXME: deal with errors closing file... (safe_fclose?)
- virtual ~ExportFilter() { if (fh) fclose(fh); }
+ virtual ~ExportFilter() {
+ if (fh) {
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ _commit(fileno(fh));
+#endif
+ fclose(fh);
+ }
+ }
virtual const int * passes() const;
virtual bool fopen(const wxString& fnm_out) {
fh = wxFopen(fnm_out.fn_str(), wxT("wb"));
diff -Nru survex-1.4.17/src/extend.c survex-1.4.22/src/extend.c
--- survex-1.4.17/src/extend.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/extend.c 2026-05-18 20:32:21.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -486,7 +486,13 @@
{HLP_ENCODELONG(0), /*only load the sub-survey with this prefix*/199, 0, 0},
/* TRANSLATORS: --help output for extend --specfile option */
{HLP_ENCODELONG(1), /*.espec file to control extending*/90, 0, "ESPEC_FILE"},
- /* TRANSLATORS: --help output for extend --show-breaks option */
+ /* TRANSLATORS: --help output for extend --show-breaks option. When
+ * generating an extended elevation, the survey gets broken (disconnected)
+ * when there's a loop, and the station we break at appears twice in the
+ * output. This option adds a leg between copies of a station, flagged as
+ * "surface" (so they can be toggled on off, and appear as dotted lines in
+ * aven).
+ */
{HLP_ENCODELONG(2), /*show breaks with surface survey legs in output*/91, 0, 0},
{0, 0, 0, 0}
};
diff -Nru survex-1.4.17/src/filelist.h survex-1.4.22/src/filelist.h
--- survex-1.4.17/src/filelist.h 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/filelist.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#define EXT_SVX_DATA "svx"
diff -Nru survex-1.4.17/src/filename.c survex-1.4.22/src/filename.c
--- survex-1.4.17/src/filename.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/filename.c 2026-06-23 20:32:37.000000000 +0000
@@ -1,5 +1,5 @@
/* OS dependent filename manipulation routines
- * Copyright (c) Olly Betts 1998-2003,2004,2005,2010,2011,2014,2025
+ * Copyright (c) Olly Betts 1998-2003,2004,2005,2010,2011,2014,2025,2026
*
* 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
@@ -12,8 +12,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -28,6 +28,10 @@
#include
#include
+#ifdef _WIN32
+# include // For _commit().
+#endif
+
typedef struct filelist {
char *fnm;
FILE *fh;
@@ -93,6 +97,10 @@
safe_fclose(FILE *f)
{
SVX_ASSERT(f);
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ _commit(fileno(f));
+#endif
/* NB: use of | rather than || - we always want to call fclose() */
if (FERROR(f) | (fclose(f) == EOF)) {
filelist *p;
@@ -377,7 +385,7 @@
if (fh == NULL) {
bool had_lower = false;
changed = false;
- for (char *p = fnm_trans; *p ; p++) {
+ for (char *p = fnm_trans; *p; p++) {
unsigned char ch = *p;
if (isupper(ch)) {
*p = tolower(ch);
@@ -400,7 +408,7 @@
if (fh == NULL && had_lower) {
/* Finally, try upper casing the filename if it wasn't all
* upper case to start with. */
- for (char *p = fnm_trans; *p ; p++) {
+ for (char *p = fnm_trans; *p; p++) {
*p = toupper((unsigned char)*p);
}
fh = fopenWithPthAndExt(pth, fnm_trans, ext, mode, fnmUsed);
diff -Nru survex-1.4.17/src/filename.h survex-1.4.22/src/filename.h
--- survex-1.4.17/src/filename.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/filename.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef FILENAME_H /* only include once */
diff -Nru survex-1.4.17/src/gdalexport.cc survex-1.4.22/src/gdalexport.cc
--- survex-1.4.17/src/gdalexport.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gdalexport.cc 2026-05-04 02:13:57.000000000 +0000
@@ -1,7 +1,7 @@
/* gdalexport.cc
* Export using GDAL
*/
-/* Copyright (C) 2024 Olly Betts
+/* Copyright (C) 2024,2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -224,7 +224,7 @@
ShapefilePoints::passes() const
{
static const int default_passes[] = {
- ENTS, FIXES, EXPORTS, LABELS, 0
+ ENTS, FIXES, EXPORTS, ANON_STNS, LABELS, 0
};
return default_passes;
}
diff -Nru survex-1.4.17/src/gdalexport.h survex-1.4.22/src/gdalexport.h
--- survex-1.4.17/src/gdalexport.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gdalexport.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
diff -Nru survex-1.4.17/src/gdtconvert survex-1.4.22/src/gdtconvert
--- survex-1.4.17/src/gdtconvert 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/gdtconvert 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
use strict;
diff -Nru survex-1.4.17/src/getopt.c survex-1.4.22/src/getopt.c
--- survex-1.4.17/src/getopt.c 2025-03-17 23:21:37.000000000 +0000
+++ survex-1.4.22/src/getopt.c 2026-05-18 04:20:58.000000000 +0000
@@ -17,9 +17,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ . */
#if 0 /* Survex doesn't use getopt() so we don't declare it. */
/* This tells Alpha OSF/1 not to define a getopt prototype in .
@@ -230,9 +229,7 @@
#endif
static char *
-my_index (str, chr)
- const char *str;
- int chr;
+my_index (const char *str, int chr)
{
while (*str)
{
@@ -308,13 +305,8 @@
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
static void
-exchange (argv)
- char **argv;
+exchange (char **argv)
{
int bottom = first_nonopt;
int middle = last_nonopt;
@@ -394,14 +386,8 @@
/* Initialize the internal data when the first call is made. */
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+_getopt_initialize (int argc, char *const *argv, const char *optstring)
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
@@ -520,13 +506,7 @@
long-named options. */
int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
+_getopt_internal (int argc, char *const *argv, const char *optstring, const struct option *longopts, int *longind, int long_only)
{
int print_errors = opterr;
if (optstring[0] == ':')
@@ -1206,10 +1186,7 @@
#if 0 /* Survex doesn't use getopt() so we don't declare it. */
int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+getopt (int argc, char *const *argv, const char *optstring)
{
return _getopt_internal (argc, argv, optstring,
(const struct option *) 0,
@@ -1226,9 +1203,7 @@
the above definition of `getopt'. */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int c;
int digit_optind = 0;
diff -Nru survex-1.4.17/src/getopt.h survex-1.4.22/src/getopt.h
--- survex-1.4.17/src/getopt.h 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/getopt.h 2026-05-18 02:02:25.000000000 +0000
@@ -13,9 +13,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ . */
#ifndef _GETOPT_H
diff -Nru survex-1.4.17/src/getopt1.c survex-1.4.22/src/getopt1.c
--- survex-1.4.17/src/getopt1.c 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/getopt1.c 2026-05-18 04:20:58.000000000 +0000
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ . */
#ifdef HAVE_CONFIG_H
#include
@@ -64,12 +63,7 @@
#endif
int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
+getopt_long (int argc, char *const *argv, const char *options, const struct option *long_options, int *opt_index)
{
return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
}
@@ -80,12 +74,7 @@
instead. */
int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
+getopt_long_only (int argc, char *const *argv, const char *options, const struct option *long_options, int *opt_index)
{
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
}
@@ -98,9 +87,7 @@
#include
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int c;
int digit_optind = 0;
diff -Nru survex-1.4.17/src/gettexttomsg.pl survex-1.4.22/src/gettexttomsg.pl
--- survex-1.4.17/src/gettexttomsg.pl 2024-11-25 23:03:48.000000000 +0000
+++ survex-1.4.22/src/gettexttomsg.pl 2026-03-21 21:06:18.000000000 +0000
@@ -15,8 +15,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
require 5.008;
use strict;
diff -Nru survex-1.4.17/src/gfxcore.cc survex-1.4.22/src/gfxcore.cc
--- survex-1.4.17/src/gfxcore.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gfxcore.cc 2026-05-18 20:41:51.000000000 +0000
@@ -4,7 +4,7 @@
// Core drawing code for Aven.
//
// Copyright (C) 2000-2003,2005,2006 Mark R. Shinwell
-// Copyright (C) 2001-2024 Olly Betts
+// Copyright (C) 2001-2026 Olly Betts
// Copyright (C) 2005 Martin Green
//
// This program is free software; you can redistribute it and/or modify
@@ -18,8 +18,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -44,7 +44,6 @@
#include
#include
-#include
#include
#ifdef HAVE_GDAL
@@ -204,32 +203,16 @@
InvalidateList(LIST_TERRAIN);
InvalidateList(LIST_OVERLAYS);
- // Set diameter of the viewing volume.
- auto ext = m_Parent->GetExtent();
- double cave_diameter = sqrt(sqrd(ext.GetX()) +
- sqrd(ext.GetY()) +
- sqrd(ext.GetZ()));
-
- // Allow for terrain.
- double diameter = max(1000.0 * 2, cave_diameter * 2);
-
+ initial_scale = UpdateVolumeDiameter();
if (!same_file) {
- SetVolumeDiameter(diameter);
-
// Set initial scale based on the size of the cave.
- initial_scale = diameter / cave_diameter;
SetScale(initial_scale);
} else {
// Adjust the position when restricting the view to a subsurvey (or
// expanding the view to show the whole survey).
AddTranslation(m_Parent->GetOffset() - offsets);
- // Try to keep the same scale, allowing for the
- // cave having grown (or shrunk).
- double rescale = GetVolumeDiameter() / diameter;
- SetVolumeDiameter(diameter);
- SetScale(GetScale() / rescale); // ?
- initial_scale = initial_scale * rescale;
+ // Don't change the current scale when reloading a file.
}
offsets = m_Parent->GetOffset();
@@ -237,6 +220,18 @@
ForceRefresh();
}
+double GfxCore::UpdateVolumeDiameter() {
+ // Set diameter of the viewing volume.
+ auto ext = m_Parent->GetExtent();
+ double cave_diameter = sqrt(sqrd(ext.GetX()) +
+ sqrd(ext.GetY()) +
+ sqrd(ext.GetZ()));
+ // Allow for terrain.
+ double diameter = max(cave_diameter, terrain_diameter);
+ SetVolumeDiameter(diameter);
+ return diameter / cave_diameter;
+}
+
void GfxCore::FirstShow()
{
GLACanvas::FirstShow();
@@ -632,7 +627,7 @@
int GfxCore::GetClinoOffset() const
{
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
int result = INDICATOR_OFFSET_X * f;
if (m_Compass) {
result += GetCompassWidth() + INDICATOR_GAP * f;
@@ -642,7 +637,7 @@
void GfxCore::DrawTick(int angle_cw)
{
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
auto length0 = (INDICATOR_RADIUS + TICK_LENGTH) * f;
auto length1 = INDICATOR_RADIUS * f;
const double theta = rad(angle_cw);
@@ -658,7 +653,7 @@
}
void GfxCore::DrawArrow(gla_colour col1, gla_colour col2) {
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
glaCoord r = INDICATOR_RADIUS * f;
glaCoord x = r * .5;
glaCoord y = r * -.866025404;
@@ -695,7 +690,7 @@
// Compass background.
DrawCircle(col_LIGHT_GREY_2, col_GREY, 0, 0,
- INDICATOR_RADIUS * GetContentScaleFactor());
+ INDICATOR_RADIUS * GetDPIScaleFactor());
// Compass arrow.
DrawArrow(col_INDICATOR_1, col_INDICATOR_2);
@@ -709,7 +704,7 @@
}
SetColour(col_GREY);
- glaCoord r = INDICATOR_RADIUS * GetContentScaleFactor();
+ glaCoord r = INDICATOR_RADIUS * GetDPIScaleFactor();
PlaceIndicatorVertex(0, r);
PlaceIndicatorVertex(0, -r);
PlaceIndicatorVertex(0, 0);
@@ -726,7 +721,7 @@
EndLines();
// Clino background.
- DrawSemicircle(col_LIGHT_GREY_2, col_GREY, 0, 0, INDICATOR_RADIUS * GetContentScaleFactor(), 0);
+ DrawSemicircle(col_LIGHT_GREY_2, col_GREY, 0, 0, INDICATOR_RADIUS * GetDPIScaleFactor(), 0);
// Elevation arrow.
DrawArrow(col_INDICATOR_2, col_INDICATOR_1);
@@ -736,7 +731,7 @@
{
// Draw the compass and elevation indicators.
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
const int centre_y = (INDICATOR_BOX_SIZE / 2 + INDICATOR_OFFSET_Y) * f;
const int comp_centre_x = GetCompassXPosition();
@@ -1023,7 +1018,7 @@
void GfxCore::DrawColourKey(int num_bands, const wxString & other)
{
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
int key_block_height = KEY_BLOCK_HEIGHT * f;
int key_block_width = KEY_BLOCK_WIDTH * f;
int total_block_height =
@@ -1246,7 +1241,7 @@
void GfxCore::DrawStyleKey()
{
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
int key_block_height = KEY_BLOCK_HEIGHT * f;
int key_block_width = KEY_BLOCK_WIDTH * f;
int num_bands = sizeof(style_names) / sizeof(style_names[0]);
@@ -1291,7 +1286,7 @@
// screen.
double across_screen = SurveyUnitsAcrossViewport();
- double f = double(GetClinoXPosition() - (INDICATOR_BOX_SIZE / 2 + SCALE_BAR_OFFSET_X) * GetContentScaleFactor()) / GetXSize();
+ double f = double(GetClinoXPosition() - (INDICATOR_BOX_SIZE / 2 + SCALE_BAR_OFFSET_X) * GetDPIScaleFactor()) / GetXSize();
if (f > 0.75) {
f = 0.75;
} else if (f < 0.5) {
@@ -1328,14 +1323,14 @@
m_ScaleBarWidth = size;
// Draw it...
- const int end_y = SCALE_BAR_OFFSET_Y * GetContentScaleFactor() + GetFontSize();
+ const int end_y = SCALE_BAR_OFFSET_Y * GetDPIScaleFactor() + GetFontSize();
int interval = size / 10;
gla_colour col = col_WHITE;
for (int ix = 0; ix < 10; ix++) {
- int x = SCALE_BAR_OFFSET_X * GetContentScaleFactor() + int(ix * ((double) size / 10.0));
+ int x = SCALE_BAR_OFFSET_X * GetDPIScaleFactor() + int(ix * ((double) size / 10.0));
- DrawRectangle(col, col, x, end_y, interval + 2, SCALE_BAR_HEIGHT * GetContentScaleFactor());
+ DrawRectangle(col, col, x, end_y, interval + 2, SCALE_BAR_HEIGHT * GetDPIScaleFactor());
col = (col == col_WHITE) ? col_GREY : col_WHITE;
}
@@ -1417,8 +1412,8 @@
GetTextExtent(str, &text_width, &text_height);
const int text_y = end_y - text_height + 1;
SetColour(TEXT_COLOUR);
- DrawIndicatorText(SCALE_BAR_OFFSET_X * GetContentScaleFactor(), text_y, wxT("0"));
- DrawIndicatorText(SCALE_BAR_OFFSET_X * GetContentScaleFactor() + size - text_width, text_y, str);
+ DrawIndicatorText(SCALE_BAR_OFFSET_X * GetDPIScaleFactor(), text_y, wxT("0"));
+ DrawIndicatorText(SCALE_BAR_OFFSET_X * GetDPIScaleFactor() + size - text_width, text_y, str);
}
bool GfxCore::CheckHitTestGrid(const wxPoint& point, bool centre)
@@ -2115,7 +2110,7 @@
{
static int result = 0;
if (result == 0) {
- result = INDICATOR_BOX_SIZE * GetContentScaleFactor();
+ result = INDICATOR_BOX_SIZE * GetDPIScaleFactor();
int width;
const wxString & msg = wmsg(/*Facing*/203);
GetTextExtent(msg, &width, NULL);
@@ -2128,7 +2123,7 @@
{
static int result = 0;
if (result == 0) {
- result = INDICATOR_BOX_SIZE * GetContentScaleFactor();
+ result = INDICATOR_BOX_SIZE * GetDPIScaleFactor();
int width;
const wxString & msg1 = wmsg(/*Plan*/432);
GetTextExtent(msg1, &width, NULL);
@@ -2147,7 +2142,7 @@
{
// Return the x-coordinate of the centre of the compass in window
// coordinates.
- return GetXSize() - INDICATOR_OFFSET_X * GetContentScaleFactor() - GetCompassWidth() / 2;
+ return GetXSize() - INDICATOR_OFFSET_X * GetDPIScaleFactor() - GetCompassWidth() / 2;
}
int GfxCore::GetClinoXPosition() const
@@ -2161,13 +2156,13 @@
{
// Return the y-coordinate of the centre of the indicators in window
// coordinates.
- return GetYSize() - (INDICATOR_OFFSET_Y + INDICATOR_BOX_SIZE / 2) * GetContentScaleFactor();
+ return GetYSize() - (INDICATOR_OFFSET_Y + INDICATOR_BOX_SIZE / 2) * GetDPIScaleFactor();
}
int GfxCore::GetIndicatorRadius() const
{
// Return the radius of each indicator.
- return (INDICATOR_BOX_SIZE - INDICATOR_MARGIN * 2) / 2 * GetContentScaleFactor();
+ return (INDICATOR_BOX_SIZE - INDICATOR_MARGIN * 2) / 2 * GetDPIScaleFactor();
}
bool GfxCore::PointWithinCompass(wxPoint point) const
@@ -2201,7 +2196,7 @@
// bar.
if (!ShowingScaleBar()) return false;
- auto f = GetContentScaleFactor();
+ auto f = GetDPIScaleFactor();
wxCoord y = (GetYSize() - SCALE_BAR_OFFSET_Y * f - GetFontSize()) - point.y;
if (y > wxCoord(SCALE_BAR_HEIGHT * f) || y < 0) return false;
@@ -2214,8 +2209,8 @@
bool GfxCore::PointWithinColourKey(wxPoint point) const
{
// Determine whether a point (in window coordinates) lies within the key.
- point.x -= GetXSize() - KEY_OFFSET_X * GetContentScaleFactor();
- point.y = KEY_OFFSET_Y * GetContentScaleFactor() - point.y;
+ point.x -= GetXSize() - KEY_OFFSET_X * GetDPIScaleFactor();
+ point.y = KEY_OFFSET_Y * GetDPIScaleFactor() - point.y;
return (point.x >= key_lowerleft[m_ColourBy].x && point.x <= 0 &&
point.y >= key_lowerleft[m_ColourBy].y && point.y <= 0);
}
@@ -2255,10 +2250,10 @@
if (dx >= 0 && dx * dx + dy * dy <= radius * radius) {
TiltCave(-deg(atan2(double(dy), double(dx))) - m_TiltAngle);
m_MouseOutsideElev = false;
- } else if (dy >= INDICATOR_MARGIN * GetContentScaleFactor()) {
+ } else if (dy >= INDICATOR_MARGIN * GetDPIScaleFactor()) {
TiltCave(-90.0 - m_TiltAngle);
m_MouseOutsideElev = true;
- } else if (dy <= -INDICATOR_MARGIN * GetContentScaleFactor()) {
+ } else if (dy <= -INDICATOR_MARGIN * GetDPIScaleFactor()) {
TiltCave(90.0 - m_TiltAngle);
m_MouseOutsideElev = true;
} else {
@@ -2282,11 +2277,11 @@
{
// Redraw the compass and clino indicators.
- int total_width = GetCompassWidth() + INDICATOR_GAP * GetContentScaleFactor() + GetClinoWidth();
- RefreshRect(wxRect(GetXSize() - INDICATOR_OFFSET_X * GetContentScaleFactor() - total_width,
- GetYSize() - (INDICATOR_OFFSET_Y + INDICATOR_BOX_SIZE) * GetContentScaleFactor(),
+ int total_width = GetCompassWidth() + INDICATOR_GAP * GetDPIScaleFactor() + GetClinoWidth();
+ RefreshRect(wxRect(GetXSize() - INDICATOR_OFFSET_X * GetDPIScaleFactor() - total_width,
+ GetYSize() - (INDICATOR_OFFSET_Y + INDICATOR_BOX_SIZE) * GetDPIScaleFactor(),
total_width,
- INDICATOR_BOX_SIZE * GetContentScaleFactor()), false);
+ INDICATOR_BOX_SIZE * GetDPIScaleFactor()), false);
}
void GfxCore::StartRotation()
@@ -3029,6 +3024,9 @@
AvenBusyCursor hourglass;
+ // Track vertical extent of terrain to feed into viewing volume diameter.
+ double abs_z_max = 0.0;
+
// Draw terrain to twice the extent, or at least 1km.
double r_sqrd = sqrd(max(m_Parent->GetExtent().magnitude(), 1000.0));
@@ -3096,6 +3094,8 @@
double dist_2 = sqrd(pt.GetX()) + sqrd(pt.GetY());
if (dist_2 > r_sqrd) {
pt = Vector3(DBL_MAX, DBL_MAX, DBL_MAX);
+ } else {
+ abs_z_max = std::max(abs_z_max, fabs(pt.GetZ()));
}
}
}
@@ -3173,6 +3173,9 @@
* contain any data inside that circle.
*/
error(/*No terrain data near area of survey*/161);
+ } else {
+ terrain_diameter = sqrt(r_sqrd + sqrd(abs_z_max)) * 2.0;
+ UpdateVolumeDiameter();
}
proj_destroy(pj);
@@ -3262,8 +3265,8 @@
key_list = LIST_STYLE_KEY; break;
}
if (key_list != LIST_LIMIT_) {
- DrawList2D(key_list, GetXSize() - KEY_OFFSET_X * GetContentScaleFactor(),
- GetYSize() - KEY_OFFSET_Y * GetContentScaleFactor(), 0);
+ DrawList2D(key_list, GetXSize() - KEY_OFFSET_X * GetDPIScaleFactor(),
+ GetYSize() - KEY_OFFSET_Y * GetDPIScaleFactor(), 0);
}
}
@@ -4289,10 +4292,8 @@
make_cursor(const unsigned char * bits, const unsigned char * mask,
int hotx, int hoty)
{
-#if defined __WXGTK__ && !defined __WXGTK3__
- // Use this code for GTK < 3 only - it doesn't work properly with GTK3
- // (reported and should be fixed in wxWidgets 3.0.4 and 3.1.1, see:
- // https://trac.wxwidgets.org/ticket/17916)
+#ifdef __WXGTK__
+ // wxGTK can construct directly from XBM data.
return wxCursor((const char *)bits, 32, 32, hotx, hoty,
(const char *)mask, wxBLACK, wxWHITE);
#else
@@ -4390,13 +4391,13 @@
// Pop up menu.
wxMenu menu;
/* TRANSLATORS: View *looking* North */
- menu.Append(menu_ORIENT_MOVE_NORTH, wmsg(/*View &North*/240));
+ menu.Append(menu_ORIENT_MOVE_NORTH, wmsg(/*View &North\tN*/240));
/* TRANSLATORS: View *looking* East */
- menu.Append(menu_ORIENT_MOVE_EAST, wmsg(/*View &East*/241));
+ menu.Append(menu_ORIENT_MOVE_EAST, wmsg(/*View &East\tE*/241));
/* TRANSLATORS: View *looking* South */
- menu.Append(menu_ORIENT_MOVE_SOUTH, wmsg(/*View &South*/242));
+ menu.Append(menu_ORIENT_MOVE_SOUTH, wmsg(/*View &South\tS*/242));
/* TRANSLATORS: View *looking* West */
- menu.Append(menu_ORIENT_MOVE_WEST, wmsg(/*View &West*/243));
+ menu.Append(menu_ORIENT_MOVE_WEST, wmsg(/*View &West\tW*/243));
menu.AppendSeparator();
/* TRANSLATORS: Menu item which turns off the "north arrow" in aven. */
menu.AppendCheckItem(menu_IND_COMPASS, wmsg(/*&Hide Compass*/387));
@@ -4416,8 +4417,8 @@
if (PointWithinClino(point)) {
// Pop up menu.
wxMenu menu;
- menu.Append(menu_ORIENT_PLAN, wmsg(/*&Plan View*/248));
- menu.Append(menu_ORIENT_ELEVATION, wmsg(/*Ele&vation*/249));
+ menu.Append(menu_ORIENT_PLAN, wmsg(/*&Plan View\tP*/248));
+ menu.Append(menu_ORIENT_ELEVATION, wmsg(/*E&levation\tL*/249));
menu.AppendSeparator();
/* TRANSLATORS: Menu item which turns off the tilt indicator in aven. */
menu.AppendCheckItem(menu_IND_CLINO, wmsg(/*&Hide Clino*/384));
@@ -4468,6 +4469,8 @@
menu.AppendCheckItem(menu_COLOUR_BY_GRADIENT, wmsg(/*Colour by &Gradient*/85));
menu.AppendCheckItem(menu_COLOUR_BY_LENGTH, wmsg(/*Colour by &Length*/82));
menu.AppendCheckItem(menu_COLOUR_BY_SURVEY, wmsg(/*Colour by &Survey*/448));
+ // TRANSLATORS: Menu item in Aven. Selects colouring survey legs by
+ // the survey style ("normal", diving, "nosurvey", etc).
menu.AppendCheckItem(menu_COLOUR_BY_STYLE, wmsg(/*Colour by St&yle*/482));
menu.AppendSeparator();
/* TRANSLATORS: Menu item which turns off the colour key.
diff -Nru survex-1.4.17/src/gfxcore.h survex-1.4.22/src/gfxcore.h
--- survex-1.4.17/src/gfxcore.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gfxcore.h 2026-03-21 21:06:18.000000000 +0000
@@ -4,7 +4,7 @@
// Core drawing code for Aven.
//
// Copyright (C) 2000-2001,2002,2005 Mark R. Shinwell.
-// Copyright (C) 2001-2025 Olly Betts
+// Copyright (C) 2001-2026 Olly Betts
// Copyright (C) 2005 Martin Green
//
// This program is free software; you can redistribute it and/or modify
@@ -18,8 +18,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef gfxcore_h
@@ -34,7 +34,7 @@
#include "guicontrol.h"
#include "labelinfo.h"
#include "vector3.h"
-#include "wx.h"
+#include
#include "gla.h"
#include
@@ -274,6 +274,7 @@
bool bigendian;
long last_time = 0;
size_t n_tris = 0;
+ double terrain_diameter = 0.0;
void PlaceVertexWithColour(const Vector3 &v, double factor = 1.0);
void PlaceVertexWithColour(const Vector3 & v,
@@ -311,6 +312,7 @@
void DrawIndicators();
void TryToFreeArrays();
+ double UpdateVolumeDiameter();
void FirstShow();
void DrawScaleBar();
diff -Nru survex-1.4.17/src/gla-gl.cc survex-1.4.22/src/gla-gl.cc
--- survex-1.4.17/src/gla-gl.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gla-gl.cc 2026-03-21 21:06:18.000000000 +0000
@@ -17,14 +17,13 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
#include
-#include
#include
@@ -394,7 +393,7 @@
BEGIN_EVENT_TABLE(GLACanvas, wxGLCanvas)
EVT_SIZE(GLACanvas::OnSize)
-#ifdef HAS_DPI_INDEPENDENT_PIXELS
+#ifdef wxHAS_DPI_INDEPENDENT_PIXELS
EVT_MOVE(GLACanvas::OnMove)
#endif
END_EVENT_TABLE()
@@ -419,16 +418,7 @@
void GLACanvas::FirstShow()
{
-#ifdef HAS_DPI_INDEPENDENT_PIXELS
- content_scale_factor = wxGLCanvas::GetContentScaleFactor();
-#endif
-
- // Update our record of the client area size and centre.
- GetClientSize(&x_size, &y_size);
- x_size *= content_scale_factor;
- y_size *= content_scale_factor;
- if (x_size < 1) x_size = 1;
- if (y_size < 1) y_size = 1;
+ UpdateSize();
ctx.SetCurrent(*this);
opengl_initialised = true;
@@ -514,7 +504,7 @@
wxString path = wmsg_cfgpth();
path += wxCONFIG_PATH_SEPARATOR;
path += wxT("unifont.pixelfont");
- if (!m_Font.load(path, content_scale_factor >= 2)) {
+ if (!m_Font.load(path, dpi_scale_factor >= 2)) {
// FIXME: do something better.
// We have this message available: Error in format of font file “%s”
fprintf(stderr, "Failed to parse compiled-in font data\n");
@@ -639,47 +629,52 @@
}
}
-#ifdef HAS_DPI_INDEPENDENT_PIXELS
-void GLACanvas::UpdateContentScaleFactor()
-{
- double new_content_scale_factor = wxGLCanvas::GetContentScaleFactor();
- if (new_content_scale_factor == content_scale_factor) return;
-
- content_scale_factor = new_content_scale_factor;
- for (auto& i : drawing_lists) {
- i.invalidate_if(INVALIDATE_ON_HIDPI);
- }
-}
-
void GLACanvas::OnMove(wxMoveEvent & event)
{
- UpdateContentScaleFactor();
+ UpdateSize();
event.Skip();
}
-#endif
-void GLACanvas::OnSize(wxSizeEvent & event)
-{
- UpdateContentScaleFactor();
+void GLACanvas::UpdateSize() {
+ // Update our record of the DPI and client area size, and invalidate any
+ // cached lists which depend on anything that has changed.
+ unsigned int mask = 0;
- wxSize size = event.GetSize();
+ double new_dpi_scale_factor = wxGLCanvas::GetDPIScaleFactor();
+ if (dpi_scale_factor != new_dpi_scale_factor) {
+ dpi_scale_factor = new_dpi_scale_factor;
+ mask |= INVALIDATE_ON_HIDPI;
+ }
- int new_w = size.GetWidth() * content_scale_factor;
- int new_h = size.GetHeight() * content_scale_factor;
+ int new_w, new_h;
+ GetClientSize(&new_w, &new_h);
+#ifdef wxHAS_DPI_INDEPENDENT_PIXELS
+ auto content_scale_factor = GetContentScaleFactor();
+ new_w *= content_scale_factor;
+ new_h *= content_scale_factor;
+#endif
// The width and height go to zero when the panel is dragged right
// across so we clamp them to be at least 1 to avoid problems.
if (new_w < 1) new_w = 1;
if (new_h < 1) new_h = 1;
- unsigned int mask = 0;
- if (new_w != x_size) mask |= INVALIDATE_ON_X_RESIZE;
- if (new_h != y_size) mask |= INVALIDATE_ON_Y_RESIZE;
- if (mask) {
+ if (x_size != new_w) {
x_size = new_w;
+ mask |= INVALIDATE_ON_X_RESIZE;
+ }
+ if (y_size != new_h) {
y_size = new_h;
+ mask |= INVALIDATE_ON_Y_RESIZE;
+ }
+ if (mask) {
for (auto& i : drawing_lists) {
i.invalidate_if(mask);
}
}
+}
+
+void GLACanvas::OnSize(wxSizeEvent & event)
+{
+ UpdateSize();
event.Skip();
@@ -715,7 +710,12 @@
// Set the size of the data drawing volume by giving the diameter of the
// smallest sphere containing it.
- m_VolumeDiameter = max(glaCoord(1.0), diameter);
+ diameter = max(glaCoord(1.0), diameter);
+ if (diameter != m_VolumeDiameter) {
+ // Adjust scale so on-screen scale is unchanged.
+ SetScale(m_Scale * diameter / m_VolumeDiameter);
+ m_VolumeDiameter = diameter;
+ }
}
void GLACanvas::StartDrawing()
diff -Nru survex-1.4.17/src/gla.h survex-1.4.22/src/gla.h
--- survex-1.4.17/src/gla.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gla.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,19 +17,19 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef gla_h
#define gla_h
-#include
-#include
-
-using namespace std;
+#include
+#if !wxUSE_GLCANVAS
+# error wxWidgets must be built with wxUSE_GLCANVAS set to 1
+#endif
+#include
-#include "wx.h"
#include "vector3.h"
#include "glbitmapfont.h"
@@ -46,6 +46,11 @@
# include
#endif
+#include
+#include
+
+using namespace std;
+
class GfxCore;
string GetGLSystemDescription();
@@ -156,19 +161,7 @@
int x_size = 0;
int y_size = 0;
- // wxHAS_DPI_INDEPENDENT_PIXELS is new in 3.1.6. In older versions we just
- // always do the scaling which is slightly less efficient for platforms
- // where pixel coordinates don't scale with DPI.
-#if defined wxHAS_DPI_INDEPENDENT_PIXELS || \
- !wxCHECK_VERSION(3,1,6)
-# define HAS_DPI_INDEPENDENT_PIXELS
-#endif
-
-#ifdef HAS_DPI_INDEPENDENT_PIXELS
- double content_scale_factor = 1.0;
-#else
- static constexpr unsigned content_scale_factor = 1;
-#endif
+ double dpi_scale_factor = 1.0;
vector drawing_lists;
@@ -186,6 +179,8 @@
bool CheckVisualFidelity(const unsigned char * target) const;
+ void UpdateSize();
+
public:
GLACanvas(wxWindow* parent, int id);
~GLACanvas();
@@ -333,31 +328,26 @@
return y_size;
}
-#ifdef HAS_DPI_INDEPENDENT_PIXELS
- double GetContentScaleFactor() const {
+ double GetDPIScaleFactor() const {
list_flags |= INVALIDATE_ON_HIDPI;
- return content_scale_factor;
+ return dpi_scale_factor;
}
- void UpdateContentScaleFactor();
void OnMove(wxMoveEvent & event);
-#else
- // wxWindow::GetContentScaleFactor() will always return 1.0, so arrange
- // things so it's a compile-time constant the compiler can optimise away.
- // Use a macro so we can return unsigned instead of double without a lot
- // of pain from trying to override a virtual method while changing the
- // return type.
-# define GetContentScaleFactor() 1u
- void UpdateContentScaleFactor() { }
-#endif
void OnSize(wxSizeEvent & event);
glaCoord GetVolumeDiameter() const { return m_VolumeDiameter; }
void ScaleMouseEvent(wxMouseEvent& e) const {
+#ifdef wxHAS_DPI_INDEPENDENT_PIXELS
+ auto content_scale_factor = GetContentScaleFactor();
+
e.SetX(e.GetX() * content_scale_factor);
e.SetY(e.GetY() * content_scale_factor);
+#else
+ (void)e;
+#endif
}
private:
diff -Nru survex-1.4.17/src/glbitmapfont.cc survex-1.4.22/src/glbitmapfont.cc
--- survex-1.4.17/src/glbitmapfont.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/glbitmapfont.cc 2026-03-21 21:06:18.000000000 +0000
@@ -16,8 +16,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -38,7 +38,7 @@
#include "gllogerror.h"
#include "useful.h"
-#include "wx.h"
+#include
#include
#include
diff -Nru survex-1.4.17/src/glbitmapfont.h survex-1.4.22/src/glbitmapfont.h
--- survex-1.4.17/src/glbitmapfont.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/glbitmapfont.h 2026-03-21 21:06:18.000000000 +0000
@@ -16,14 +16,14 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef GLBITMAPFONT_H_INCLUDED
#define GLBITMAPFONT_H_INCLUDED
-#include "wx.h"
+#include
class BitmapFont {
enum {
diff -Nru survex-1.4.17/src/gllogerror.h survex-1.4.22/src/gllogerror.h
--- survex-1.4.17/src/gllogerror.h 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/gllogerror.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,11 +17,11 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
-#include "wx.h"
+#include
void log_gl_error(const wxChar * str, GLenum error_code);
diff -Nru survex-1.4.17/src/gpx.cc survex-1.4.22/src/gpx.cc
--- survex-1.4.17/src/gpx.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gpx.cc 2026-05-04 02:13:57.000000000 +0000
@@ -2,7 +2,7 @@
* Export from Aven as GPX.
*/
/* Copyright (C) 2012 Olaf Kähler
- * Copyright (C) 2012-2025 Olly Betts
+ * Copyright (C) 2012-2026 Olly Betts
*
* 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 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -99,7 +99,11 @@
const int *
GPX::passes() const
{
- static const int default_passes[] = { LABELS|ENTS|FIXES|EXPORTS, LEGS|SURF, 0 };
+ static const int default_passes[] = {
+ LABELS|ENTS|FIXES|EXPORTS|ANON_STNS,
+ LEGS|SURF,
+ 0
+ };
return default_passes;
}
diff -Nru survex-1.4.17/src/gpx.h survex-1.4.22/src/gpx.h
--- survex-1.4.17/src/gpx.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/gpx.h 2026-03-21 21:06:18.000000000 +0000
@@ -15,8 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
diff -Nru survex-1.4.17/src/guicontrol.cc survex-1.4.22/src/guicontrol.cc
--- survex-1.4.17/src/guicontrol.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/guicontrol.cc 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
diff -Nru survex-1.4.17/src/guicontrol.h survex-1.4.22/src/guicontrol.h
--- survex-1.4.17/src/guicontrol.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/guicontrol.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,14 +17,14 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef guicontrol_h
#define guicontrol_h
-#include "wx.h"
+#include
class GfxCore;
diff -Nru survex-1.4.17/src/hash.c survex-1.4.22/src/hash.c
--- survex-1.4.17/src/hash.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/hash.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/hash.h survex-1.4.22/src/hash.h
--- survex-1.4.17/src/hash.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/hash.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifdef __cplusplus
diff -Nru survex-1.4.17/src/hpgl.cc survex-1.4.22/src/hpgl.cc
--- survex-1.4.17/src/hpgl.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/hpgl.cc 2026-05-04 02:32:46.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/hpgl.h survex-1.4.22/src/hpgl.h
--- survex-1.4.17/src/hpgl.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/hpgl.h 2026-05-04 02:28:19.000000000 +0000
@@ -15,8 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
diff -Nru survex-1.4.17/src/img.c survex-1.4.22/src/img.c
--- survex-1.4.17/src/img.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/img.c 2026-06-23 05:38:23.000000000 +0000
@@ -1,7 +1,7 @@
/* img.c
* Routines for reading and writing processed survey data files
*
- * Copyright (C) 1993-2025 Olly Betts
+ * Copyright (C) 1993-2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifdef HAVE_CONFIG_H
@@ -33,6 +33,10 @@
#include
#include
+#ifdef _WIN32
+# include // For _commit().
+#endif
+
#include "img.h"
#if defined HAVE_STDINT_H || \
@@ -115,6 +119,8 @@
# ifndef FREAD
# ifdef HAVE_FREAD_UNLOCKED
# define FREAD(P, S, N, F) fread_unlocked(P, S, N, F)
+# elif defined HAVE__FREAD_NOLOCK
+# define FREAD(P, S, N, F) _fread_nolock(P, S, N, F)
# else
# define FREAD(P, S, N, F) fread(P, S, N, F)
# endif
@@ -123,6 +129,8 @@
# ifndef FWRITE_
# ifdef HAVE_FWRITE_UNLOCKED
# define FWRITE_(P, S, N, F) fwrite_unlocked(P, S, N, F)
+# elif defined HAVE__FWRITE_NOLOCK
+# define FWRITE_(P, S, N, F) _fwrite_nolock(P, S, N, F)
# else
# define FWRITE_(P, S, N, F) fwrite(P, S, N, F)
# endif
@@ -131,6 +139,8 @@
# ifndef GETC
# ifdef HAVE_GETC_UNLOCKED
# define GETC(F) getc_unlocked(F)
+# elif defined HAVE__GETC_NOLOCK
+# define GETC(F) _getc_nolock(F)
# else
# define GETC(F) getc(F)
# endif
@@ -139,6 +149,8 @@
# ifndef PUTC
# ifdef HAVE_PUTC_UNLOCKED
# define PUTC(C, F) putc_unlocked(C, F)
+# elif defined HAVE__PUTC_NOLOCK
+# define PUTC(C, F) _putc_nolock(C, F)
# else
# define PUTC(C, F) putc(C, F)
# endif
@@ -678,6 +690,8 @@
static int
compass_plt_open(img *pimg, const char *survey)
{
+ // Format documentation:
+ // https://www.fountainware.com/compass/HTML_Help/Compass_Viewer/plotfileformat.htm
int utm_zone = 0;
int datum = img_DATUM_UNKNOWN;
long fpos;
@@ -3670,8 +3684,14 @@
}
}
if (FERROR(pimg->fh)) result = 0;
- if (pimg->close_func && pimg->close_func(pimg->fh))
- result = 0;
+ if (pimg->close_func) {
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ if (result && !pimg->fRead) _commit(fileno(pimg->fh));
+#endif
+ if (pimg->close_func(pimg->fh))
+ result = 0;
+ }
if (!result) img_errno = pimg->fRead ? IMG_READERROR : IMG_WRITEERROR;
}
if (pimg->data) {
diff -Nru survex-1.4.17/src/img.h survex-1.4.22/src/img.h
--- survex-1.4.17/src/img.h 2025-03-18 04:34:54.000000000 +0000
+++ survex-1.4.22/src/img.h 2026-06-23 05:38:23.000000000 +0000
@@ -25,8 +25,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef IMG_H
diff -Nru survex-1.4.17/src/img_for_survex.c survex-1.4.22/src/img_for_survex.c
--- survex-1.4.17/src/img_for_survex.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/img_for_survex.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/img_for_survex.h survex-1.4.22/src/img_for_survex.h
--- survex-1.4.17/src/img_for_survex.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/img_for_survex.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef IMG_FOR_SURVEX_H
diff -Nru survex-1.4.17/src/imgtest.c survex-1.4.22/src/imgtest.c
--- survex-1.4.17/src/imgtest.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/imgtest.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/json.cc survex-1.4.22/src/json.cc
--- survex-1.4.17/src/json.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/json.cc 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/json.h survex-1.4.22/src/json.h
--- survex-1.4.17/src/json.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/json.h 2026-03-21 21:06:18.000000000 +0000
@@ -15,8 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
diff -Nru survex-1.4.17/src/kml.cc survex-1.4.22/src/kml.cc
--- survex-1.4.17/src/kml.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/kml.cc 2026-05-04 02:52:01.000000000 +0000
@@ -2,7 +2,7 @@
* Export from Aven as KML.
*/
/* Copyright (C) 2012 Olaf Kähler
- * Copyright (C) 2012-2024 Olly Betts
+ * Copyright (C) 2012-2026 Olly Betts
*
* 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 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -98,7 +98,14 @@
KML::passes() const
{
static const int default_passes[] = {
- PASG, XSECT, WALL1, WALL2, LEGS|SURF, LABELS|ENTS|FIXES|EXPORTS, 0
+ PASG,
+ XSECT,
+ WALL1,
+ WALL2,
+ LEGS|SURF,
+ LABELS|ENTS|FIXES|EXPORTS,
+ ANON_STNS,
+ 0
};
return default_passes;
}
@@ -393,6 +400,24 @@
}
void
+KML::cross(const img_point *p, const wxString&, int /*sflags*/)
+{
+ // Anonymous station.
+ PJ_COORD coord{{p->x, p->y, p->z, HUGE_VAL}};
+ coord = proj_trans(pj, PJ_FWD, coord);
+ if (coord.xyzt.x == HUGE_VAL ||
+ coord.xyzt.y == HUGE_VAL ||
+ coord.xyzt.z == HUGE_VAL) {
+ // FIXME report errors
+ }
+ // %.8f is at worst just over 1mm.
+ fprintf(fh, "%.8f,%.8f,%.2f \n",
+ coord.xyzt.x,
+ coord.xyzt.y,
+ coord.xyzt.z);
+}
+
+void
KML::footer()
{
if (linestring_flags)
diff -Nru survex-1.4.17/src/kml.h survex-1.4.22/src/kml.h
--- survex-1.4.17/src/kml.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/kml.h 2026-05-04 02:51:30.000000000 +0000
@@ -1,7 +1,7 @@
/* kml.h
* Export from Aven as KML.
*/
-/* Copyright (C) 2005-2024 Olly Betts
+/* Copyright (C) 2005-2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
@@ -43,6 +43,7 @@
void start_pass(int pass) override;
void line(const img_point *, const img_point *, unsigned, bool) override;
void label(const img_point *, const wxString&, int, int) override;
+ void cross(const img_point *, const wxString&, int) override;
void xsect(const img_point *, double, double, double) override;
void wall(const img_point *, double, double) override;
void passage(const img_point *, double, double, double) override;
diff -Nru survex-1.4.17/src/labelinfo.h survex-1.4.22/src/labelinfo.h
--- survex-1.4.17/src/labelinfo.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/labelinfo.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef labelinfo_h
@@ -28,7 +28,7 @@
#include "img_for_survex.h"
#include "message.h"
#include "vector3.h"
-#include "wx.h"
+#include
// macOS headers pollute the global namespace with generic names like
// "class Point", which clashes with our "class Point". So for __WXMAC__
diff -Nru survex-1.4.17/src/listpos.c survex-1.4.22/src/listpos.c
--- survex-1.4.17/src/listpos.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/listpos.c 2026-03-22 21:47:47.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -72,8 +72,8 @@
check_for_unused_fixed_points(void)
{
traverse_prefix_tree(root,
- BIT(SFLAGS_UNUSED_FIXED_POINT),
- BIT(SFLAGS_UNUSED_FIXED_POINT),
+ BIT(SFLAGS_FIXED)|BIT(SFLAGS_USED),
+ BIT(SFLAGS_FIXED),
check_if_unused_fixed_point);
}
diff -Nru survex-1.4.17/src/listpos.h survex-1.4.22/src/listpos.h
--- survex-1.4.17/src/listpos.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/listpos.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,14 +13,14 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/* Check but don't print, for getting the checks we do during the scan. */
void check_node_stats(void);
-/* Scan the prefix tree and issue warnings for any SFLAGS_UNUSED_FIXED_POINT
- * still set.
+/* Scan the prefix tree and issue warnings for any stations with SFLAGS_FIXED
+ * set but SFLAGS_USED not.
*/
void check_for_unused_fixed_points(void);
diff -Nru survex-1.4.17/src/log.cc survex-1.4.22/src/log.cc
--- survex-1.4.17/src/log.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/log.cc 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
diff -Nru survex-1.4.17/src/log.h survex-1.4.22/src/log.h
--- survex-1.4.17/src/log.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/log.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,11 +13,11 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
-#include "wx.h"
+#include
class MyLogWindow : public wxLogWindow {
bool first = true;
diff -Nru survex-1.4.17/src/mainfrm.cc survex-1.4.22/src/mainfrm.cc
--- survex-1.4.17/src/mainfrm.cc 2025-03-19 22:45:20.000000000 +0000
+++ survex-1.4.22/src/mainfrm.cc 2026-06-23 20:17:25.000000000 +0000
@@ -4,7 +4,7 @@
// Main frame handling for Aven.
//
// Copyright (C) 2000-2002,2005,2006 Mark R. Shinwell
-// Copyright (C) 2001-2025 Olly Betts
+// Copyright (C) 2001-2026 Olly Betts
// Copyright (C) 2005 Martin Green
//
// This program is free software; you can redistribute it and/or modify
@@ -18,8 +18,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
@@ -36,9 +36,9 @@
#include "useful.h"
#include
+#include
//#include
#include
-#include
#include
#include
#include
@@ -54,6 +54,10 @@
#include
#include
+#ifdef _WIN32
+# include // For _commit().
+#endif
+
// XPM files declare the array as static, but we also want it to be const too.
// This avoids a compiler warning, and also means the data can go in a
// read-only page and be shared between processes.
@@ -244,7 +248,7 @@
}
void OnBeginLabelEdit(wxListEvent& event) {
- event.Veto(); // No editting allowed
+ event.Veto(); // No editing allowed
}
void OnDeleteItem(wxListEvent& event) {
long item = event.GetIndex();
@@ -391,6 +395,10 @@
}
PUTC('\n', fh_pres);
}
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ _commit(fileno(fh_pres));
+#endif
fclose(fh_pres);
filename = fnm;
modified = false;
@@ -492,7 +500,8 @@
BEGIN_EVENT_TABLE(MainFrm, wxFrame)
EVT_TEXT(textctrl_FIND, MainFrm::OnFind)
- EVT_TEXT_ENTER(textctrl_FIND, MainFrm::OnGotoFound)
+ EVT_SEARCH(textctrl_FIND, MainFrm::OnGotoFound)
+
EVT_SPINCTRLDOUBLE(spinctrl_Z_STRETCH, MainFrm::OnZStretch)
EVT_IDLE(MainFrm::OnIdle)
@@ -705,7 +714,7 @@
SetIcon(wxICON(aven));
#endif
-#if defined(__WXMAC__) && wxCHECK_VERSION(3,1,0)
+#ifdef __WXMAC__
// Add a full screen button to the right upper corner of title bar under OS
// X 10.7 and later.
using_macos_full_screen_view = EnableFullScreenView();
@@ -754,6 +763,9 @@
/* TRANSLATORS: Open a "Terrain file" - i.e. a digital model of the
* terrain. */
filemenu->Append(menu_FILE_OPEN_TERRAIN, wmsg(/*Open &Terrain...*/453));
+ /* TRANSLATORS: This is a menu item which allows displaying a GPX, KML,
+ * shapefile, etc over the survey in Aven.
+ */
filemenu->Append(menu_FILE_OVERLAY_GEODATA, wmsg(/*Overlay &Geodata...*/494));
filemenu->AppendCheckItem(menu_FILE_LOG, wmsg(/*Show &Log*/144));
filemenu->AppendSeparator();
@@ -790,18 +802,18 @@
*/
rotmenu->AppendCheckItem(menu_ROTATION_TOGGLE, wmsg(/*Au&to-Rotate\tSpace*/231));
rotmenu->AppendSeparator();
- rotmenu->Append(menu_ROTATION_REVERSE, wmsg(/*&Reverse Direction*/234));
+ rotmenu->Append(menu_ROTATION_REVERSE, wmsg(/*&Reverse Direction\tR*/234));
wxMenu* orientmenu = new wxMenu;
- orientmenu->Append(menu_ORIENT_MOVE_NORTH, wmsg(/*View &North*/240));
- orientmenu->Append(menu_ORIENT_MOVE_EAST, wmsg(/*View &East*/241));
- orientmenu->Append(menu_ORIENT_MOVE_SOUTH, wmsg(/*View &South*/242));
- orientmenu->Append(menu_ORIENT_MOVE_WEST, wmsg(/*View &West*/243));
+ orientmenu->Append(menu_ORIENT_MOVE_NORTH, wmsg(/*View &North\tN*/240));
+ orientmenu->Append(menu_ORIENT_MOVE_EAST, wmsg(/*View &East\tE*/241));
+ orientmenu->Append(menu_ORIENT_MOVE_SOUTH, wmsg(/*View &South\tS*/242));
+ orientmenu->Append(menu_ORIENT_MOVE_WEST, wmsg(/*View &West\tW*/243));
orientmenu->AppendSeparator();
- orientmenu->Append(menu_ORIENT_PLAN, wmsg(/*&Plan View*/248));
- orientmenu->Append(menu_ORIENT_ELEVATION, wmsg(/*Ele&vation*/249));
+ orientmenu->Append(menu_ORIENT_PLAN, wmsg(/*&Plan View\tP*/248));
+ orientmenu->Append(menu_ORIENT_ELEVATION, wmsg(/*E&levation\tL*/249));
orientmenu->AppendSeparator();
- orientmenu->Append(menu_ORIENT_DEFAULTS, wmsg(/*Restore De&fault View*/254));
+ orientmenu->Append(menu_ORIENT_DEFAULTS, wmsg(/*Restore De&fault View\tDelete*/254));
wxMenu* presmenu = new wxMenu;
presmenu->Append(menu_PRES_NEW, wmsg(/*&New Presentation*/311));
@@ -847,6 +859,10 @@
/* TRANSLATORS: Item in the "Splay Legs" and "Duplicate Legs" submenus - if
* this is selected, such legs are shown the same as other legs. */
splaymenu->AppendCheckItem(menu_SPLAYS_SHOW_NORMAL, wmsg(/*&Show*/409));
+ /* TRANSLATORS: A sub-menu in aven which allows selecting how to display
+ * survey legs with the "splay" flag set (options in the sub-menu
+ * are "Hide"/"Dashed"/"Fade"/"Show").
+ */
viewmenu->Append(menu_VIEW_SPLAYS, wmsg(/*Spla&y Legs*/406), splaymenu);
wxMenu* dupemenu = new wxMenu;
@@ -854,6 +870,10 @@
dupemenu->AppendCheckItem(menu_DUPES_SHOW_DASHED, wmsg(/*&Dashed*/250));
dupemenu->AppendCheckItem(menu_DUPES_SHOW_FADED, wmsg(/*&Fade*/408));
dupemenu->AppendCheckItem(menu_DUPES_SHOW_NORMAL, wmsg(/*&Show*/409));
+ /* TRANSLATORS: A sub-menu in aven which allows selecting how to display
+ * survey legs with the "duplicate" flag set (options in the sub-menu
+ * are "Hide"/"Dashed"/"Fade"/"Show").
+ */
viewmenu->Append(menu_VIEW_DUPES, wmsg(/*&Duplicate Legs*/251), dupemenu);
viewmenu->AppendSeparator();
@@ -1029,6 +1049,7 @@
toolbar->AddSeparator();
m_FindBox = new wxSearchCtrl(toolbar, textctrl_FIND);
m_FindBox->SetSize(160, -1);
+ m_FindBox->SetMinSize(wxSize(160, wxDefaultCoord));
// TRANSLATORS: Placeholder text in aven's station search control.
m_FindBox->SetDescriptiveText(wmsg(/*Find stations*/333));
toolbar->AddControl(m_FindBox);
@@ -1045,7 +1066,8 @@
z_stretch->SetIncrement(0.1);
toolbar->AddSeparator();
toolbar->AddControl(z_stretch);
- // TRANSLATORS: Tooltip for Z exaggeration control.
+ // TRANSLATORS: Tooltip for Z exaggeration control. Vertical distances
+ // in aven are scaled by this factor.
GetToolBar()->SetToolShortHelp(spinctrl_Z_STRETCH,
wmsg(/*Z exaggeration factor*/535));
diff -Nru survex-1.4.17/src/mainfrm.h survex-1.4.22/src/mainfrm.h
--- survex-1.4.17/src/mainfrm.h 2025-03-19 22:45:20.000000000 +0000
+++ survex-1.4.22/src/mainfrm.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,14 +17,14 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef mainfrm_h
#define mainfrm_h
-#include "wx.h"
+#include
#include // for m_FileHistory
#include
#include
@@ -32,6 +32,7 @@
#include
#include
#include
+#include
#include "aventreectrl.h"
#include "gfxcore.h"
diff -Nru survex-1.4.17/src/matrix.c survex-1.4.22/src/matrix.c
--- survex-1.4.17/src/matrix.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/matrix.c 2026-03-22 20:56:24.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/*#define SOR 1*/
@@ -113,12 +113,10 @@
real *M = osmalloc((((n * FACTOR * (n * FACTOR + 1)) >> 1)) * sizeof(real));
real *B = osmalloc(n * FACTOR * sizeof(real));
- if (!fQuiet) {
- if (n == 1)
- out_current_action(msg(/*Solving one equation*/78));
- else
- out_current_action1(msg(/*Solving %d simultaneous equations*/75), (int)n);
- }
+ if (n == 1)
+ out_current_action(msg(/*Solving one equation*/78));
+ else
+ out_current_action1(msg(/*Solving %d simultaneous equations*/75), (int)n);
#ifdef NO_COVARIANCES
int dim = 2;
@@ -171,8 +169,9 @@
stn->colour);
for (int dirn = 0; dirn <= 2 && stn->leg[dirn]; dirn++) {
- printf("Leg %d, vx=%f, reverse=%d, to ", dirn,
- stn->leg[dirn]->v[0], stn->leg[dirn]->l.reverse);
+ printf("Leg %d, vx=%f, reverse=%d, bits = 0x%02x, to ", dirn,
+ stn->leg[dirn]->v[0], stn->leg[dirn]->l.reverse,
+ stn->leg[dirn]->l.bits);
print_prefix(stn->leg[dirn]->l.to->name);
putnl();
}
@@ -220,7 +219,7 @@
}
#endif
} else if (data_here(leg) &&
- (leg->l.reverse & FLAG_ARTICULATION) == 0) {
+ (leg->l.bits & FLAG_ARTICULATION) == 0) {
/* forward leg, unfixed -> unfixed */
int t = to->colour;
SVX_ASSERT(t >= 0);
diff -Nru survex-1.4.17/src/matrix.h survex-1.4.22/src/matrix.h
--- survex-1.4.17/src/matrix.h 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/matrix.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
void solve_matrix(node *list);
diff -Nru survex-1.4.17/src/message.c survex-1.4.22/src/message.c
--- survex-1.4.17/src/message.c 2025-03-17 21:48:09.000000000 +0000
+++ survex-1.4.22/src/message.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/*#define DEBUG 1*/
@@ -982,6 +982,9 @@
case LANG_CHINESE:
msg_lang = "zh_CN";
break;
+ case LANG_CZECH:
+ msg_lang = "cs";
+ break;
case LANG_ENGLISH:
if (SUBLANGID(langid) == SUBLANG_ENGLISH_US)
msg_lang = "en_US";
diff -Nru survex-1.4.17/src/message.h survex-1.4.22/src/message.h
--- survex-1.4.17/src/message.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/message.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef MESSAGE_H /* only include once */
diff -Nru survex-1.4.17/src/model.cc survex-1.4.22/src/model.cc
--- survex-1.4.17/src/model.cc 2025-03-18 22:16:06.000000000 +0000
+++ survex-1.4.22/src/model.cc 2026-03-21 21:06:18.000000000 +0000
@@ -18,8 +18,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
diff -Nru survex-1.4.17/src/model.h survex-1.4.22/src/model.h
--- survex-1.4.17/src/model.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/model.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,14 +17,14 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef model_h
#define model_h
-#include "wx.h"
+#include
#include "labelinfo.h"
#include "vector3.h"
diff -Nru survex-1.4.17/src/moviemaker-legacy.cc survex-1.4.22/src/moviemaker-legacy.cc
--- survex-1.4.17/src/moviemaker-legacy.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/moviemaker-legacy.cc 1970-01-01 00:00:00.000000000 +0000
@@ -1,631 +0,0 @@
-//
-// moviemaker.cc
-//
-// Class for writing movies from Aven for old FFmpeg
-//
-// Copyright (C) 2004,2011,2012,2013,2014,2015,2016 Olly Betts
-//
-// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-/* Based on output-example.c:
- *
- * Libavformat API example: Output a media file in any supported
- * libavformat format. The default codecs are used.
- *
- * Copyright (c) 2003 Fabrice Bellard
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include
-
-#define __STDC_CONSTANT_MACROS
-
-#include
-#include
-#include
-#include
-
-#include "moviemaker.h"
-
-#ifdef WITH_FFMPEG
-extern "C" {
-# include
-# include
-# include
-# include
-}
-# ifndef AV_PKT_FLAG_KEY
-# define AV_PKT_FLAG_KEY PKT_FLAG_KEY
-# endif
-# ifndef HAVE_AV_GUESS_FORMAT
-# define av_guess_format guess_format
-# endif
-# ifndef HAVE_AVIO_OPEN
-# define avio_open url_fopen
-# endif
-# ifndef HAVE_AVIO_CLOSE
-# define avio_close url_fclose
-# endif
-# ifndef HAVE_AV_FRAME_ALLOC
-static inline AVFrame * av_frame_alloc() {
- return avcodec_alloc_frame();
-}
-# endif
-# ifndef HAVE_AV_FRAME_FREE
-# ifdef HAVE_AVCODEC_FREE_FRAME
-static inline void av_frame_free(AVFrame ** frame) {
- avcodec_free_frame(frame);
-}
-# else
-static inline void av_frame_free(AVFrame ** frame) {
- free((*frame)->data[0]);
- free(*frame);
- *frame = NULL;
-}
-# endif
-# endif
-# ifndef HAVE_AVCODEC_OPEN2
-// We always pass NULL for OPTS below.
-# define avcodec_open2(CTX, CODEC, OPTS) avcodec_open(CTX, CODEC)
-# endif
-# ifndef HAVE_AVFORMAT_NEW_STREAM
-// We always pass NULL for CODEC below.
-# define avformat_new_stream(S, CODEC) av_new_stream(S, 0)
-# endif
-# if !HAVE_DECL_AVMEDIA_TYPE_VIDEO
-# define AVMEDIA_TYPE_VIDEO CODEC_TYPE_VIDEO
-# endif
-# if !HAVE_DECL_AV_CODEC_ID_NONE
-# define AV_CODEC_ID_NONE CODEC_ID_NONE
-# endif
-# if !HAVE_DECL_AV_PIX_FMT_RGB24
-# define AV_PIX_FMT_RGB24 PIX_FMT_RGB24
-# endif
-# if !HAVE_DECL_AV_PIX_FMT_YUV420P
-# define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
-# endif
-# ifndef AVIO_FLAG_WRITE
-# define AVIO_FLAG_WRITE URL_WRONLY
-# endif
-
-enum {
- MOVIE_NO_SUITABLE_FORMAT = 1,
- MOVIE_AUDIO_ONLY,
- MOVIE_FILENAME_TOO_LONG
-};
-
-# ifndef HAVE_AVCODEC_ENCODE_VIDEO2
-const int OUTBUF_SIZE = 200000;
-# endif
-#endif
-
-MovieMaker::MovieMaker()
-{
-#ifdef WITH_FFMPEG
- static bool initialised_ffmpeg = false;
- if (initialised_ffmpeg) return;
-
- // FIXME: register only the codec(s) we want to use...
- avcodec_register_all();
- av_register_all();
-
- initialised_ffmpeg = true;
-#endif
-}
-
-#ifdef WITH_FFMPEG
-static int
-write_packet(void *opaque, uint8_t *buf, int buf_size) {
- FILE * fh = (FILE*)opaque;
- size_t res = FWRITE_(buf, 1, buf_size, fh);
- return res > 0 ? res : -1;
-}
-
-static int64_t
-seek_stream(void *opaque, int64_t offset, int whence) {
- FILE * fh = (FILE*)opaque;
- return fseek(fh, offset, whence);
-}
-#endif
-
-#define MAX_EXTENSION_LEN 8
-
-bool MovieMaker::Open(FILE* fh, const char * ext, int width, int height)
-{
-#ifdef WITH_FFMPEG
- fh_to_close = fh;
-
- AVOutputFormat * fmt = NULL;
- char dummy_filename[MAX_EXTENSION_LEN + 3] = "x.";
- if (strlen(ext) <= MAX_EXTENSION_LEN) {
- strcpy(dummy_filename + 2, ext);
- // Pass "x." + extension to av_guess_format() to avoid having to deal
- // with wide character filenames.
- fmt = av_guess_format(NULL, dummy_filename, NULL);
- }
- if (!fmt) {
- // We couldn't deduce the output format from file extension so default
- // to MPEG.
- fmt = av_guess_format("mpeg", NULL, NULL);
- if (!fmt) {
- averrno = MOVIE_NO_SUITABLE_FORMAT;
- return false;
- }
- strcpy(dummy_filename + 2, "mpg");
- }
- if (fmt->video_codec == AV_CODEC_ID_NONE) {
- averrno = MOVIE_AUDIO_ONLY;
- return false;
- }
-
- /* Allocate the output media context. */
- oc = avformat_alloc_context();
- if (!oc) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
- oc->oformat = fmt;
- strcpy(oc->filename, dummy_filename);
-
- /* find the video encoder */
- AVCodec *codec = avcodec_find_encoder(fmt->video_codec);
- if (!codec) {
- // FIXME : Erm - internal ffmpeg library problem?
- averrno = AVERROR(ENOMEM);
- return false;
- }
-
- // Add the video stream.
- video_st = avformat_new_stream(oc, codec);
- if (!video_st) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
-
- // Set sample parameters.
- AVCodecContext *c = video_st->codec;
- c->bit_rate = 400000;
- /* Resolution must be a multiple of two. */
- c->width = width;
- c->height = height;
- /* timebase: This is the fundamental unit of time (in seconds) in terms
- * of which frame timestamps are represented. For fixed-fps content,
- * timebase should be 1/framerate and timestamp increments should be
- * identical to 1. */
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(55, 44, 0)
- // Old way, which now causes deprecation warnings.
- c->time_base.den = 25; // Frames per second.
- c->time_base.num = 1;
-#else
- video_st->time_base.den = 25; // Frames per second.
- video_st->time_base.num = 1;
- c->time_base = video_st->time_base;
-#endif
- c->gop_size = 12; /* emit one intra frame every twelve frames at most */
- c->pix_fmt = AV_PIX_FMT_YUV420P;
- c->rc_buffer_size = c->bit_rate * 4; // Enough for 4 seconds
- c->rc_max_rate = c->bit_rate * 2;
- // B frames are backwards predicted - they can improve compression,
- // but may slow encoding and decoding.
- // if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
- // c->max_b_frames = 2;
- // }
-
- /* Some formats want stream headers to be separate. */
- if (oc->oformat->flags & AVFMT_GLOBALHEADER)
- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-
- int retval;
-#ifndef HAVE_AVFORMAT_WRITE_HEADER
- // Set the output parameters (must be done even if no parameters).
- retval = av_set_parameters(oc, NULL);
- if (retval < 0) {
- averrno = retval;
- return false;
- }
-#endif
-
- retval = avcodec_open2(c, NULL, NULL);
- if (retval < 0) {
- averrno = retval;
- return false;
- }
-
-#ifndef HAVE_AVCODEC_ENCODE_VIDEO2
- outbuf = NULL;
- if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
- outbuf = (unsigned char *)av_malloc(OUTBUF_SIZE);
- if (!outbuf) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
- }
-#endif
-
- /* Allocate the encoded raw picture. */
- frame = av_frame_alloc();
- if (!frame) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
- retval = av_image_alloc(frame->data, frame->linesize,
- c->width, c->height, c->pix_fmt, 1);
- if (retval < 0) {
- averrno = retval;
- return false;
- }
-
- if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
- // FIXME need to allocate another frame for this case if we stop
- // hardcoding AV_PIX_FMT_YUV420P.
- abort();
- }
-
- frame->format = c->pix_fmt;
- frame->width = c->width;
- frame->height = c->height;
-
- pixels = (unsigned char *)av_malloc(width * height * 6);
- if (!pixels) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
-
- // Show the format we've ended up with (for debug purposes).
- // av_dump_format(oc, 0, fnm, 1);
-
- av_free(sws_ctx);
- sws_ctx = sws_getContext(width, height, AV_PIX_FMT_RGB24,
- width, height, c->pix_fmt, SWS_BICUBIC,
- NULL, NULL, NULL);
- if (sws_ctx == NULL) {
- fprintf(stderr, "Cannot initialize the conversion context!\n");
- averrno = AVERROR(ENOMEM);
- return false;
- }
-
- if (!(fmt->flags & AVFMT_NOFILE)) {
- const int buf_size = 8192;
- void * buf = av_malloc(buf_size);
- oc->pb = avio_alloc_context(static_cast(buf), buf_size, 1,
- fh, NULL, write_packet, seek_stream);
- if (!oc->pb) {
- averrno = AVERROR(ENOMEM);
- return false;
- }
- }
-
- // Write the stream header, if any.
-#ifdef HAVE_AVFORMAT_WRITE_HEADER
- retval = avformat_write_header(oc, NULL);
-#else
- retval = av_write_header(oc);
-#endif
- if (retval < 0) {
- averrno = retval;
- return false;
- }
-
- averrno = 0;
- return true;
-#else
- (void)fh;
- (void)ext;
- (void)width;
- (void)height;
- return false;
-#endif
-}
-
-unsigned char * MovieMaker::GetBuffer() const {
-#ifdef WITH_FFMPEG
- return pixels + GetWidth() * GetHeight() * 3;
-#else
- return NULL;
-#endif
-}
-
-int MovieMaker::GetWidth() const {
-#ifdef WITH_FFMPEG
- assert(video_st);
- AVCodecContext *c = video_st->codec;
- return c->width;
-#else
- return 0;
-#endif
-}
-
-int MovieMaker::GetHeight() const {
-#ifdef WITH_FFMPEG
- assert(video_st);
- AVCodecContext *c = video_st->codec;
- return c->height;
-#else
- return 0;
-#endif
-}
-
-bool MovieMaker::AddFrame()
-{
-#ifdef WITH_FFMPEG
- AVCodecContext * c = video_st->codec;
-
- if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
- // FIXME convert...
- abort();
- }
-
- int len = 3 * c->width;
- {
- // Flip image vertically
- int h = c->height;
- unsigned char * src = pixels + h * len;
- unsigned char * dest = src - len;
- while (h--) {
- memcpy(dest, src, len);
- src += len;
- dest -= len;
- }
- }
- sws_scale(sws_ctx, &pixels, &len, 0, c->height, frame->data, frame->linesize);
-
- if (oc->oformat->flags & AVFMT_RAWPICTURE) {
- abort();
- }
-
- // Encode this frame.
-#ifdef HAVE_AVCODEC_ENCODE_VIDEO2
- AVPacket pkt;
- int got_packet;
- av_init_packet(&pkt);
- pkt.data = NULL;
-
- int ret = avcodec_encode_video2(c, &pkt, frame, &got_packet);
- if (ret < 0) {
- averrno = ret;
- return false;
- }
- if (got_packet && pkt.size) {
- // Write the compressed frame to the media file.
- if (pkt.pts != int64_t(AV_NOPTS_VALUE)) {
- pkt.pts = av_rescale_q(pkt.pts,
- c->time_base, video_st->time_base);
- }
- if (pkt.dts != int64_t(AV_NOPTS_VALUE)) {
- pkt.dts = av_rescale_q(pkt.dts,
- c->time_base, video_st->time_base);
- }
- pkt.stream_index = video_st->index;
-
- /* Write the compressed frame to the media file. */
- ret = av_interleaved_write_frame(oc, &pkt);
- if (ret < 0) {
- averrno = ret;
- return false;
- }
- }
-#else
- out_size = avcodec_encode_video(c, outbuf, OUTBUF_SIZE, frame);
- // outsize == 0 means that this frame has been buffered, so there's nothing
- // to write yet.
- if (out_size) {
- // Write the compressed frame to the media file.
- AVPacket pkt;
- av_init_packet(&pkt);
-
- if (c->coded_frame->pts != (int64_t)AV_NOPTS_VALUE)
- pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, video_st->time_base);
- if (c->coded_frame->key_frame)
- pkt.flags |= AV_PKT_FLAG_KEY;
- pkt.stream_index = video_st->index;
- pkt.data = outbuf;
- pkt.size = out_size;
-
- /* Write the compressed frame to the media file. */
- int ret = av_interleaved_write_frame(oc, &pkt);
- if (ret < 0) {
- averrno = ret;
- return false;
- }
- }
-#endif
-#endif
- return true;
-}
-
-bool
-MovieMaker::Close()
-{
-#ifdef WITH_FFMPEG
- if (video_st && averrno == 0) {
- // No more frames to compress. The codec may have a few frames
- // buffered if we're using B frames, so write those too.
- AVCodecContext * c = video_st->codec;
-
-#ifdef HAVE_AVCODEC_ENCODE_VIDEO2
- while (1) {
- AVPacket pkt;
- int got_packet;
- av_init_packet(&pkt);
- pkt.data = NULL;
- pkt.size = 0;
-
- int ret = avcodec_encode_video2(c, &pkt, NULL, &got_packet);
- if (ret < 0) {
- release();
- averrno = ret;
- return false;
- }
- if (!got_packet) break;
- if (!pkt.size) continue;
-
- // Write the compressed frame to the media file.
- if (pkt.pts != int64_t(AV_NOPTS_VALUE)) {
- pkt.pts = av_rescale_q(pkt.pts,
- c->time_base, video_st->time_base);
- }
- if (pkt.dts != int64_t(AV_NOPTS_VALUE)) {
- pkt.dts = av_rescale_q(pkt.dts,
- c->time_base, video_st->time_base);
- }
- pkt.stream_index = video_st->index;
-
- /* Write the compressed frame to the media file. */
- ret = av_interleaved_write_frame(oc, &pkt);
- if (ret < 0) {
- release();
- averrno = ret;
- return false;
- }
- }
-#else
- while (out_size) {
- out_size = avcodec_encode_video(c, outbuf, OUTBUF_SIZE, NULL);
- if (out_size) {
- // Write the compressed frame to the media file.
- AVPacket pkt;
- av_init_packet(&pkt);
-
- if (c->coded_frame->pts != (int64_t)AV_NOPTS_VALUE)
- pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, video_st->time_base);
- if (c->coded_frame->key_frame)
- pkt.flags |= AV_PKT_FLAG_KEY;
- pkt.stream_index = video_st->index;
- pkt.data = outbuf;
- pkt.size = out_size;
-
- /* write the compressed frame in the media file */
- int ret = av_interleaved_write_frame(oc, &pkt);
- if (ret < 0) {
- release();
- averrno = ret;
- return false;
- }
- }
- }
-#endif
-
- av_write_trailer(oc);
- }
-
- release();
-#endif
- return true;
-}
-
-#ifdef WITH_FFMPEG
-void
-MovieMaker::release()
-{
- if (video_st) {
- // Close codec.
- avcodec_close(video_st->codec);
- video_st = NULL;
- }
-
- if (frame) {
- av_frame_free(&frame);
- }
- av_free(pixels);
- pixels = NULL;
- av_free(outbuf);
- outbuf = NULL;
- av_free(sws_ctx);
- sws_ctx = NULL;
-
- if (oc) {
- // Free the streams.
- for (size_t i = 0; i < oc->nb_streams; ++i) {
- av_freep(&oc->streams[i]->codec);
- av_freep(&oc->streams[i]);
- }
-
- if (!(oc->oformat->flags & AVFMT_NOFILE)) {
- // Release the AVIOContext.
- av_free(oc->pb);
- }
-
- // Free the stream.
- av_free(oc);
- oc = NULL;
- }
- if (fh_to_close) {
- fclose(fh_to_close);
- fh_to_close = NULL;
- }
-}
-#endif
-
-MovieMaker::~MovieMaker()
-{
-#ifdef WITH_FFMPEG
- release();
-#endif
-}
-
-const char *
-MovieMaker::get_error_string() const
-{
-#ifdef WITH_FFMPEG
- switch (averrno) {
- case AVERROR(EIO):
- return "I/O error";
- case AVERROR(EDOM):
- return "Number syntax expected in filename";
- case AVERROR_INVALIDDATA:
- /* same as AVERROR_UNKNOWN: return "unknown error"; */
- return "invalid data found";
- case AVERROR(ENOMEM):
- return "not enough memory";
- case AVERROR(EILSEQ):
- return "unknown format";
- case AVERROR(ENOSYS):
- return "Operation not supported";
- case AVERROR(ENOENT):
- return "No such file or directory";
- case AVERROR_EOF:
- return "End of file";
- case AVERROR_PATCHWELCOME:
- return "Not implemented in FFmpeg";
- case 0:
- return "No error";
- case MOVIE_NO_SUITABLE_FORMAT:
- return "Couldn't find a suitable output format";
- case MOVIE_AUDIO_ONLY:
- return "Audio-only format specified";
- case MOVIE_FILENAME_TOO_LONG:
- return "Filename too long";
- }
-#endif
- return "Unknown error";
-}
diff -Nru survex-1.4.17/src/moviemaker.cc survex-1.4.22/src/moviemaker.cc
--- survex-1.4.17/src/moviemaker.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/moviemaker.cc 2026-05-18 01:46:33.000000000 +0000
@@ -3,7 +3,7 @@
//
// Class for writing movies from Aven.
//
-// Copyright (C) 2004-2024 Olly Betts
+// Copyright (C) 2004-2026 Olly Betts
//
// 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
@@ -16,8 +16,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
/* Based on output-example.c:
@@ -55,6 +55,10 @@
#include
#include
+#ifdef _WIN32
+# include // For _commit().
+#endif
+
#include "moviemaker.h"
#ifdef WITH_FFMPEG
@@ -400,6 +404,10 @@
oc = NULL;
if (fh_to_close) {
+#ifdef _WIN32
+ // Untested attempt to address https://trac.survex.com/ticket/147
+ _commit(fileno(fh_to_close));
+#endif
fclose(fh_to_close);
fh_to_close = NULL;
}
@@ -452,6 +460,6 @@
#else
-#include "moviemaker-legacy.cc"
+#error Need libavcodec 57 or newer (FFmpeg >= 3.2)
#endif
diff -Nru survex-1.4.17/src/moviemaker.h survex-1.4.22/src/moviemaker.h
--- survex-1.4.17/src/moviemaker.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/moviemaker.h 2026-03-21 21:06:18.000000000 +0000
@@ -16,8 +16,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef moviemaker_h
diff -Nru survex-1.4.17/src/namecmp.c survex-1.4.22/src/namecmp.c
--- survex-1.4.17/src/namecmp.c 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/namecmp.c 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/namecmp.h survex-1.4.22/src/namecmp.h
--- survex-1.4.17/src/namecmp.h 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/namecmp.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifdef __cplusplus
diff -Nru survex-1.4.17/src/namecompare.cc survex-1.4.22/src/namecompare.cc
--- survex-1.4.17/src/namecompare.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/namecompare.cc 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/namecompare.h survex-1.4.22/src/namecompare.h
--- survex-1.4.17/src/namecompare.h 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/namecompare.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,10 +13,10 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
-#include "wx.h"
+#include
extern int name_cmp(const wxString &a, const wxString &b, int separator);
diff -Nru survex-1.4.17/src/netartic.c survex-1.4.22/src/netartic.c
--- survex-1.4.17/src/netartic.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/netartic.c 2026-03-22 20:56:24.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#if 0
@@ -258,8 +258,8 @@
// Mark leg as an articulation, which is used while
// building the matrix and when reporting
// misclosures.
- to->leg[back]->l.reverse |= FLAG_ARTICULATION;
- stn->leg[j]->l.reverse |= FLAG_ARTICULATION;
+ to->leg[back]->l.bits |= FLAG_ARTICULATION;
+ stn->leg[j]->l.bits |= FLAG_ARTICULATION;
/* start new articulation */
articulation *art = osnew(articulation);
@@ -327,38 +327,49 @@
if (stnlist) {
/* Any stations still in stnlist are unreachable from fixed points
- * which means we have one or more hanging surveys.
- *
- * The cause of the problem is pretty likely to be a typo, so run the
- * checks which report errors and warnings about issues which such a
- * typo is likely to result in.
+ * which means we have one or more hanging surveys. Since Survex
+ * 1.4.10 we warn about these and then ignore them.
*/
- check_node_stats();
-
bool fNotAttached = false;
/* TRANSLATORS: At the end of processing (or if a *SOLVE command is used)
* cavern will issue this warning if there are any sections of the survey
* network which are hanging. */
warning(/*Survey not all connected to fixed stations*/45);
for (node *stn = stnlist; stn; stn = stn->next) {
+ // If this is an anonymous station, find the neighbouring station
+ // in the unreduced network and report that instead as a named
+ // station will mean more to the user trying to understand where
+ // the problem is.
+ //
+ // There should always be such a station, but if there isn't or we
+ // fail to find it, we'll report the file and line number which is
+ // still useful, e.g.
+ //
+ // foo.svx:16: info: anonymous station
prefix *name = find_non_anon_stn(stn)->name;
if (TSTBIT(name->sflags, SFLAGS_HANGING)) {
/* Already reported this name as hanging. */
continue;
}
name->sflags |= BIT(SFLAGS_HANGING);
- if (prefix_ident(name)) {
- if (!fNotAttached) {
- fNotAttached = true;
- /* TRANSLATORS: Here "station" is a survey station, not a
- * train station. */
- puts(msg(/*The following survey stations are not attached to a fixed point:*/71));
- }
- printf("%s:%d: %s: ",
- name->filename, name->line, msg(/*info*/485));
- print_prefix(name);
- putnl();
+
+ if (!name->filename) {
+ // Invented station (e.g. from delta-star transform) - there's
+ // no name and no location so these aren't useful to report.
+ // FIXME: Will there always be another station in the reduced
+ // network or should we try to find a named neighbour?
+ continue;
+ }
+
+ if (!fNotAttached) {
+ fNotAttached = true;
+ /* TRANSLATORS: Here "station" is a survey station, not a
+ * train station. */
+ puts(msg(/*The following survey stations are not attached to a fixed point:*/71));
}
+ printf("%s:%d: %s: ", name->filename, name->line, msg(/*info*/485));
+ print_prefix(name);
+ putnl();
}
// We need to include hanging surveys in the count of connected
@@ -455,12 +466,12 @@
if (f) {
printf("awooga - gap in legs\n");
}
- if (stn->leg[d]->l.reverse & FLAG_ARTICULATION) {
- if (!(reverse_leg(stn->leg[d])->l.reverse & FLAG_ARTICULATION)) {
+ if (stn->leg[d]->l.bits & FLAG_ARTICULATION) {
+ if (!(reverse_leg(stn->leg[d])->l.bits & FLAG_ARTICULATION)) {
printf("awooga - bad articulation (one way art)\n");
}
} else {
- if (reverse_leg(stn->leg[d])->l.reverse & FLAG_ARTICULATION) {
+ if (reverse_leg(stn->leg[d])->l.bits & FLAG_ARTICULATION) {
printf("awooga - bad articulation (one way art)\n");
}
}
@@ -485,7 +496,7 @@
printf("awooga - gap in legs\n");
}
if (stn2->colour) {
- if (!(stn->leg[d]->l.reverse & FLAG_ARTICULATION)) {
+ if (!(stn->leg[d]->l.bits & FLAG_ARTICULATION)) {
if (stn->colour == 0) {
stn->colour = stn2->colour;
c++;
@@ -517,7 +528,7 @@
printf("awooga - gap in legs\n");
}
#ifdef DEBUG_ARTIC
- if (stn->leg[d]->l.reverse & FLAG_ARTICULATION) {
+ if (stn->leg[d]->l.bits & FLAG_ARTICULATION) {
node *stn2 = stn->leg[d]->l.to;
printf("art: %ld %ld [%p] ", stn->colour, stn2->colour, stn);
print_prefix(stn->name);
diff -Nru survex-1.4.17/src/netartic.h survex-1.4.22/src/netartic.h
--- survex-1.4.17/src/netartic.h 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/netartic.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
void articulate(void);
diff -Nru survex-1.4.17/src/netbits.c survex-1.4.22/src/netbits.c
--- survex-1.4.17/src/netbits.c 2025-03-16 22:13:03.000000000 +0000
+++ survex-1.4.22/src/netbits.c 2026-03-22 22:09:45.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -293,7 +293,9 @@
leg->v[2] = vz;
#endif
leg2->l.reverse = i;
- leg->l.reverse = j | FLAG_DATAHERE | leg_flags;
+ leg2->l.bits = 0;
+ leg->l.reverse = j;
+ leg->l.bits = FLAG_DATAHERE | leg_flags;
leg->l.flags = pcs->flags | (pcs->recorded_style << FLAGS_STYLE_BIT0);
leg->meta = pcs->meta;
@@ -363,8 +365,8 @@
cLegs++;
/* Suppress "unused fixed point" warnings for these stations. */
- fr_name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
- to_name->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ fr_name->sflags |= BIT(SFLAGS_USED);
+ to_name->sflags |= BIT(SFLAGS_USED);
last_leg.to_name = to_name;
last_leg.fr_name = fr_name;
@@ -470,8 +472,8 @@
}
/* Suppress "unused fixed point" warnings for these stations. */
- name1->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
- name2->sflags &= ~BIT(SFLAGS_UNUSED_FIXED_POINT);
+ name1->sflags |= BIT(SFLAGS_USED);
+ name2->sflags |= BIT(SFLAGS_USED);
/* count equates as legs for now... */
cLegs++;
@@ -535,11 +537,13 @@
#else
leg->v[0] = leg->v[1] = leg->v[2] = (real)0.0;
#endif
- leg->l.reverse = 1 | FLAG_DATAHERE | FLAG_FAKE;
+ leg->l.reverse = 1;
+ leg->l.bits = FLAG_DATAHERE | FLAG_FAKE;
leg->l.flags = pcs->flags | (pcs->recorded_style << FLAGS_STYLE_BIT0);
leg2->l.to = stn;
leg2->l.reverse = 0;
+ leg2->l.bits = 0;
// NB this preserves pos->stn->leg[0] pointing to the "real" fixed point
// for stations fixed with error estimates.
diff -Nru survex-1.4.17/src/netbits.h survex-1.4.22/src/netbits.h
--- survex-1.4.17/src/netbits.h 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/src/netbits.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
void clear_last_leg(void);
diff -Nru survex-1.4.17/src/netskel.c survex-1.4.22/src/netskel.c
--- survex-1.4.17/src/netskel.c 2025-03-19 04:13:00.000000000 +0000
+++ survex-1.4.22/src/netskel.c 2026-03-22 20:56:24.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/* #define BLUNDER_DETECTION */
@@ -133,7 +133,7 @@
/*Survey has no fixed points. Therefore I’ve fixed %s at (0,0,0)*/72,
sprint_prefix(stn_to_fix->name));
static const double origin[3] = { 0.0, 0.0, 0.0 };
- fix_station(stn_to_fix->name, origin);
+ fix_station(stn_to_fix->name, origin, -1);
// We should not set the FIXED flag for the invented fix though.
stn_to_fix->name->sflags &= ~BIT(SFLAGS_FIXED);
}
@@ -207,7 +207,7 @@
/* i is the direction to swap with */
i = (three_node(stn2)) ? 2 : 1;
/* change the other direction of leg i to use leg j */
- reverse_leg(stn2->leg[i])->l.reverse += j - i;
+ reverse_leg(stn2->leg[i])->l.reverse = j;
stn2->leg[j] = stn2->leg[i];
j = i;
}
@@ -234,7 +234,7 @@
for (int d = 0; d <= 2; d++) {
linkfor *leg = stn->leg[d];
if (!leg) break;
- if (!(leg->l.reverse & FLAG_REPLACEMENTLEG))
+ if (!(leg->l.bits & FLAG_REPLACEMENTLEG))
concatenate_trav(stn, d);
}
}
@@ -242,7 +242,7 @@
if (!three_node(stn)) continue;
for (int d = 0; d <= 2; d++) {
linkfor *leg = stn->leg[d];
- if (!(leg->l.reverse & FLAG_REPLACEMENTLEG))
+ if (!(leg->l.bits & FLAG_REPLACEMENTLEG))
concatenate_trav(stn, d);
}
}
@@ -270,7 +270,8 @@
#endif
newleg2->l.to = stn;
- newleg2->l.reverse = i | FLAG_REPLACEMENTLEG;
+ newleg2->l.reverse = i;
+ newleg2->l.bits = FLAG_REPLACEMENTLEG;
trav->join1 = stn->leg[i];
j = reverse_leg_dirn(stn->leg[i]);
@@ -303,7 +304,8 @@
ptr = trav;
newleg->l.to = stn;
- newleg->l.reverse = j | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ newleg->l.reverse = j;
+ newleg->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
newleg2->l.to->leg[reverse_leg_dirn(newleg2)] = newleg;
/* i.e. stn->leg[i] = newleg; with original stn and i */
@@ -459,7 +461,7 @@
for (i = 0; i <= 2; i++) {
linkfor *leg = stn1->leg[i];
if (leg && data_here(leg) &&
- !(leg->l.reverse & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
+ !(leg->l.bits & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
SVX_ASSERT(fixed(stn1));
SVX_ASSERT(!fZeros(&leg->v));
@@ -483,7 +485,7 @@
img_write_item(pimg, img_LINE, leg->l.flags & FLAGS_MASK,
sprint_prefix(stn1->name->up),
POS(stn2, 0), POS(stn2, 1), POS(stn2, 2));
- if (!(leg->l.reverse & FLAG_ARTICULATION)) {
+ if (!(leg->l.bits & FLAG_ARTICULATION)) {
#ifdef BLUNDER_DETECTION
delta err;
int do_blunder;
@@ -585,7 +587,7 @@
img_write_item(pimg, img_MOVE, 0, NULL,
POS(stn1, 0), POS(stn1, 1), POS(stn1, 2));
- fArtic = stn1->leg[i]->l.reverse & FLAG_ARTICULATION;
+ fArtic = stn1->leg[i]->l.bits & FLAG_ARTICULATION;
free(stn1->leg[i]);
stn1->leg[i] = ptr->join1; /* put old link back in */
@@ -652,7 +654,7 @@
}
}
- if (!(leg->l.reverse & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
+ if (!(leg->l.bits & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
if (TSTBIT(leg->l.flags, FLAGS_SURFACE)) {
stn1->name->sflags |= BIT(SFLAGS_SURFACE);
stn3->name->sflags |= BIT(SFLAGS_SURFACE);
@@ -810,7 +812,7 @@
/* j is the direction to swap with */
int j = (stn1->leg[1]) ? 2 : 1;
/* change the other direction of leg i to use leg j */
- reverse_leg(stn1->leg[i])->l.reverse += j - i;
+ reverse_leg(stn1->leg[i])->l.reverse = j;
stn1->leg[j] = stn1->leg[i];
}
stn1->leg[i] = ptrTrail->join1;
@@ -840,7 +842,7 @@
}
add_stn_to_list(&fixedlist, stn2);
- if (!(leg->l.reverse & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
+ if (!(leg->l.bits & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
if (TSTBIT(leg->l.flags, FLAGS_SURFACE)) {
stn1->name->sflags |= BIT(SFLAGS_SURFACE);
stn2->name->sflags |= BIT(SFLAGS_SURFACE);
@@ -849,7 +851,7 @@
stn2->name->sflags |= BIT(SFLAGS_UNDERGROUND);
}
}
- if (!(leg->l.reverse & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
+ if (!(leg->l.bits & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
SVX_ASSERT(!fZeros(&leg->v));
if (leg->meta) {
pimg->days1 = leg->meta->days1;
@@ -996,7 +998,7 @@
(BIT(FLAGS_DUPLICATE)|BIT(FLAGS_SPLAY)|
BIT(FLAGS_SURFACE)))) {
/* check not an equating leg, or one inside an sdfix point */
- if (!(leg->l.reverse & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
+ if (!(leg->l.bits & (FLAG_REPLACEMENTLEG | FLAG_FAKE))) {
totadj += sqrt(sqrd(POS(stnB, 0) - POS(stn1, 0)) +
sqrd(POS(stnB, 1) - POS(stn1, 1)) +
sqrd(POS(stnB, 2) - POS(stn1, 2)));
@@ -1087,7 +1089,7 @@
* and report a station from that traverse instead.
*/
for (stackTrail* p = ptrTrail; p; p = p->next) {
- linkfor *leg = ptrTrail->join1;
+ linkfor *leg = p->join1;
if (reverse_leg(leg)->l.to == stn) {
return leg->l.to;
}
diff -Nru survex-1.4.17/src/netskel.h survex-1.4.22/src/netskel.h
--- survex-1.4.17/src/netskel.h 2025-03-14 22:18:03.000000000 +0000
+++ survex-1.4.22/src/netskel.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
void solve_network(void);
diff -Nru survex-1.4.17/src/network.c survex-1.4.22/src/network.c
--- survex-1.4.17/src/network.c 2025-03-18 21:51:49.000000000 +0000
+++ survex-1.4.22/src/network.c 2026-03-22 20:56:24.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#if 0
@@ -95,8 +95,8 @@
*/
linkfor *leg = stn->leg[dirn];
linkfor *rev_leg = reverse_leg(leg);
- leg->l.reverse |= FLAG_ARTICULATION;
- rev_leg->l.reverse |= FLAG_ARTICULATION;
+ leg->l.bits |= FLAG_ARTICULATION;
+ rev_leg->l.bits |= FLAG_ARTICULATION;
if (data_here(leg)) {
subdd(&POSD(stn), &POSD(stn2), &leg->d);
} else {
@@ -152,11 +152,13 @@
/* stack lollipop and replace with a leg between stn3 and stn4 */
trav->join[0] = stn3->leg[dirn3];
newleg->l.to = stn4;
- newleg->l.reverse = dirn4 | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ newleg->l.reverse = dirn4;
+ newleg->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
trav->join[1] = stn4->leg[dirn4];
newleg2->l.to = stn3;
- newleg2->l.reverse = dirn3 | FLAG_REPLACEMENTLEG;
+ newleg2->l.reverse = dirn3;
+ newleg2->l.bits = FLAG_REPLACEMENTLEG;
stn3->leg[dirn3] = newleg;
stn4->leg[dirn4] = newleg2;
@@ -283,11 +285,13 @@
/* stack parallel and replace with a leg between stn3 and stn4 */
trav->join[0] = stn3->leg[dirn3];
newleg->l.to = stn4;
- newleg->l.reverse = dirn4 | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ newleg->l.reverse = dirn4;
+ newleg->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
trav->join[1] = stn4->leg[dirn4];
newleg2->l.to = stn3;
- newleg2->l.reverse = dirn3 | FLAG_REPLACEMENTLEG;
+ newleg2->l.reverse = dirn3;
+ newleg2->l.bits = FLAG_REPLACEMENTLEG;
stn3->leg[dirn3] = newleg;
stn4->leg[dirn4] = newleg2;
@@ -450,25 +454,32 @@
stnZ->name = nameZ;
nameZ->stn = stnZ;
nameZ->up = NULL;
+ nameZ->filename = NULL;
nameZ->min_export = nameZ->max_export = 0;
nameZ->sflags = 0;
unfix(stnZ);
add_stn_to_list(&stnlist, stnZ);
legAZ->l.to = stnZ;
- legAZ->l.reverse = 0 | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ legAZ->l.reverse = 0;
+ legAZ->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
legBZ->l.to = stnZ;
- legBZ->l.reverse = 1 | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ legBZ->l.reverse = 1;
+ legBZ->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
legCZ->l.to = stnZ;
- legCZ->l.reverse = 2 | FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
+ legCZ->l.reverse = 2;
+ legCZ->l.bits = FLAG_DATAHERE | FLAG_REPLACEMENTLEG;
stnZ->leg[0] = (linkfor*)osnew(linkcommon);
stnZ->leg[1] = (linkfor*)osnew(linkcommon);
stnZ->leg[2] = (linkfor*)osnew(linkcommon);
stnZ->leg[0]->l.to = stn4;
stnZ->leg[0]->l.reverse = dirn4;
+ stnZ->leg[0]->l.bits = 0;
stnZ->leg[1]->l.to = stn5;
stnZ->leg[1]->l.reverse = dirn5;
+ stnZ->leg[1]->l.bits = 0;
stnZ->leg[2]->l.to = stn6;
stnZ->leg[2]->l.reverse = dirn6;
+ stnZ->leg[2]->l.bits = 0;
addto_link(legAZ, stn4->leg[dirn4]);
addto_link(legBZ, stn5->leg[dirn5]);
addto_link(legCZ, stn6->leg[dirn6]);
@@ -582,8 +593,8 @@
subdd(&POSD(stn), &POSD(stn2), &reverse_leg(stn2->leg[dirn2])->d);
/* The "stick" of the lollipop is a new articulation. */
- stn2->leg[dirn2]->l.reverse |= FLAG_ARTICULATION;
- reverse_leg(stn2->leg[dirn2])->l.reverse |= FLAG_ARTICULATION;
+ stn2->leg[dirn2]->l.bits |= FLAG_ARTICULATION;
+ reverse_leg(stn2->leg[dirn2])->l.bits |= FLAG_ARTICULATION;
add_stn_to_list(&fixedlist, stn);
add_stn_to_list(&fixedlist, stn2);
@@ -607,11 +618,11 @@
leg = stn3->leg[dirn3];
- if (leg->l.reverse & FLAG_ARTICULATION) {
- reduction_stack->join[0]->l.reverse |= FLAG_ARTICULATION;
- stn->leg[dirn]->l.reverse |= FLAG_ARTICULATION;
- reduction_stack->join[1]->l.reverse |= FLAG_ARTICULATION;
- stn2->leg[dirn2]->l.reverse |= FLAG_ARTICULATION;
+ if (leg->l.bits & FLAG_ARTICULATION) {
+ reduction_stack->join[0]->l.bits |= FLAG_ARTICULATION;
+ stn->leg[dirn]->l.bits |= FLAG_ARTICULATION;
+ reduction_stack->join[1]->l.bits |= FLAG_ARTICULATION;
+ stn2->leg[dirn2]->l.bits |= FLAG_ARTICULATION;
}
if (fZeros(&leg->v))
@@ -711,9 +722,9 @@
free(leg);
stn[i]->leg[dirn[i]] = reduction_stack->join[i];
/* transfer the articulation status of the radial legs */
- if (stnZ->leg[i]->l.reverse & FLAG_ARTICULATION) {
- reduction_stack->join[i]->l.reverse |= FLAG_ARTICULATION;
- reverse_leg(reduction_stack->join[i])->l.reverse |= FLAG_ARTICULATION;
+ if (stnZ->leg[i]->l.bits & FLAG_ARTICULATION) {
+ reduction_stack->join[i]->l.bits |= FLAG_ARTICULATION;
+ reverse_leg(reduction_stack->join[i])->l.bits |= FLAG_ARTICULATION;
}
free(stnZ->leg[i]);
stnZ->leg[i] = NULL;
diff -Nru survex-1.4.17/src/network.h survex-1.4.22/src/network.h
--- survex-1.4.17/src/network.h 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/src/network.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
void remove_subnets(void);
diff -Nru survex-1.4.17/src/osalloc.h survex-1.4.22/src/osalloc.h
--- survex-1.4.17/src/osalloc.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/osalloc.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef OSALLOC_H /* only include once */
diff -Nru survex-1.4.17/src/out.h survex-1.4.22/src/out.h
--- survex-1.4.17/src/out.h 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/out.h 2026-03-21 21:06:18.000000000 +0000
@@ -1,6 +1,6 @@
/* out.h
* Header file for output stuff
- * Copyright (C) Olly Betts 2000,2001,2013
+ * Copyright (C) Olly Betts 2000,2001,2013,2025
* 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
@@ -12,9 +12,9 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
-#define out_current_action(S) if(fQuiet)(void)0;else printf("\n%s...\n", (S))
-#define out_current_action1(S,A) if(!fQuiet){putnl();printf(S,A);printf("...\n");}else(void)0
+#define out_current_action(S) if(quiet)(void)0;else printf("\n%s...\n", (S))
+#define out_current_action1(S,A) if(!quiet){putnl();printf(S,A);printf("...\n");}else(void)0
diff -Nru survex-1.4.17/src/pos.cc survex-1.4.22/src/pos.cc
--- survex-1.4.17/src/pos.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/pos.cc 2026-05-04 02:13:57.000000000 +0000
@@ -1,7 +1,7 @@
/* pos.cc
* Export from Aven as Survex .pos or .csv.
*/
-/* Copyright (C) 2001-2024 Olly Betts
+/* Copyright (C) 2001-2026 Olly Betts
*
* 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
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -75,7 +75,11 @@
const int *
POS::passes() const
{
- static const int default_passes[] = { LABELS|ENTS|FIXES|EXPORTS, 0 };
+ static const int default_passes[] = {
+ LABELS|ENTS|FIXES|EXPORTS,
+ ANON_STNS,
+ 0
+ };
return default_passes;
}
@@ -101,8 +105,18 @@
}
void
+POS::start_pass(int pass)
+{
+ if (pass == ANON_STNS && !todo.empty()) {
+ // Sort and write out all the named stations first.
+ footer();
+ }
+}
+
+void
POS::label(const img_point *p, const wxString& str, int /*sflags*/, int /*type*/)
{
+ // Named station.
const char* s = str.utf8_str();
size_t len = strlen(s);
pos_label * l = (pos_label*)malloc(offsetof(pos_label, name) + len + 1);
@@ -115,6 +129,17 @@
todo.push_back(l);
}
+void
+POS::cross(const img_point *p, const wxString&, int /*sflags*/)
+{
+ // Anonymous station.
+ if (csv) {
+ fprintf(fh, "%.2f,%.2f,%.2f,\n", p->x, p->y, p->z);
+ } else {
+ fprintf(fh, "(%8.2f, %8.2f, %8.2f )\n", p->x, p->y, p->z);
+ }
+}
+
class pos_label_ptr_cmp {
char separator;
@@ -130,8 +155,7 @@
POS::footer()
{
sort(todo.begin(), todo.end(), pos_label_ptr_cmp(separator));
- vector::const_iterator i;
- for (i = todo.begin(); i != todo.end(); ++i) {
+ for (auto&& i = todo.begin(); i != todo.end(); ++i) {
if (csv) {
fprintf(fh, "%.2f,%.2f,%.2f,", (*i)->x, (*i)->y, (*i)->z);
csv_quote((*i)->name, fh);
@@ -141,4 +165,5 @@
(*i)->x, (*i)->y, (*i)->z, (*i)->name);
}
}
+ todo.clear();
}
diff -Nru survex-1.4.17/src/pos.h survex-1.4.22/src/pos.h
--- survex-1.4.17/src/pos.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/pos.h 2026-05-04 02:13:57.000000000 +0000
@@ -2,7 +2,7 @@
* Export from Aven as Survex .pos or .csv.
*/
-/* Copyright (C) 2005-2024 Olly Betts
+/* Copyright (C) 2005-2026 Olly Betts
*
* 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 +15,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "exportfilter.h"
@@ -44,6 +44,8 @@
void header(const char *, time_t,
double, double, double,
double, double, double) override;
+ void start_pass(int) override;
void label(const img_point *, const wxString&, int, int) override;
+ void cross(const img_point *, const wxString&, int sflags) override;
void footer() override;
};
diff -Nru survex-1.4.17/src/printing.cc survex-1.4.22/src/printing.cc
--- survex-1.4.17/src/printing.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/printing.cc 2026-05-18 04:21:03.000000000 +0000
@@ -1,6 +1,6 @@
/* printing.cc */
/* Aven printing code */
-/* Copyright (C) 1993-2003,2004,2005,2006,2010,2011,2012,2013,2014,2015,2016,2017,2018 Olly Betts
+/* Copyright (C) 1993-2026 Olly Betts
* Copyright (C) 2001,2004 Philip Underwood
*
* This program is free software; you can redistribute it and/or modify
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -25,8 +25,6 @@
#include
#include
#include
-#include
-#include
#include
#include
@@ -110,6 +108,7 @@
svx_ENTS,
svx_FIXES,
svx_EXPORTS,
+ svx_ANON_STNS,
svx_GRID,
svx_TEXT_HEIGHT,
svx_MARKER_SIZE,
@@ -245,6 +244,7 @@
EVT_CHECKBOX(svx_ENTS, svxPrintDlg::OnChange)
EVT_CHECKBOX(svx_FIXES, svxPrintDlg::OnChange)
EVT_CHECKBOX(svx_EXPORTS, svxPrintDlg::OnChange)
+ EVT_CHECKBOX(svx_ANON_STNS, svxPrintDlg::OnChange)
END_EVENT_TABLE()
static wxString scales[] = {
@@ -497,6 +497,11 @@
wxDefaultPosition, wxDefaultSize, 0,
BitValidator(&m_layout.show_mask, LABELS)),
0, wxALIGN_LEFT|wxALL, 2);
+ // TRANSLATORS: Label for a checkbox in the print/export dialog.
+ v2->Add(new wxCheckBox(this, svx_ANON_STNS, wmsg(/*Anonymous Stations*/537),
+ wxDefaultPosition, wxDefaultSize, 0,
+ BitValidator(&m_layout.show_mask, EXPORTS)),
+ 0, wxALIGN_LEFT|wxALL, 2);
v2->Add(new wxCheckBox(this, svx_ENTS, wmsg(/*Entrances*/418),
wxDefaultPosition, wxDefaultSize, 0,
BitValidator(&m_layout.show_mask, ENTS)),
@@ -797,6 +802,7 @@
{ svx_ENTS, ENTS },
{ svx_FIXES, FIXES },
{ svx_EXPORTS, EXPORTS },
+ { svx_ANON_STNS, ANON_STNS },
{ svx_CENTRED, CENTRED },
{ svx_FULLCOORDS, FULL_COORDS },
{ svx_CLAMP_TO_GROUND, CLAMP_TO_GROUND },
diff -Nru survex-1.4.17/src/printing.h survex-1.4.22/src/printing.h
--- survex-1.4.17/src/printing.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/printing.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,12 +14,11 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
-#include "wx.h"
-#include
+#include
#include
#include
diff -Nru survex-1.4.17/src/readval.c survex-1.4.22/src/readval.c
--- survex-1.4.17/src/readval.c 2025-03-18 02:49:52.000000000 +0000
+++ survex-1.4.22/src/readval.c 2026-05-18 20:29:26.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -47,6 +47,7 @@
name->down = NULL;
name->filename = file.filename;
name->line = file.line;
+ name->column = 0;
name->min_export = name->max_export = 0;
name->sflags = BIT(SFLAGS_ANON);
/* Keep linked list of anon stations for node stats. */
@@ -227,6 +228,7 @@
ptr->up = back_ptr;
ptr->filename = file.filename;
ptr->line = file.line;
+ ptr->column = here.offset - file.lpos;
ptr->min_export = ptr->max_export = 0;
if (fSuspectTypo && !fImplicitPrefix)
ptr->sflags |= BIT(SFLAGS_SUSPECTTYPO);
@@ -269,6 +271,7 @@
newptr->up = back_ptr;
newptr->filename = file.filename;
newptr->line = file.line;
+ newptr->column = here.offset - file.lpos;
newptr->min_export = newptr->max_export = 0;
if (fSuspectTypo && !fImplicitPrefix)
newptr->sflags |= BIT(SFLAGS_SUSPECTTYPO);
@@ -466,6 +469,12 @@
// Use a name with a space in so it can't collide with a real
// Walls station name.
s_append(&component, "empty name");
+ static bool marked_space_as_used = false;
+ if (!marked_space_as_used) {
+ marked_space_as_used = true;
+ update_separator_map_for_foreign_name(" ");
+ update_output_separator();
+ }
}
int len = s_len(&component);
char *p = s_steal(&component);
@@ -535,8 +544,11 @@
ptr->pos = NULL;
ptr->stn = NULL;
ptr->up = back_ptr;
- ptr->filename = file.filename; // FIXME: Or location of #Prefix, etc for it?
- ptr->line = file.line; // FIXME: Or location of #Prefix, etc for it?
+ // FIXME: Or location of #Prefix, etc for it?
+ ptr->filename = file.filename;
+ ptr->line = file.line;
+ ptr->column = fp.offset - file.lpos;
+
ptr->min_export = ptr->max_export = 0;
back_ptr->down = ptr;
} else {
@@ -575,8 +587,11 @@
newptr->pos = NULL;
newptr->stn = NULL;
newptr->up = back_ptr;
- newptr->filename = file.filename; // FIXME
+ // FIXME: Or location of #Prefix, etc for it?
+ newptr->filename = file.filename;
newptr->line = file.line;
+ newptr->column = fp.offset - file.lpos;
+
newptr->min_export = newptr->max_export = 0;
ptr = newptr;
} else {
@@ -606,8 +621,9 @@
/* if numeric expr is omitted: if f_optional return HUGE_REAL, else longjmp */
real
-read_number(bool f_optional, bool f_unsigned)
+read_number_or_int(bool f_optional, bool f_unsigned, bool* pf_decimal_point)
{
+ if (pf_decimal_point) *pf_decimal_point = false;
bool fPositive = true, fDigits = false;
real n = (real)0.0;
filepos fp;
@@ -627,6 +643,7 @@
}
if (isDecimal(ch)) {
+ if (pf_decimal_point) *pf_decimal_point = true;
real mult = (real)1.0;
nextch();
while (isdigit(ch)) {
@@ -689,6 +706,9 @@
if (isOmit(ch)) {
compile_diagnostic(DIAG_ERR|DIAG_COL, /*Field may not be omitted*/114);
}
+ // TRANSLATORS: Quadrant bearings have the format e.g. S34E or N65.5W.
+ // They're enabled by `*units bearing quadrants` and supported in
+ // Walls format data.
compile_diagnostic_token_show(DIAG_ERR, /*Expecting quadrant bearing, found “%s”*/483);
longjmp(jbSkipLine, 1);
}
diff -Nru survex-1.4.17/src/readval.h survex-1.4.22/src/readval.h
--- survex-1.4.17/src/readval.h 2025-03-18 02:31:37.000000000 +0000
+++ survex-1.4.22/src/readval.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include "datain.h"
@@ -48,9 +48,20 @@
bool anon_allowed,
bool *p_new);
+// Like read_number() but reports if the number contains a decimal point or
+// not.
+//
+// pf_decimal_point can be NULL (but use read_numeric() instead if always
+// NULL).
+real read_number_or_int(bool f_optional, bool f_unsigned,
+ bool *pf_decimal_point);
+
// Like read_numeric() but doesn't skipblanks() first and can be told to not
// allow a sign.
-real read_number(bool f_optional, bool f_unsigned);
+static inline real read_number(bool f_optional, bool f_unsigned)
+{
+ return read_number_or_int(f_optional, f_unsigned, NULL);
+}
real read_quadrant(bool f_optional);
diff -Nru survex-1.4.17/src/sorterr.c survex-1.4.22/src/sorterr.c
--- survex-1.4.17/src/sorterr.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/sorterr.c 2026-05-17 22:04:24.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/str.c survex-1.4.22/src/str.c
--- survex-1.4.17/src/str.c 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/src/str.c 2026-03-21 21:06:18.000000000 +0000
@@ -12,8 +12,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/str.h survex-1.4.22/src/str.h
--- survex-1.4.17/src/str.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/str.h 2026-03-21 21:06:18.000000000 +0000
@@ -12,8 +12,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef SURVEX_INCLUDED_STR_H
diff -Nru survex-1.4.17/src/survexport.cc survex-1.4.22/src/survexport.cc
--- survex-1.4.17/src/survexport.cc 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/survexport.cc 2026-05-18 20:36:53.000000000 +0000
@@ -2,7 +2,7 @@
* Convert a processed survey data file to another format.
*/
-/* Copyright (C) 1994-2024 Olly Betts
+/* Copyright (C) 1994-2026 Olly Betts
* Copyright (C) 2004 John Pybus (SVG Output code)
*
* This program is free software; you can redistribute it and/or modify
@@ -16,8 +16,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
@@ -74,7 +74,7 @@
enum {
OPT_SCALE = 0x100, OPT_BEARING, OPT_TILT, OPT_PLAN, OPT_ELEV,
OPT_LEGS, OPT_SURF, OPT_SPLAYS, OPT_CROSSES, OPT_LABELS, OPT_ENTS,
- OPT_FIXES, OPT_EXPORTS, OPT_XSECT, OPT_WALLS, OPT_PASG,
+ OPT_FIXES, OPT_EXPORTS, OPT_ANON_STNS, OPT_XSECT, OPT_WALLS, OPT_PASG,
OPT_CENTRED, OPT_FULL_COORDS, OPT_CLAMP_TO_GROUND, OPT_DEFAULTS
};
static const struct option long_opts[] = {
@@ -90,6 +90,7 @@
{"splays", no_argument, 0, OPT_SPLAYS},
{"crosses", no_argument, 0, OPT_CROSSES},
{"station-names", no_argument, 0, OPT_LABELS},
+ {"anonymous-stations", no_argument, 0, OPT_ANON_STNS},
{"entrances", no_argument, 0, OPT_ENTS},
{"fixes", no_argument, 0, OPT_FIXES},
{"exports", no_argument, 0, OPT_EXPORTS},
@@ -120,8 +121,9 @@
{"version", no_argument, 0, HLP_VERSION},
// US spelling:
{"origin-in-center", no_argument, 0, OPT_CENTRED},
- // Abbreviation:
+ // Abbreviations:
{"full-coords", no_argument, 0, OPT_FULL_COORDS},
+ {"anon-stations", no_argument, 0, OPT_ANON_STNS},
{0,0,0,0}
};
@@ -130,11 +132,22 @@
static struct help_msg help[] = {
/* <-- */
{HLP_ENCODELONG(0), /*only load the sub-survey with this prefix*/199, 0, 0},
- /* TRANSLATORS: These example input values should not be translated. */
+ /* TRANSLATORS: Used in survexport --help output. The --scale option
+ * accepts any of these ways of specifying the scale. These example
+ * input values should not be translated.
+ */
{HLP_ENCODELONG(1), /*scale (50, 0.02, 1:50 and 2:100 all mean 1:50)*/217, 0, 0},
- /* TRANSLATORS: These example input values should not be translated. */
+ /* TRANSLATORS: Used in survexport --help output. The --bearing option
+ * accepts any of these ways of specifying how much to rotate the
+ * survey about a vertical axis. These example input values should not
+ * be translated.
+ */
{HLP_ENCODELONG(2), /*bearing (90, 90d, 100g all mean 90°)*/460, 0, 0},
- /* TRANSLATORS: These example input values should not be translated. */
+ /* TRANSLATORS: Used in survexport --help output. The --tilt option
+ * accepts any of these ways of specifying how much to rotate the
+ * survey about a horizontol axis. These example input values should
+ * not be translated.
+ */
{HLP_ENCODELONG(3), /*tilt (45, 45d, 50g, 100% all mean 45°)*/461, 0, 0},
/* TRANSLATORS: Don't translate example command line option --tilt=-90 */
{HLP_ENCODELONG(4), /*plan view (equivalent to --tilt=-90)*/462, 0, 0},
@@ -145,34 +158,36 @@
{HLP_ENCODELONG(8), /*splay legs*/465, 0, 0},
{HLP_ENCODELONG(9), /*station markers*/474, 0, 0},
{HLP_ENCODELONG(10), /*station labels*/475, 0, 0},
- {HLP_ENCODELONG(11), /*entrances*/466, 0, 0},
- {HLP_ENCODELONG(12), /*fixed points*/467, 0, 0},
- {HLP_ENCODELONG(13), /*exported stations*/468, 0, 0},
- {HLP_ENCODELONG(14), /*cross-sections*/469, 0, 0},
- {HLP_ENCODELONG(15), /*walls*/470, 0, 0},
- {HLP_ENCODELONG(16), /*passages*/471, 0, 0},
- {HLP_ENCODELONG(17), /*origin in centre*/472, 0, 0},
- {HLP_ENCODELONG(18), /*full coordinates*/473, 0, 0},
- {HLP_ENCODELONG(19), /*clamp to ground*/478, 0, 0},
- {HLP_ENCODELONG(20), /*include items exported by default*/155, 0, 0},
- {HLP_ENCODELONG(21), /*generate grid (default %sm)*/148, STRING(DEFAULT_GRID_SPACING), 0},
- {HLP_ENCODELONG(22), /*station labels text height (default %s)*/149, STRING(DEFAULT_TEXT_HEIGHT), 0},
- {HLP_ENCODELONG(23), /*station marker size (default %s)*/152, STRING(DEFAULT_MARKER_SIZE), 0},
- {HLP_ENCODELONG(24), /*produce Survex 3d output*/487, 0, 0},
- {HLP_ENCODELONG(25), /*produce CSV output*/102, 0, 0},
- {HLP_ENCODELONG(26), /*produce DXF output*/156, 0, 0},
- {HLP_ENCODELONG(27), /*produce EPS output*/454, 0, 0},
- {HLP_ENCODELONG(28), /*produce GPX output*/455, 0, 0},
- {HLP_ENCODELONG(29), /*produce HPGL output*/456, 0, 0},
- {HLP_ENCODELONG(30), /*produce JSON output*/457, 0, 0},
- {HLP_ENCODELONG(31), /*produce KML output*/458, 0, 0},
+ // TRANSLATORS: Option description in `survexport --help` output.
+ {HLP_ENCODELONG(11), /*anonymous stations*/538, 0, 0},
+ {HLP_ENCODELONG(12), /*entrances*/466, 0, 0},
+ {HLP_ENCODELONG(13), /*fixed points*/467, 0, 0},
+ {HLP_ENCODELONG(14), /*exported stations*/468, 0, 0},
+ {HLP_ENCODELONG(15), /*cross-sections*/469, 0, 0},
+ {HLP_ENCODELONG(16), /*walls*/470, 0, 0},
+ {HLP_ENCODELONG(17), /*passages*/471, 0, 0},
+ {HLP_ENCODELONG(18), /*origin in centre*/472, 0, 0},
+ {HLP_ENCODELONG(19), /*full coordinates*/473, 0, 0},
+ {HLP_ENCODELONG(20), /*clamp to ground*/478, 0, 0},
+ {HLP_ENCODELONG(21), /*include items exported by default*/155, 0, 0},
+ {HLP_ENCODELONG(22), /*generate grid (default %sm)*/148, STRING(DEFAULT_GRID_SPACING), 0},
+ {HLP_ENCODELONG(23), /*station labels text height (default %s)*/149, STRING(DEFAULT_TEXT_HEIGHT), 0},
+ {HLP_ENCODELONG(24), /*station marker size (default %s)*/152, STRING(DEFAULT_MARKER_SIZE), 0},
+ {HLP_ENCODELONG(25), /*produce Survex 3d output*/487, 0, 0},
+ {HLP_ENCODELONG(26), /*produce CSV output*/102, 0, 0},
+ {HLP_ENCODELONG(27), /*produce DXF output*/156, 0, 0},
+ {HLP_ENCODELONG(28), /*produce EPS output*/454, 0, 0},
+ {HLP_ENCODELONG(29), /*produce GPX output*/455, 0, 0},
+ {HLP_ENCODELONG(30), /*produce HPGL output*/456, 0, 0},
+ {HLP_ENCODELONG(31), /*produce JSON output*/457, 0, 0},
+ {HLP_ENCODELONG(32), /*produce KML output*/458, 0, 0},
/* TRANSLATORS: "Compass" and "Carto" are the names of software packages,
* so should not be translated. */
- {HLP_ENCODELONG(32), /*produce Compass PLT output for Carto*/159, 0, 0},
- {HLP_ENCODELONG(33), /*produce Survex POS output*/459, 0, 0},
- {HLP_ENCODELONG(34), /*produce Shapefile (lines) output*/525, 0, 0},
- {HLP_ENCODELONG(35), /*produce Shapefile (points) output*/526, 0, 0},
- {HLP_ENCODELONG(36), /*produce SVG output*/160, 0, 0},
+ {HLP_ENCODELONG(33), /*produce Compass PLT output for Carto*/159, 0, 0},
+ {HLP_ENCODELONG(34), /*produce Survex POS output*/459, 0, 0},
+ {HLP_ENCODELONG(35), /*produce Shapefile (lines) output*/525, 0, 0},
+ {HLP_ENCODELONG(36), /*produce Shapefile (points) output*/526, 0, 0},
+ {HLP_ENCODELONG(37), /*produce SVG output*/160, 0, 0},
{0, 0, 0, 0}
};
@@ -213,6 +228,9 @@
case OPT_EXPORTS:
bit = EXPORTS;
break;
+ case OPT_ANON_STNS:
+ bit = ANON_STNS;
+ break;
case OPT_XSECT:
bit = XSECT;
break;
diff -Nru survex-1.4.17/src/thgeomag.c survex-1.4.22/src/thgeomag.c
--- survex-1.4.17/src/thgeomag.c 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/thgeomag.c 2026-03-21 21:06:18.000000000 +0000
@@ -19,8 +19,8 @@
* 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
+* along with this program; if not, see
+* .
* --------------------------------------------------------------------
*/
diff -Nru survex-1.4.17/src/thgeomag.h survex-1.4.22/src/thgeomag.h
--- survex-1.4.17/src/thgeomag.h 2024-02-26 22:45:43.000000000 +0000
+++ survex-1.4.22/src/thgeomag.h 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
* 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
+ * along with this program; if not, see
+ * .
* --------------------------------------------------------------------
*/
diff -Nru survex-1.4.17/src/useful.h survex-1.4.22/src/useful.h
--- survex-1.4.17/src/useful.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/useful.h 2026-03-21 21:06:18.000000000 +0000
@@ -13,8 +13,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
/* only include once */
diff -Nru survex-1.4.17/src/validate.c survex-1.4.22/src/validate.c
--- survex-1.4.17/src/validate.c 2025-03-18 22:42:14.000000000 +0000
+++ survex-1.4.22/src/validate.c 2026-03-21 21:06:18.000000000 +0000
@@ -18,8 +18,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/validate.h survex-1.4.22/src/validate.h
--- survex-1.4.17/src/validate.h 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/validate.h 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#ifndef VALIDATE_H
diff -Nru survex-1.4.17/src/vector3.cc survex-1.4.22/src/vector3.cc
--- survex-1.4.17/src/vector3.cc 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/vector3.cc 2026-03-21 21:06:18.000000000 +0000
@@ -17,8 +17,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#include
diff -Nru survex-1.4.17/src/vector3.h survex-1.4.22/src/vector3.h
--- survex-1.4.17/src/vector3.h 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/vector3.h 2026-03-21 21:06:18.000000000 +0000
@@ -16,8 +16,8 @@
// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+// along with this program; if not, see
+// .
//
#ifndef Vector3_h
diff -Nru survex-1.4.17/src/wrapaven.c survex-1.4.22/src/wrapaven.c
--- survex-1.4.17/src/wrapaven.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/wrapaven.c 2026-05-20 02:47:49.000000000 +0000
@@ -1,7 +1,7 @@
/* wrapaven.c
* Set OPENSSL_MODULES to .exe's directory and run real .exe
*
- * Copyright (C) 2002,2010,2014,2024 Olly Betts
+ * Copyright (C) 2002,2010,2014,2024,2025,2026 Olly Betts
*
* 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
@@ -14,21 +14,21 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
#include
#include
-int APIENTRY
-wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpCmdLine, int nCmdShow)
+int
+main(int argc, char **argv)
{
DWORD len = 256;
wchar_t *buf = NULL;
- (void)hInst; /* suppress compiler warning */
- (void)hPrevInst; /* suppress compiler warning */
+ (void)argc; /* suppress compiler warning */
+ (void)argv; /* suppress compiler warning */
while (1) {
DWORD got;
buf = realloc(buf, len * sizeof(wchar_t));
@@ -41,7 +41,7 @@
got -= 4;
}
wchar_t *p = wcsrchr(buf, L'\\');
- wchar_t *e_val = buf;
+ const wchar_t *e_val = buf;
size_t e_len;
if (p) {
e_len = p - buf;
@@ -60,10 +60,12 @@
}
len += len;
}
- /* ShellExecute returns an HINSTANCE for some strange reason - the docs say
- * the only valid operation is to convert it to "INT_PTR" (which seems to
- * actually be an integer type. Marvellous. */
- if ((INT_PTR)ShellExecuteW(NULL, NULL, buf, lpCmdLine, NULL, nCmdShow) <= 32) {
+
+ PROCESS_INFORMATION process_info = {};
+ STARTUPINFOW startup_info;
+ GetStartupInfoW(&startup_info);
+ if (CreateProcessW(buf, GetCommandLineW(), NULL, NULL, TRUE, 0,
+ NULL, NULL, &startup_info, &process_info) == 0) {
return 1;
}
return 0;
diff -Nru survex-1.4.17/src/wrapsurvexport.c survex-1.4.22/src/wrapsurvexport.c
--- survex-1.4.17/src/wrapsurvexport.c 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/src/wrapsurvexport.c 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see
+ * .
*/
#include
diff -Nru survex-1.4.17/src/wx.h survex-1.4.22/src/wx.h
--- survex-1.4.17/src/wx.h 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/src/wx.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,46 +0,0 @@
-//
-// wx.h
-//
-// Include wxWidgets headers.
-//
-// Copyright (C) 2000,2001,2002 Mark R. Shinwell
-// Copyright (C) 2001,2003,2005,2006,2007,2008,2015 Olly Betts
-//
-// 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 St, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-#include
-
-#ifdef __BORLANDC__
-# pragma hdrstop
-#endif
-
-#ifndef WX_PRECOMP
-# include
-#endif
-
-#if !wxCHECK_VERSION(3,0,0)
-# error We support building with wxWidgets 3.0.0 or newer
-#endif
-
-#include
-#include
-#include
-#include
-
-#if !wxUSE_GLCANVAS
-# error wxWidgets must be built with wxUSE_GLCANVAS set to 1
-#endif
-#include
diff -Nru survex-1.4.17/src/z_getopt.c survex-1.4.22/src/z_getopt.c
--- survex-1.4.17/src/z_getopt.c 2025-03-18 02:00:12.000000000 +0000
+++ survex-1.4.22/src/z_getopt.c 2026-05-18 04:21:23.000000000 +0000
@@ -17,9 +17,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ . */
#if 0 /* Survex doesn't use getopt() so we don't declare it. */
/* This tells Alpha OSF/1 not to define a getopt prototype in .
@@ -230,9 +229,7 @@
#endif
static char *
-my_index (str, chr)
- const char *str;
- int chr;
+my_index (const char *str, int chr)
{
while (*str)
{
@@ -308,13 +305,8 @@
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
static void
-exchange (argv)
- char **argv;
+exchange (char **argv)
{
int bottom = first_nonopt;
int middle = last_nonopt;
@@ -394,14 +386,8 @@
/* Initialize the internal data when the first call is made. */
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+_getopt_initialize (int argc, char *const *argv, const char *optstring)
{
(void)argc;
(void)argv;
@@ -522,13 +508,7 @@
long-named options. */
int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
+_getopt_internal (int argc, char *const *argv, const char *optstring, const struct option *longopts, int *longind, int long_only)
{
int print_errors = opterr;
if (optstring[0] == ':')
@@ -1206,10 +1186,7 @@
#if 0 /* Survex doesn't use getopt() so we don't declare it. */
int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+getopt (int argc, char *const *argv, const char *optstring)
{
return _getopt_internal (argc, argv, optstring,
(const struct option *) 0,
@@ -1226,9 +1203,7 @@
the above definition of `getopt'. */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int c;
int digit_optind = 0;
diff -Nru survex-1.4.17/survex.iss.in survex-1.4.22/survex.iss.in
--- survex-1.4.17/survex.iss.in 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/survex.iss.in 2026-03-21 21:06:18.000000000 +0000
@@ -81,7 +81,14 @@
Source: "wrapsurvexport.exe"; DestDir: "{app}"; DestName: "survexport.exe"
; Also install wrapsurvexport.exe as 3dtopos.exe so existing Tunnel releases work.
Source: "wrapsurvexport.exe"; DestDir: "{app}"; DestName: "3dtopos.exe"
-Source: "*.dll"; DestDir: "{app}"; Flags: skipifsourcedoesntexist
+; Always update installed DLLs if the files differ rather than checking the
+; embedded version information. This avoids problems when DLLs change in an
+; upwardly but not downwardly compatible way but keep the same version number.
+; It also means downgrading gives an install more like installing the older
+; version from scratch would. Our DLLs are all private and installed into our
+; own install directory so there are no concerns with breaking other installed
+; software.
+Source: "*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist
Source: "*.svx"; DestDir: "{app}"
Source: "*.ico"; DestDir: "{app}"
Source: "*.pixelfont"; DestDir: "{app}"
diff -Nru survex-1.4.17/survex.spec survex-1.4.22/survex.spec
--- survex-1.4.17/survex.spec 2025-03-20 00:15:23.000000000 +0000
+++ survex-1.4.22/survex.spec 1970-01-01 00:00:00.000000000 +0000
@@ -1,56 +0,0 @@
-# survex.spec. Generated from survex.spec.in by configure.
-Summary: Cave Surveying Software
-Name: survex
-Vendor: The Survex Project
-Version: 1.4.17
-Release: 1
-License: GPL
-Group: Applications/Misc
-Source: https://survex.com/software/1.4.17/survex-1.4.17.tar.gz
-URL: https://survex.com/
-Packager: Olly Betts
-# Fedora have removed gcc from the default build environment so explicitly list it here
-BuildRequires: wxGTK3-devel, proj-devel, gcc-g++
-Requires: wxGTK3, proj, proj-epsg
-BuildRoot: %{_tmppath}/%{name}-buildroot
-
-%description
-The development branch of Survex, a software suite to process, view, and
-print cave survey data. Survex is cross-platform (Linux/Unix, and
-Microsoft Windows). It includes English, French, German, Portuguese,
-Catalan, and Spanish internationalisations. It can deal with extremely
-large and complex datasets and can read survey data from many sources.
-
-%prep
-%setup
-
-%build
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-./configure --prefix=/usr
-make
-
-%install
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
-mkdir -p "%{buildroot}"
-make install DESTDIR="%{buildroot}"
-make -C vim vimdir=/usr/share/vim install DESTDIR="%{buildroot}"
-# Move docs back into build tree to keep rpmbuild happy by letting
-# it do the installing.
-mv "%{buildroot}"/usr/share/doc/survex ./built-docs
-
-%clean
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
-
-%files
-%defattr(-, root, root)
-%doc AUTHORS COPYING NEWS TODO ChangeLog
-%doc built-docs/*
-%doc /usr/share/man/
-/usr/bin/*
-/usr/share/survex/
-/usr/share/mime/
-/usr/share/applications/survex-aven.desktop
-/usr/share/icons/
-/usr/share/vim/
diff -Nru survex-1.4.17/survex.spec.in survex-1.4.22/survex.spec.in
--- survex-1.4.17/survex.spec.in 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/survex.spec.in 1970-01-01 00:00:00.000000000 +0000
@@ -1,52 +0,0 @@
-# @configure_input@
-Summary: Cave Surveying Software
-Name: @PACKAGE@
-Vendor: The Survex Project
-Version: @VERSION@
-Release: @RELEASE@
-License: GPL
-Group: Applications/Misc
-Source: https://survex.com/software/@VERSION@/@PACKAGE@-@VERSION@.tar.gz
-URL: https://survex.com/
-Packager: Olly Betts
-# Fedora have removed gcc from the default build environment so explicitly list it here
-BuildRequires: wxGTK3-devel, proj-devel, gcc-g++
-Requires: wxGTK3, proj, proj-epsg
-BuildRoot: %{_tmppath}/%{name}-buildroot
-
-%description
-@DESC@
-
-%prep
-%setup
-
-%build
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-./configure --prefix=/usr
-make
-
-%install
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
-mkdir -p "%{buildroot}"
-make install DESTDIR="%{buildroot}"
-make -C vim vimdir=/usr/share/vim install DESTDIR="%{buildroot}"
-# Move docs back into build tree to keep rpmbuild happy by letting
-# it do the installing.
-mv "%{buildroot}"/usr/share/doc/@PACKAGE@ ./built-docs
-
-%clean
-[ "%{buildroot}" = "/" ] && echo "buildroot cannot be /" && exit 1
-[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
-
-%files
-%defattr(-, root, root)
-%doc @EXTRA_TEXT@
-%doc built-docs/*
-%doc /usr/share/man/
-/usr/bin/*
-/usr/share/@PACKAGE@/
-/usr/share/mime/
-/usr/share/applications/survex-aven.desktop
-/usr/share/icons/
-/usr/share/vim/
diff -Nru survex-1.4.17/test-driver survex-1.4.22/test-driver
--- survex-1.4.17/test-driver 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/test-driver 2026-06-23 21:22:45.000000000 +0000
@@ -1,9 +1,9 @@
#! /bin/sh
# test-driver - basic testsuite driver script.
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2025-06-18.21; # UTC
-# Copyright (C) 2011-2024 Free Software Foundation, Inc.
+# Copyright (C) 2011-2025 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
@@ -152,9 +152,9 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru survex-1.4.17/tests/3dexport.dump survex-1.4.22/tests/3dexport.dump
--- survex-1.4.17/tests/3dexport.dump 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/3dexport.dump 2026-05-04 02:13:57.000000000 +0000
@@ -16,10 +16,10 @@
NODE 313999.15 5427764.90 -3.90 [6a] UNDERGROUND
NODE 313999.15 5427763.90 -3.99 [6] UNDERGROUND
NODE 313999.15 5427853.56 3.85 [5] UNDERGROUND
-NODE 313799.91 5427763.90 -3.99 [] SURFACE ANON WALL
NODE 313799.91 5427853.56 3.85 [3] SURFACE
-NODE 313899.53 5427763.90 4.72 [] SURFACE ANON
NODE 313899.53 5427853.56 12.57 [2] SURFACE UNDERGROUND
NODE 313899.53 5427953.18 21.28 [1] UNDERGROUND
NODE 313799.91 5427953.18 30.00 [bh] UNDERGROUND ENTRANCE FIXED
+NODE 313799.91 5427763.90 -3.99 [] SURFACE ANON WALL
+NODE 313899.53 5427763.90 4.72 [] SURFACE ANON
STOP
diff -Nru survex-1.4.17/tests/3dtopos.tst survex-1.4.22/tests/3dtopos.tst
--- survex-1.4.17/tests/3dtopos.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/3dtopos.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - 3d to pos tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,11 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
+
+# FIXME survexport is failing to run in CI on msys+mingw.
+[ "$OSTYPE" != "cygwin" ] || exit 0
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -71,7 +74,7 @@
$DIFFPOS "$input" tmp.pos > diffpos.tmp
exitcode=$?
if test -n "$VERBOSE" ; then
- cat diffpos.tmp
+ [ $exitcode = 0 ] || cat diffpos.tmp
fi
if [ -n "$VALGRIND" ] ; then
if [ $exitcode = "$vg_error" ] ; then
diff -Nru survex-1.4.17/tests/Makefile.am survex-1.4.22/tests/Makefile.am
--- survex-1.4.17/tests/Makefile.am 2025-03-18 02:55:37.000000000 +0000
+++ survex-1.4.22/tests/Makefile.am 2026-06-23 21:05:23.000000000 +0000
@@ -40,7 +40,7 @@
badinc5.mak badinc5.out\
export.svx export2.svx\
singlefix.svx singlefix.out singlefix.pos singlereffix.svx singlereffix.pos\
-singlefixerr.svx singlefixerr.pos singlereffixerr.svx singlereffixerr.pos\
+singlefixerr.svx singlefixerr.out singlefixerr.pos singlereffixerr.svx singlereffixerr.pos\
includecomment.svx\
reenterwarn.svx reenterwarn.out\
angleunits.svx angleunits.pos\
@@ -73,6 +73,8 @@
multicartesian.svx multicartesian.pos multicartesian.out\
multinosurv.svx multinosurv.dump multinosurv.out\
multinormalbad.svx multibug.svx\
+cmd_instruments.svx\
+cmd_instruments_bad.svx cmd_instruments_bad.out\
cmd_team.svx\
cmd_team_bad.svx cmd_team_bad.out\
cmd_title.svx cmd_titlebad.svx\
@@ -94,13 +96,14 @@
cmd_fix_bad.svx cmd_fix_bad.out\
cmd_fix_bad2.svx cmd_fix_bad2.out\
cmd_sd.svx cmd_sd_bad.svx cmd_sd_bad.out\
-cmd_set.svx cmd_set.pos\
+cmd_set.svx cmd_set.out cmd_set.pos\
cmd_set_bad.svx cmd_set_bad.out\
cmd_set_dot_in_name.svx cmd_set_dot_in_name.dump\
unusedstation.svx exportnakedbegin.svx\
oldestyle.svx\
pos.pos v0.3d v0b.3d v1.3d v2.3d v3.3d\
baddatacylpolar.svx baddatacylpolar.out\
+baddatanormal.svx baddatanormal.out\
baddatanosurv.svx baddatanosurv.out\
bugdz.svx bugdz.pos badnewline.svx\
badquantities.svx imgoffbyone.svx imgoffbyone.pos\
@@ -132,7 +135,11 @@
walls.srv walls.out walls.dump\
wallsbaddatum.out wallsbaddatum.wpj\
wallsdecl.wpj wallsdecl.srv wallsdecl.out wallsdecl.dump\
+wallsdiving.srv wallsdiving.dump wallsdiving.out\
+badomit.srv badomit.out\
badopts.srv badopts.out\
+badreadings.srv badreadings.out\
+unknowndirective.srv unknowndirective.out\
dot17.svx dot17.pos 3dcorner.svx 3dcorner.pos\
nosurveyhanging.svx nosurveyhanging.out\
nosurveyhanging2.svx nosurveyhanging2.dump nosurveyhanging2.out\
@@ -183,13 +190,16 @@
legacytokens.out legacytokens.svx\
component_count_bug.svx component_count_bug.out\
component_count_bug2.svx component_count_bug2.out\
+stationnotes.svx stationnotes.out stationnotes.pos\
3dexport.dump 3dexport.svx\
dxffullcoords.dxf dxffullcoords.svx\
dxfsurfequate.svx dxfsurfequate.dxf\
gpxexport.gpx gpxexport.svx\
hpglexport.hpgl hpglexport.svx\
+hpglexportanon.hpgl hpglexportanon.svx\
jsonexport.json jsonexport.svx\
kmlexport.kml kmlexport.svx\
+kmlexportanon.kml kmlexportanon.svx\
pltexport.plt pltexport.svx\
svgexport.svg svgexport.svx
diff -Nru survex-1.4.17/tests/Makefile.in survex-1.4.22/tests/Makefile.in
--- survex-1.4.17/tests/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/tests/Makefile.in 2026-06-23 21:22:45.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -260,7 +260,7 @@
# To be inserted before the command running the test. Creates the
# directory for the log if needed. Stores in $dir the directory
# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# developer-defined test setup AM_TESTS_ENVIRONMENT (if any), and
# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
# will run the test scripts (or their associated LOG_COMPILER, if
# thy have one).
@@ -489,58 +489,61 @@
badinc4.out badinc4.svx badinc5.mak badinc5.out export.svx \
export2.svx singlefix.svx singlefix.out singlefix.pos \
singlereffix.svx singlereffix.pos singlefixerr.svx \
- singlefixerr.pos singlereffixerr.svx singlereffixerr.pos \
- includecomment.svx reenterwarn.svx reenterwarn.out \
- angleunits.svx angleunits.pos lengthunits.svx lengthunits.out \
- lengthunits.pos cmd_alias.svx cmd_alias.out cmd_alias.pos \
- cmd_alias_bad.svx cmd_alias_bad.out cmd_copyright.svx \
- cmd_copyright_bad.svx cmd_copyright_bad.out cmd_default.svx \
- cmd_default_bad.svx cmd_default_bad.out cmd_prefix.svx \
- cmd_truncate.svx cmd_truncate.pos cmd_truncate_bad.svx \
- cmd_truncate_bad.out cmd_case.svx cmd_case.pos \
- cmd_case_bad.svx cmd_case_bad.out cmd_cartesian.svx \
- cmd_cartesian.dump cmd_cartesian.out cmd_cartesian_bad.svx \
- cmd_cartesian_bad.out cmd_fix.svx cmd_fix.out cmd_fix.pos \
- cmd_fix2.svx cmd_fix2.out cmd_ref.svx cmd_ref_bad.svx \
- cmd_ref_bad.out cmd_solve.svx cmd_solve.out cmd_solve.pos \
- cmd_entrance.svx stnsurvey1.svx stnsurvey2.svx \
+ singlefixerr.out singlefixerr.pos singlereffixerr.svx \
+ singlereffixerr.pos includecomment.svx reenterwarn.svx \
+ reenterwarn.out angleunits.svx angleunits.pos lengthunits.svx \
+ lengthunits.out lengthunits.pos cmd_alias.svx cmd_alias.out \
+ cmd_alias.pos cmd_alias_bad.svx cmd_alias_bad.out \
+ cmd_copyright.svx cmd_copyright_bad.svx cmd_copyright_bad.out \
+ cmd_default.svx cmd_default_bad.svx cmd_default_bad.out \
+ cmd_prefix.svx cmd_truncate.svx cmd_truncate.pos \
+ cmd_truncate_bad.svx cmd_truncate_bad.out cmd_case.svx \
+ cmd_case.pos cmd_case_bad.svx cmd_case_bad.out \
+ cmd_cartesian.svx cmd_cartesian.dump cmd_cartesian.out \
+ cmd_cartesian_bad.svx cmd_cartesian_bad.out cmd_fix.svx \
+ cmd_fix.out cmd_fix.pos cmd_fix2.svx cmd_fix2.out cmd_ref.svx \
+ cmd_ref_bad.svx cmd_ref_bad.out cmd_solve.svx cmd_solve.out \
+ cmd_solve.pos cmd_entrance.svx stnsurvey1.svx stnsurvey2.svx \
tapelessthandepth.svx longname.svx chinabug.svx chinabug.out \
chinabug2.svx multinormal.svx multinormal.pos \
multinormignall.svx multinormignall.pos multidiving.svx \
multidiving.out multidiving.pos multicylpolar.svx \
multicylpolar.pos multicartesian.svx multicartesian.pos \
multicartesian.out multinosurv.svx multinosurv.dump \
- multinosurv.out multinormalbad.svx multibug.svx cmd_team.svx \
- cmd_team_bad.svx cmd_team_bad.out cmd_title.svx \
- cmd_titlebad.svx cmd_dummy.svx cmd_infer.svx cmd_infer.pos \
- cartes.svx cartes.pos cartes.out diving.svx diving.pos \
- diving.out cylpolar.svx cylpolar.pos normal.svx normal.pos \
- normal_bad.svx normal_bad.out normignall.svx normignall.pos \
- nosurv.svx nosurv.pos nosurv.out quadrant_bearing.svx \
- quadrant_bearing.pos bad_quadrant_bearing.svx \
- bad_quadrant_bearing.out cmd_flags.svx bad_cmd_flags.svx \
- bad_cmd_flags.out plumb.svx plumb.pos cmd_begin_bad.svx \
- cmd_begin_bad.out cmd_equate_bad.svx cmd_equate_bad.out \
- cmd_export_bad.svx cmd_export_bad.out cmd_fix_bad.svx \
- cmd_fix_bad.out cmd_fix_bad2.svx cmd_fix_bad2.out cmd_sd.svx \
- cmd_sd_bad.svx cmd_sd_bad.out cmd_set.svx cmd_set.pos \
+ multinosurv.out multinormalbad.svx multibug.svx \
+ cmd_instruments.svx cmd_instruments_bad.svx \
+ cmd_instruments_bad.out cmd_team.svx cmd_team_bad.svx \
+ cmd_team_bad.out cmd_title.svx cmd_titlebad.svx cmd_dummy.svx \
+ cmd_infer.svx cmd_infer.pos cartes.svx cartes.pos cartes.out \
+ diving.svx diving.pos diving.out cylpolar.svx cylpolar.pos \
+ normal.svx normal.pos normal_bad.svx normal_bad.out \
+ normignall.svx normignall.pos nosurv.svx nosurv.pos nosurv.out \
+ quadrant_bearing.svx quadrant_bearing.pos \
+ bad_quadrant_bearing.svx bad_quadrant_bearing.out \
+ cmd_flags.svx bad_cmd_flags.svx bad_cmd_flags.out plumb.svx \
+ plumb.pos cmd_begin_bad.svx cmd_begin_bad.out \
+ cmd_equate_bad.svx cmd_equate_bad.out cmd_export_bad.svx \
+ cmd_export_bad.out cmd_fix_bad.svx cmd_fix_bad.out \
+ cmd_fix_bad2.svx cmd_fix_bad2.out cmd_sd.svx cmd_sd_bad.svx \
+ cmd_sd_bad.out cmd_set.svx cmd_set.out cmd_set.pos \
cmd_set_bad.svx cmd_set_bad.out cmd_set_dot_in_name.svx \
cmd_set_dot_in_name.dump unusedstation.svx \
exportnakedbegin.svx oldestyle.svx pos.pos v0.3d v0b.3d v1.3d \
v2.3d v3.3d baddatacylpolar.svx baddatacylpolar.out \
- baddatanosurv.svx baddatanosurv.out bugdz.svx bugdz.pos \
- badnewline.svx badquantities.svx imgoffbyone.svx \
- imgoffbyone.pos infereqtopofil.svx infereqtopofil.pos \
- 3sdfixbug.svx 3sdfixbug.pos extend2names.svx extend2namesx.3d \
- omitclino.svx omitclino.pos back.svx back.out back.pos \
- back2.svx back2.out back2.pos bad_back.svx bad_back.out \
- notentranceorexport.svx inferunknown.svx inferunknown.out \
- inferexports.svx bad_units_factor.svx bad_units_factor.out \
- bad_units_qlist.svx bad_units_qlist.out percent_gradient.svx \
- percent_gradient.pos dotinsurvey.svx dotinsurvey.out \
- 2fixbug.svx leandroclino.svx leandroclino.pos lowsd.svx \
- revdir.svx revdir.pos gettokennullderef.svx lech.svx level.svx \
- level.pos backread.dat backread.dump clptest.dat clptest.clp \
+ baddatanormal.svx baddatanormal.out baddatanosurv.svx \
+ baddatanosurv.out bugdz.svx bugdz.pos badnewline.svx \
+ badquantities.svx imgoffbyone.svx imgoffbyone.pos \
+ infereqtopofil.svx infereqtopofil.pos 3sdfixbug.svx \
+ 3sdfixbug.pos extend2names.svx extend2namesx.3d omitclino.svx \
+ omitclino.pos back.svx back.out back.pos back2.svx back2.out \
+ back2.pos bad_back.svx bad_back.out notentranceorexport.svx \
+ inferunknown.svx inferunknown.out inferexports.svx \
+ bad_units_factor.svx bad_units_factor.out bad_units_qlist.svx \
+ bad_units_qlist.out percent_gradient.svx percent_gradient.pos \
+ dotinsurvey.svx dotinsurvey.out 2fixbug.svx leandroclino.svx \
+ leandroclino.pos lowsd.svx revdir.svx revdir.pos \
+ gettokennullderef.svx lech.svx level.svx level.pos \
+ backread.dat backread.dump clptest.dat clptest.clp \
clptest.dump corrections.dat corrections.pos depthguage.dat \
depthguage.dump karstcompat.dat karstcompat.dump flags.dat \
flags.dump flags.out lrud.dat lrud.out lrud.pos nomeasure.dat \
@@ -549,21 +552,24 @@
subdir/cave1a.dat subdir/cave1b.dat subdir/subsubdir/cave2.dat \
utm.mak utm.out utm.dump walls.srv walls.out walls.dump \
wallsbaddatum.out wallsbaddatum.wpj wallsdecl.wpj \
- wallsdecl.srv wallsdecl.out wallsdecl.dump badopts.srv \
- badopts.out dot17.svx dot17.pos 3dcorner.svx 3dcorner.pos \
- nosurveyhanging.svx nosurveyhanging.out nosurveyhanging2.svx \
- nosurveyhanging2.dump nosurveyhanging2.out \
- cmd_solve_hanging.svx passage.svx hanging_lrud.svx \
- cmd_solve_nothing.svx cmd_solve_nothing_implicit.svx \
- cmd_solve_nothing_implicit.out cmd_date.dump cmd_date.svx \
- cmd_date.out cmd_datebad.svx cmd_datebad.out cmd_datebad2.svx \
- cmd_datebad2.out cmd_calibrate.svx cmd_calibrate.out \
- cmd_calibrate.pos cmd_declination.svx cmd_declination.out \
- cmd_declination.pos cmd_declination_auto.svx \
- cmd_declination_auto.out cmd_declination_auto.pos \
- cmd_declination_auto_bad.svx cmd_declination_auto_bad.out \
- cmd_declination_conv.out cmd_declination_conv.pos \
- cmd_declination_conv.svx cmd_declination_conv_proj_bug.out \
+ wallsdecl.srv wallsdecl.out wallsdecl.dump wallsdiving.srv \
+ wallsdiving.dump wallsdiving.out badomit.srv badomit.out \
+ badopts.srv badopts.out badreadings.srv badreadings.out \
+ unknowndirective.srv unknowndirective.out dot17.svx dot17.pos \
+ 3dcorner.svx 3dcorner.pos nosurveyhanging.svx \
+ nosurveyhanging.out nosurveyhanging2.svx nosurveyhanging2.dump \
+ nosurveyhanging2.out cmd_solve_hanging.svx passage.svx \
+ hanging_lrud.svx cmd_solve_nothing.svx \
+ cmd_solve_nothing_implicit.svx cmd_solve_nothing_implicit.out \
+ cmd_date.dump cmd_date.svx cmd_date.out cmd_datebad.svx \
+ cmd_datebad.out cmd_datebad2.svx cmd_datebad2.out \
+ cmd_calibrate.svx cmd_calibrate.out cmd_calibrate.pos \
+ cmd_declination.svx cmd_declination.out cmd_declination.pos \
+ cmd_declination_auto.svx cmd_declination_auto.out \
+ cmd_declination_auto.pos cmd_declination_auto_bad.svx \
+ cmd_declination_auto_bad.out cmd_declination_conv.out \
+ cmd_declination_conv.pos cmd_declination_conv.svx \
+ cmd_declination_conv_proj_bug.out \
cmd_declination_conv_proj_bug.pos \
cmd_declination_conv_proj_bug.svx unconnected-bug.svx \
unconnected-bug.out eswap.svx eswap.espec eswapx.3d \
@@ -590,11 +596,13 @@
tabinhighlight.out tabinhighlight.svx legacytokens.out \
legacytokens.svx component_count_bug.svx \
component_count_bug.out component_count_bug2.svx \
- component_count_bug2.out 3dexport.dump 3dexport.svx \
- dxffullcoords.dxf dxffullcoords.svx dxfsurfequate.svx \
- dxfsurfequate.dxf gpxexport.gpx gpxexport.svx hpglexport.hpgl \
- hpglexport.svx jsonexport.json jsonexport.svx kmlexport.kml \
- kmlexport.svx pltexport.plt pltexport.svx svgexport.svg \
+ component_count_bug2.out stationnotes.svx stationnotes.out \
+ stationnotes.pos 3dexport.dump 3dexport.svx dxffullcoords.dxf \
+ dxffullcoords.svx dxfsurfequate.svx dxfsurfequate.dxf \
+ gpxexport.gpx gpxexport.svx hpglexport.hpgl hpglexport.svx \
+ hpglexportanon.hpgl hpglexportanon.svx jsonexport.json \
+ jsonexport.svx kmlexport.kml kmlexport.svx kmlexportanon.kml \
+ kmlexportanon.svx pltexport.plt pltexport.svx svgexport.svg \
svgexport.svx imgtest_simple.svx imgtest_survey.svx \
cmapstn.adj cmapstn.dump cmap.sht cmap.dump dump3ddate.3d \
dump3ddate.dump extendsurveyx.3d extendsurveyx.dump filter.plt \
@@ -877,6 +885,7 @@
@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
diff -Nru survex-1.4.17/tests/aven.tst survex-1.4.22/tests/aven.tst
--- survex-1.4.17/tests/aven.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/aven.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - aven tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,11 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
+
+# FIXME aven is failing to run in CI on msys+mingw.
+[ "$OSTYPE" != "cygwin" ] || exit 0
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -53,8 +56,10 @@
# Regression test - aven in 1.2.6 segfaulted.
echo "SURVEXLANG=nosuch aven --help"
if test -n "$VERBOSE"; then
- DISPLAY= SURVEXLANG=nosuch $AVEN --help
+ DISPLAY= SURVEXLANG=nosuch $AVEN --help > tmp.out 2>&1
exitcode=$?
+ [ $exitcode = 0 ] || cat tmp.out
+ rm tmp.out
else
DISPLAY= SURVEXLANG=nosuch $AVEN --help > /dev/null 2>&1
exitcode=$?
@@ -74,8 +79,10 @@
# Regression test - aven in 1.2.6 segfaulted.
echo "SURVEXLANG= LANG=nosuch aven --help"
if test -n "$VERBOSE"; then
- DISPLAY= SURVEXLANG= LANG=nosuch $AVEN --help
+ DISPLAY= SURVEXLANG= LANG=nosuch $AVEN --help > tmp.out 2>&1
exitcode=$?
+ [ $exitcode = 0 ] || cat tmp.out
+ rm tmp.out
else
DISPLAY= SURVEXLANG= LANG=nosuch $AVEN --help > /dev/null 2>&1
exitcode=$?
diff -Nru survex-1.4.17/tests/baddatacylpolar.out survex-1.4.22/tests/baddatacylpolar.out
--- survex-1.4.17/tests/baddatacylpolar.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/baddatacylpolar.out 2026-06-23 05:39:58.000000000 +0000
@@ -10,6 +10,23 @@
./baddatacylpolar.svx:18:7: error: Data style "cylp0lar" unknown
*data cylp0lar from to tape compass depthchange
^~~~~~~~
+./baddatacylpolar.svx:20:30: error: NEWLINE can't be the last reading
+ *data cylpolar station depth newline
+ ^~~~~~~
+./baddatacylpolar.svx:22:40: error: NEWLINE can't be the last reading
+ *data cylpolar station depth ignoreall newline
+ ^~~~~~~
+./baddatacylpolar.svx:24:55: error: NEWLINE can only be preceded by STATION, DEPTH, and COUNT
+ *data cylpolar from to tape compass fromdepth todepth newline
+ ^~~~~~~
+./baddatacylpolar.svx:26:65: error: NEWLINE can only be preceded by STATION, DEPTH, and COUNT
+ *data cylpolar from to tape compass fromdepth todepth ignoreall newline
+ ^~~~~~~
+./baddatacylpolar.svx:28:16: error: NEWLINE can't be the first reading
+ *data cylpolar newline from to tape compass fromdepth todepth
+ ^~~~~~~
+./baddatacylpolar.svx:30: error: Interleaved readings, but no NEWLINE
+ *data cylpolar station tape compass fromdepth todepth
Removing trailing traverses...
@@ -34,4 +51,4 @@
North-South range = 2.99m (from 3 at 2.99m to 1 at 0.00m)
East-West range = 0.26m (from 3 at 0.26m to 1 at 0.00m)
-There were 0 warning(s) and 4 error(s) - no output files produced.
+There were 0 warning(s) and 10 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/baddatacylpolar.svx survex-1.4.22/tests/baddatacylpolar.svx
--- survex-1.4.17/tests/baddatacylpolar.svx 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/tests/baddatacylpolar.svx 2026-06-23 05:39:58.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=fail warn=0 error=4
+; pos=fail warn=0 error=10
*fix 1 reference 0 0 0
; this next line should ignore the data until the next *data - until
; 0.99pre7 it would switch to style cylpolar and cause an internal error
@@ -17,3 +17,15 @@
; An unknown data style should ignore data that follows.
*data cylp0lar from to tape compass depthchange
1 q 2 90 0
+*data cylpolar station depth newline
+1 r 2 90 0
+*data cylpolar station depth ignoreall newline
+1 s 2 90 0
+*data cylpolar from to tape compass fromdepth todepth newline
+1 t 2 90 0
+*data cylpolar from to tape compass fromdepth todepth ignoreall newline
+1 u 2 90 0
+*data cylpolar newline from to tape compass fromdepth todepth
+1 v 2 90 0
+*data cylpolar station tape compass fromdepth todepth
+1 w 2 90 0
diff -Nru survex-1.4.17/tests/baddatanormal.out survex-1.4.22/tests/baddatanormal.out
--- survex-1.4.17/tests/baddatanormal.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/baddatanormal.out 2026-06-23 05:39:58.000000000 +0000
@@ -0,0 +1,54 @@
+./baddatanormal.svx:4:22: error: Reading "foo" not allowed in data style "normal"
+ *data normal from to foo
+ ^~~
+./baddatanormal.svx:11:41: error: Reading "foo" not allowed in data style "normal"
+ *data normal from to tape compass clino foo
+ ^~~
+./baddatanormal.svx:14:41: error: Reading "f0o" not allowed in data style "normal"
+ *data normal from to tape compass clino f0o
+ ^~~
+./baddatanormal.svx:17:7: error: Data style "n0rm4l" unknown
+ *data n0rm4l from to tape compass clino
+ ^~~~~~
+./baddatanormal.svx:19:22: error: NEWLINE can't be the last reading
+ *data normal station newline
+ ^~~~~~~
+./baddatanormal.svx:21:32: error: NEWLINE can't be the last reading
+ *data normal station ignoreall newline
+ ^~~~~~~
+./baddatanormal.svx:23:41: error: NEWLINE can only be preceded by STATION, DEPTH, and COUNT
+ *data normal from to tape compass clino newline
+ ^~~~~~~
+./baddatanormal.svx:25:51: error: NEWLINE can only be preceded by STATION, DEPTH, and COUNT
+ *data normal from to tape compass clino ignoreall newline
+ ^~~~~~~
+./baddatanormal.svx:27:14: error: NEWLINE can't be the first reading
+ *data normal newline from to tape compass clino
+ ^~~~~~~
+./baddatanormal.svx:29: error: Interleaved readings, but no NEWLINE
+ *data normal station tape compass clino
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 2 survey stations, joined by 1 leg.
+There are 0 loops.
+Total length of survey legs = 3.00m ( 3.00m adjusted)
+Total plan length of survey legs = 2.99m
+Total vertical length of survey legs = 0.26m
+Vertical range = 0.26m (from 3 at 0.26m to 1 at 0.00m)
+North-South range = 2.98m (from 3 at 2.98m to 1 at 0.00m)
+East-West range = 0.26m (from 3 at 0.26m to 1 at 0.00m)
+
+There were 0 warning(s) and 10 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/baddatanormal.svx survex-1.4.22/tests/baddatanormal.svx
--- survex-1.4.17/tests/baddatanormal.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/baddatanormal.svx 2026-06-23 05:39:58.000000000 +0000
@@ -0,0 +1,30 @@
+; pos=fail warn=0 error=10
+*fix 1 reference 0 0 0
+; This next line should ignore the data until the next *data.
+*data normal from to foo
+1 2 3.00 004 05 06
+; Test handling of a comment right after an ignored reading. Regression
+; test for bug fixed in 1.4.10.
+*data normal from to tape compass clino ignore
+1 3 3.00 005 05 06; comment
+; Check final token being bad gives an error (bug fixed in 1.4.11).
+*data normal from to tape compass clino foo
+1 4 2.00 270 05
+; Check tokens include numerics
+*data normal from to tape compass clino f0o
+1 5 1.00 090 00
+; An unknown data style should ignore data that follows.
+*data n0rm4l from to tape compass clino
+1 q 2 90 0
+*data normal station newline
+1 r 2 90 0
+*data normal station ignoreall newline
+1 s 2 90 0
+*data normal from to tape compass clino newline
+1 t 2 90 0
+*data normal from to tape compass clino ignoreall newline
+1 u 2 90 0
+*data normal newline from to tape compass clino
+1 v 2 90 0
+*data normal station tape compass clino
+1 w 2 90 0
diff -Nru survex-1.4.17/tests/baddatanosurv.out survex-1.4.22/tests/baddatanosurv.out
--- survex-1.4.17/tests/baddatanosurv.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/baddatanosurv.out 2026-06-23 05:39:58.000000000 +0000
@@ -19,6 +19,18 @@
./baddatanosurv.svx:21:24: error: Reading "to" duplicates previous reading(s)
*data nosurvey station to
^~
+./baddatanosurv.svx:24:26: error: Reading "station" not allowed after reading "ignoreall"
+ *data nosurvey ignoreall station
+ ^~~~~~~
+./baddatanosurv.svx:27:24: error: Reading "tape" not allowed in data style "nosurvey"
+ *data nosurvey from to tape
+ ^~~~
+./baddatanosurv.svx:29:24: error: Reading "tape" not allowed in data style "nosurvey"
+ *data nosurvey station tape
+ ^~~~
+./baddatanosurv.svx:31:24: error: Reading "depth" not allowed in data style "nosurvey"
+ *data nosurvey station depth
+ ^~~~~
Removing trailing traverses...
@@ -40,4 +52,4 @@
Total plan length of survey legs = 0.00m
Total vertical length of survey legs = 0.00m
-There were 0 warning(s) and 7 error(s) - no output files produced.
+There were 0 warning(s) and 11 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/baddatanosurv.svx survex-1.4.22/tests/baddatanosurv.svx
--- survex-1.4.17/tests/baddatanosurv.svx 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/baddatanosurv.svx 2026-06-23 05:39:58.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=fail warn=0 error=7
+; pos=fail warn=0 error=11
*fix 1 reference 0 0 0
; this next line should ignore the data until the next *data
*data nosurvey from too
@@ -20,3 +20,13 @@
1 f
*data nosurvey station to
1 g
+; "ignoreall" must be last
+*data nosurvey ignoreall station
+1 h
+; Test readings which are valid in other styles but not in "nosurvey".
+*data nosurvey from to tape
+1 i
+*data nosurvey station tape
+1 j
+*data nosurvey station depth
+1 k
diff -Nru survex-1.4.17/tests/badinc5.mak survex-1.4.22/tests/badinc5.mak
--- survex-1.4.17/tests/badinc5.mak 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/badinc5.mak 2026-03-21 21:06:18.000000000 +0000
@@ -1,5 +1,7 @@
-/ pos=fail warn=1 error=1 /
-#backread.dat,
+/ pos=fail warn=1 error=1
+# ba
+ck/comment here should be ignored/re/comment to end of line
+ad.dat ,
C1 [m,10.23,20.47,1234.56];
#nosuchfile.dat,
GX1 [f -100.00 -200.00 3600.00];
diff -Nru survex-1.4.17/tests/badinc5.out survex-1.4.22/tests/badinc5.out
--- survex-1.4.17/tests/badinc5.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/badinc5.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./badinc5.mak:4:2: error: Couldn't open file "nosuchfile.dat"
+./badinc5.mak:6:2: error: Couldn't open file "nosuchfile.dat"
#nosuchfile.dat,
^~~~~~~~~~~~~~
@@ -13,7 +13,7 @@
Calculating traverses...
Calculating trailing traverses...
-./badinc5.mak:5: warning: Unused fixed point "GX1"
+./badinc5.mak:7: warning: Unused fixed point "GX1"
Calculating statistics...
diff -Nru survex-1.4.17/tests/badmak.mak survex-1.4.22/tests/badmak.mak
--- survex-1.4.17/tests/badmak.mak 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/badmak.mak 2026-03-21 21:06:18.000000000 +0000
@@ -1,5 +1,21 @@
-/ pos=fail warn=1 error=3 /
+/ pos=fail warn=2 error=3
#backread.dat,
C1 [inch,10.23,20.47,1234.56], C3 [m,10.23,20.47,1234.56],
C2 [n,10.23,20.47,1234.56], C3 [m,10.23,20.47,1234.56],
C3 [f,10.23,20.47,1234.56];
+/ Test that * is ignored
+*30;
+%0.31;
+/ Test that % is ignored
+$30;
+%0.31;
+/ Test that ! is ignored
+!ot;
+/ Test an unknown command gives an error
+?what;
+
+/ Regression test for handling of blank lines
+
+
+*30;
+
diff -Nru survex-1.4.17/tests/badmak.out survex-1.4.22/tests/badmak.out
--- survex-1.4.17/tests/badmak.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/badmak.out 2026-03-21 21:06:18.000000000 +0000
@@ -7,11 +7,14 @@
./badmak.mak:4:29: warning: Station already fixed at the same coordinates
C2 [n,10.23,20.47,1234.56], C3 [m,10.23,20.47,1234.56],
^~
-./badmak.mak:3: info: Previously fixed or equated here
+./badmak.mak:3:32: info: Previously fixed or equated here
./badmak.mak:5:1: error: Station already fixed or equated to a fixed point
C3 [f,10.23,20.47,1234.56];
^~
-./badmak.mak:3: info: Previously fixed or equated here
+./badmak.mak:3:32: info: Previously fixed or equated here
+./badmak.mak:15:1: warning: Unknown command "?what;"
+ ?what;
+ ^
Removing trailing traverses...
@@ -36,4 +39,4 @@
North-South range = 2.15m (from D1 at 21.62m to B2 at 19.47m)
East-West range = 1.00m (from B2 at 11.23m to C3 at 10.23m)
-There were 1 warning(s) and 3 error(s) - no output files produced.
+There were 2 warning(s) and 3 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/badomit.out survex-1.4.22/tests/badomit.out
--- survex-1.4.17/tests/badomit.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/badomit.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,29 @@
+./badomit.srv:3:5: error: Expecting numeric field, found "-"
+ A C - 4 5
+ ^
+./badomit.srv:4:5: error: Expecting numeric field, found "bad"
+ A D bad 4 5
+ ^~~
+./badomit.srv:2:1: info: Survey has no fixed points. Therefore I've fixed A at (0,0,0)
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 4 survey stations, joined by 3 legs.
+There are 0 loops.
+Total length of survey legs = 0.00m ( 0.00m adjusted)
+Total plan length of survey legs = 0.00m
+Total vertical length of survey legs = 0.00m
+
+There were 0 warning(s) and 2 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/badomit.srv survex-1.4.22/tests/badomit.srv
--- survex-1.4.17/tests/badomit.srv 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/badomit.srv 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,4 @@
+; pos=fail warn=0 dummycrprotection=
+A B -- 4 5
+A C - 4 5
+A D bad 4 5
diff -Nru survex-1.4.17/tests/badopts.out survex-1.4.22/tests/badopts.out
--- survex-1.4.17/tests/badopts.out 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/badopts.out 2026-03-21 21:06:18.000000000 +0000
@@ -40,4 +40,13 @@
./badopts.srv:4:51: error: Expecting "C" or "N"
#units odrer=dav ract order=bad typeab=bad typevb=bad
^
+./badopts.srv:5:13: error: Expecting "IS", "IT", "SS", or "ST"
+ #units tape=SI tape=TS tape=
+ ^~
+./badopts.srv:5:21: error: Expecting "IS", "IT", "SS", or "ST"
+ #units tape=SI tape=TS tape=
+ ^~
+./badopts.srv:5:29: error: Expecting "IS", "IT", "SS", or "ST"
+ #units tape=SI tape=TS tape=
+ ^
cavern: error: No survey data
diff -Nru survex-1.4.17/tests/badopts.srv survex-1.4.22/tests/badopts.srv
--- survex-1.4.17/tests/badopts.srv 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/badopts.srv 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,5 @@
-; pos=fail err=3 warn=0 dummycrprotection=
+; pos=fail err=6 warn=0 dummycrprotection=
#units save restore restore restore ; `restore` without corresponding `save`
#units D=bad a=bad a=bad ab=bad v=bad vb=bad s=bad
#units odrer=dav ract order=bad typeab=bad typevb=bad
+#units tape=SI tape=TS tape=
diff -Nru survex-1.4.17/tests/badreadings.out survex-1.4.22/tests/badreadings.out
--- survex-1.4.17/tests/badreadings.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/badreadings.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,74 @@
+./badreadings.srv:2:10: error: Expecting quadrant bearing, found "f"
+ a b 10.0 f 005d +10
+ ^
+./badreadings.srv:3:11: warning: Suspicious compass reading
+ a c 10.0f 365d +10
+ ^~~~
+./badreadings.srv:4:9: error: Expecting "F" or "M"
+ a d 10.0d 005d N10E
+ ^
+./badreadings.srv:4:16: error: Expecting numeric field, found "N10E"
+ a d 10.0d 005d N10E
+ ^~~~
+./badreadings.srv:5:9: error: Expecting "F" or "M"
+ a e 10.0i6 N10E 81
+ ^
+./badreadings.srv:6:10: error: Expecting quadrant bearing, found "N-10W"
+ a f 10i6 N-10W 81
+ ^~~~~
+./badreadings.srv:7:15: warning: Clino reading over 90dg (absolute value)
+ a g 10i6 N10E 91
+ ^~
+./badreadings.srv:8:15: error: Expecting numeric field, found ":20"
+ a h 10.0 30.5:20 -11g
+ ^~~
+./badreadings.srv:9:17: warning: Clino reading over 90dg (absolute value)
+ a i 10.0 30:50 -101g
+ ^~~~~
+./badreadings.srv:10:9: warning: Suspicious compass reading
+ a j 1.0 -1 +10
+ ^~
+./badreadings.srv:11:5: warning: Negative tape reading
+ a k -10.0 30:20 -11g
+ ^~~
+./badreadings.srv:11:5: warning: Negative adjusted tape reading
+ a k -10.0 30:20 -11g
+ ^~~~~
+./badreadings.srv:12:14: error: Expecting numeric field, found ":0"
+ a l 10.0 12.5:0 0:0
+ ^~
+./badreadings.srv:13:18: error: End of line not blank
+ a m 10.0 12:0 0.5:0
+ ^~
+./badreadings.srv:14:17: error: Expecting numeric field, found ":30"
+ a n 10.0 12:29.5:30 0d
+ ^~~
+./badreadings.srv:15:20: error: End of line not blank
+ a o 10.0 12:0 0:1.5:1
+ ^~
+./badreadings.srv:2:1: info: Survey has no fixed points. Therefore I've fixed a at (0,0,0)
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 9 survey stations, joined by 8 legs.
+There are 0 loops.
+Total length of survey legs = 57.25m ( 57.25m adjusted)
+Total plan length of survey legs = 35.61m
+Total vertical length of survey legs = 25.59m
+Vertical range = 19.88m (from e at 9.88m to i at -10.00m)
+North-South range = 18.28m (from o at 9.78m to k at -8.50m)
+East-West range = 7.05m (from o at 2.08m to k at -4.98m)
+
+There were 6 warning(s) and 10 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/badreadings.srv survex-1.4.22/tests/badreadings.srv
--- survex-1.4.17/tests/badreadings.srv 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/badreadings.srv 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,15 @@
+; pos=fail warn=6 dummycrprotection=
+a b 10.0 f 005d +10
+a c 10.0f 365d +10
+a d 10.0d 005d N10E
+a e 10.0i6 N10E 81
+a f 10i6 N-10W 81
+a g 10i6 N10E 91
+a h 10.0 30.5:20 -11g
+a i 10.0 30:50 -101g
+a j 1.0 -1 +10
+a k -10.0 30:20 -11g
+a l 10.0 12.5:0 0:0
+a m 10.0 12:0 0.5:0
+a n 10.0 12:29.5:30 0d
+a o 10.0 12:0 0:1.5:1
diff -Nru survex-1.4.17/tests/cavern.tst survex-1.4.22/tests/cavern.tst
--- survex-1.4.17/tests/cavern.tst 2025-03-18 02:56:17.000000000 +0000
+++ survex-1.4.22/tests/cavern.tst 2026-06-23 20:53:55.000000000 +0000
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -52,6 +52,17 @@
: ${DUMP3D="$testdir"/../src/dump3d}
: ${SURVEXPORT="$testdir"/../src/survexport}
+# FIXME survexport is failing to run in CI on msys+mingw.
+TESTS_=
+[ "$OSTYPE" = "cygwin" ] || TESTS_="3dexport \
+ dxffullcoords dxfsurfequate\
+ gpxexport\
+ hpglexport hpglexportanon\
+ jsonexport\
+ kmlexport kmlexportanon\
+ pltexport\
+ svgexport"
+
: ${TESTS=${*:-"singlefix singlereffix oneleg midpoint lollipop fixedlollipop\
cross firststn\
deltastar deltastar2 deltastarhanging\
@@ -76,11 +87,12 @@
tapelessthandepth longname chinabug chinabug2\
multinormal multinormignall multidiving multicylpolar multicartesian\
multinosurv multinormalbad multibug\
+ cmd_instruments cmd_instruments_bad\
cmd_team cmd_team_bad\
cmd_title cmd_titlebad cmd_dummy cmd_infer cmd_date cmd_datebad cmd_datebad2\
cartes diving cylpolar normal normal_bad normignall nosurv cmd_flags\
bad_cmd_flags plumb unusedstation exportnakedbegin oldestyle bugdz\
- baddatacylpolar baddatanosurv badnewline badquantities\
+ baddatacylpolar baddatanormal baddatanosurv badnewline badquantities\
imgoffbyone infereqtopofil 3sdfixbug\
omitclino back back2 bad_back\
notentranceorexport inferunknown inferexports bad_units_factor\
@@ -93,15 +105,18 @@
cmd_declination_conv cmd_declination_conv_proj_bug\
lech level 2fixbug dot17 3dcorner\
unconnected-bug\
+ stationnotes\
backread.dat corrections.dat depthguage.dat flags.dat karstcompat.dat\
lrud.dat nomeasure.dat noteam.dat\
badmak.mak\
fixfeet.mak utm.mak\
clptest.dat clptest.clp\
walls.srv\
- badopts.srv\
+ badomit.srv badopts.srv badreadings.srv\
+ unknowndirective.srv\
wallsbaddatum.wpj\
wallsdecl.wpj\
+ wallsdiving.srv\
passage hanging_lrud equatenosuchstn surveytypo\
skipafterbadomit passagebad badreadingdotplus badcalibrate calibrate_clino\
badunits badbegin anonstn anonstnbad anonstnrev doubleinc reenterlots\
@@ -111,11 +126,11 @@
quadrant_bearing bad_quadrant_bearing\
samename tabinhighlight legacytokens\
component_count_bug component_count_bug2\
- 3dexport \
- dxffullcoords dxfsurfequate\
- gpxexport hpglexport jsonexport kmlexport pltexport svgexport\
+ $TESTS_
"}}
+# Skip 3dexport...svgexport for mingw for now FIXME
+
# Test file stnsurvey3.svx missing: pos=fail # We exit before the error count.
LC_ALL=C
@@ -176,6 +191,7 @@
# yes : diffpos 3D file output with .pos
# no : Check that a 3D file is produced, but not positions in it
# fail : Check that a 3D file is NOT produced
+ # dump : Compare output of dump3d to .dump
# 3d : Convert to 3D with survexport, compare dump3d to .dump
# dxf : Convert to DXF with survexport and compare with .dxf
# gpx : Convert to GPX with survexport and compare with .gpx
@@ -250,7 +266,15 @@
srcdir=. SOURCE_DATE_EPOCH=1 $CAVERN "$input" --output="$pwd/tmp" > "$pwd/tmp.out"
exitcode=$?
cd "$pwd"
- test -n "$VERBOSE" && cat tmp.out
+ if test "$VERBOSE" = 1 ; then
+ if test fail = "$pos" ; then
+ test $exitcode != 0 || cat tmp.out
+ else
+ test $exitcode = 0 || cat tmp.out
+ fi
+ elif test -n "$VERBOSE" ; then
+ cat tmp.out
+ fi
if [ -n "$VALGRIND" ] ; then
if [ $exitcode = "$vg_error" ] ; then
cat "$vg_log"
@@ -288,7 +312,12 @@
case $pos in
yes)
- if test -n "$VERBOSE" ; then
+ if test "$VERBOSE" = 1 ; then
+ $DIFFPOS "$posfile" tmp.3d > tmp.stdout
+ exitcode=$?
+ test $exitcode = 0 || cat tmp.stdout
+ rm tmp.stdout
+ elif test -n "$VERBOSE" ; then
$DIFFPOS "$posfile" tmp.3d
exitcode=$?
else
@@ -320,17 +349,21 @@
fi
[ "$exitcode" = 0 ] || exit 1
- if test -n "$VERBOSE" ; then
- $DIFF "$expectedfile" "$tmpfile" || exit 1
- else
- $QUIET_DIFF "$expectedfile" "$tmpfile" || exit 1
+ if ! $QUIET_DIFF "$expectedfile" "$tmpfile" ; then
+ test -z "$VERBOSE" || $DIFF "$expectedfile" "$tmpfile"
+ exit 1
fi
;;
dxf|gpx|hpgl|json|kml|plt|svg)
# $pos gives us the file extension here.
expectedfile=$basefile.$pos
tmpfile=tmp.$pos
- if test -n "$VERBOSE" ; then
+ if test "$VERBOSE" = 1 ; then
+ $SURVEXPORT --defaults$survexportopts tmp.3d "$tmpfile" > tmp.stdout
+ exitcode=$?
+ test $exitcode = 0 || cat tmp.stdout
+ rm tmp.stdout
+ elif test -n "$VERBOSE" ; then
$SURVEXPORT --defaults$survexportopts tmp.3d "$tmpfile"
exitcode=$?
else
@@ -365,16 +398,19 @@
;;
esac
- if test -n "$VERBOSE" ; then
- $DIFF "$expectedfile" "$tmpfile" || exit 1
- else
- $QUIET_DIFF "$expectedfile" "$tmpfile" || exit 1
+ if ! $QUIET_DIFF "$expectedfile" "$tmpfile" ; then
+ test -z "$VERBOSE" || $DIFF "$expectedfile" "$tmpfile"
+ exit 1
fi
;;
3d)
expectedfile=$basefile.dump
tmpfile=tmp.dump
- if test -n "$VERBOSE" ; then
+ if test "$VERBOSE" = 1 ; then
+ SOURCE_DATE_EPOCH=1 $SURVEXPORT --defaults$survexportopts tmp.3d "$tmpfile.3d" > tmp.stdout
+ exitcode=$?
+ test $exitcode = 0 || cat tmp.stdout
+ elif test -n "$VERBOSE" ; then
SOURCE_DATE_EPOCH=1 $SURVEXPORT --defaults$survexportopts tmp.3d "$tmpfile.3d"
exitcode=$?
else
@@ -392,10 +428,9 @@
fi
[ "$exitcode" = 0 ] || exit 1
- if test -n "$VERBOSE" ; then
- $DIFF "$expectedfile" "$tmpfile" || exit 1
- else
- $QUIET_DIFF "$expectedfile" "$tmpfile" || exit 1
+ if ! $QUIET_DIFF "$expectedfile" "$tmpfile" ; then
+ test -z "$VERBOSE" || $DIFF "$expectedfile" "$tmpfile"
+ exit 1
fi
;;
no)
diff -Nru survex-1.4.17/tests/cmd_cartesian_bad.out survex-1.4.22/tests/cmd_cartesian_bad.out
--- survex-1.4.17/tests/cmd_cartesian_bad.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_cartesian_bad.out 2026-03-21 21:06:18.000000000 +0000
@@ -16,6 +16,12 @@
./cmd_cartesian_bad.svx:8:12: error: Expecting "GRID", "MAGNETIC", or "TRUE"
*cartesian magnetic2 degrees
^~~~~~~~~
+./cmd_cartesian_bad.svx:9:20: warning: No blank after token
+ *cartesian magnetic+2 degrees
+ ^
+./cmd_cartesian_bad.svx:10:20: warning: No blank after token
+ *cartesian magnetic+2.degrees
+ ^
Removing trailing traverses...
@@ -37,4 +43,4 @@
Total plan length of survey legs = 0.00m
Total vertical length of survey legs = 0.00m
-There were 0 warning(s) and 6 error(s) - no output files produced.
+There were 2 warning(s) and 6 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/cmd_cartesian_bad.svx survex-1.4.22/tests/cmd_cartesian_bad.svx
--- survex-1.4.17/tests/cmd_cartesian_bad.svx 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/tests/cmd_cartesian_bad.svx 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=fail warn=0 error=6
+; pos=fail warn=2 error=6
*fix 1 reference 0 0 0
*cartesian fridge
*cartesian fridge 1.0 degrees
@@ -6,5 +6,7 @@
*cartesian true degrees
*cartesian grid2degrees
*cartesian magnetic2 degrees
+*cartesian magnetic+2 degrees
+*cartesian magnetic+2.degrees
; FIXME: This should flag an error really.
*cartesian true 2degrees
diff -Nru survex-1.4.17/tests/cmd_dummy.svx survex-1.4.22/tests/cmd_dummy.svx
--- survex-1.4.17/tests/cmd_dummy.svx 2025-03-18 03:07:57.000000000 +0000
+++ survex-1.4.22/tests/cmd_dummy.svx 2026-03-21 21:06:18.000000000 +0000
@@ -1,11 +1,15 @@
; pos=no warn=0
*begin it_all
; This was originally a test of various "dummy" commands which were treated
-; like comment lines, but we now actually parse most of these. It is still
-; used as a simple file to include doubleinc.svx.
+; like comment lines, but we now actually parse these. It is still used as a
+; simple file to include from doubleinc.svx.
*copyright 2001 "Space Oddity Speleos"
*date 1990.07-2001.09
-*instrument light "Jamie's magic torch"
+*instrument compass clino "Shetland Attack Pony"
+*team Hannibal
+*team "Face Man"
+*team B.A.
+*team "Murdoch"
*ref "page 42 of 2001 survey book"
diff -Nru survex-1.4.17/tests/cmd_entrance_bad.out survex-1.4.22/tests/cmd_entrance_bad.out
--- survex-1.4.17/tests/cmd_entrance_bad.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_entrance_bad.out 2026-03-21 21:06:18.000000000 +0000
@@ -16,8 +16,9 @@
Calculating statistics...
-Survey contains 1 survey station, joined by 0 legs.
+Survey contains 2 survey stations, joined by 0 legs.
There are 0 loops.
+Survey has 2 connected components.
Total length of survey legs = 0.00m ( 0.00m adjusted)
Total plan length of survey legs = 0.00m
Total vertical length of survey legs = 0.00m
diff -Nru survex-1.4.17/tests/cmd_entrance_bad.svx survex-1.4.22/tests/cmd_entrance_bad.svx
--- survex-1.4.17/tests/cmd_entrance_bad.svx 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/cmd_entrance_bad.svx 2026-03-21 21:06:18.000000000 +0000
@@ -3,3 +3,5 @@
*entrance
*entrance 2
*entrance 1 ; should suppress "Unused fixed point" warning since 1.4.9
+*entrance 3 ; should suppress "Unused fixed point" warning since 1.4.21
+*fix 3 1 0 0
diff -Nru survex-1.4.17/tests/cmd_fix.out survex-1.4.22/tests/cmd_fix.out
--- survex-1.4.17/tests/cmd_fix.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_fix.out 2026-03-21 21:06:18.000000000 +0000
@@ -4,15 +4,15 @@
./cmd_fix.svx:12:6: warning: Station already fixed at the same coordinates
*fix W 0 0 0
^
-./cmd_fix.svx:10: info: Previously fixed or equated here
+./cmd_fix.svx:10:6: info: Previously fixed or equated here
./cmd_fix.svx:13:6: warning: Station already fixed at the same coordinates
*fix W1 0 0 0
^~
-./cmd_fix.svx:11: info: Previously fixed or equated here
+./cmd_fix.svx:11:9: info: Previously fixed or equated here
./cmd_fix.svx:14:6: warning: Station already fixed at the same coordinates
*fix W2 0 0 0
^~
-./cmd_fix.svx:11: info: Previously fixed or equated here
+./cmd_fix.svx:11:14: info: Previously fixed or equated here
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/cmd_fix_bad.out survex-1.4.22/tests/cmd_fix_bad.out
--- survex-1.4.17/tests/cmd_fix_bad.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_fix_bad.out 2026-03-21 21:06:18.000000000 +0000
@@ -121,22 +121,22 @@
./cmd_fix_bad.svx:51:6: error: Station already fixed or equated to a fixed point
*fix W 0 0 1
^
-./cmd_fix_bad.svx:49: info: Previously fixed or equated here
+./cmd_fix_bad.svx:49:6: info: Previously fixed or equated here
./cmd_fix_bad.svx:52:6: error: Station already fixed or equated to a fixed point
*fix Wa 0 0 2
^~
-./cmd_fix_bad.svx:50: info: Previously fixed or equated here
+./cmd_fix_bad.svx:50:9: info: Previously fixed or equated here
./cmd_fix_bad.svx:53:6: error: Station already fixed or equated to a fixed point
*fix Wb 0 0 3
^~
-./cmd_fix_bad.svx:50: info: Previously fixed or equated here
+./cmd_fix_bad.svx:50:14: info: Previously fixed or equated here
./cmd_fix_bad.svx:54:8: info: FIX command with no coordinates - fixing at (0,0,0)
*fix Wa;comment
^
./cmd_fix_bad.svx:54:6: warning: Station already fixed at the same coordinates
*fix Wa;comment
^~
-./cmd_fix_bad.svx:50: info: Previously fixed or equated here
+./cmd_fix_bad.svx:50:9: info: Previously fixed or equated here
./cmd_fix_bad.svx:57:17: error: Expecting numeric field, found ""
*fix Z reference
^
diff -Nru survex-1.4.17/tests/cmd_fix_bad2.out survex-1.4.22/tests/cmd_fix_bad2.out
--- survex-1.4.17/tests/cmd_fix_bad2.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_fix_bad2.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./cmd_fix_bad2.svx:4: info: Survey has no fixed points. Therefore I've fixed a at (0,0,0)
+./cmd_fix_bad2.svx:4:9: info: Survey has no fixed points. Therefore I've fixed a at (0,0,0)
Removing trailing traverses...
@@ -18,7 +18,7 @@
./cmd_fix_bad2.svx:7:6: error: Station already fixed or equated to a fixed point
*fix c 1 1 1
^
-./cmd_fix_bad2.svx:3: info: Previously fixed or equated here
+./cmd_fix_bad2.svx:3:9: info: Previously fixed or equated here
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/cmd_instruments.svx survex-1.4.22/tests/cmd_instruments.svx
--- survex-1.4.17/tests/cmd_instruments.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/cmd_instruments.svx 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,14 @@
+; pos=no warn=0
+*begin survey
+*instrument notes "yellow notebook #1"
+*instrument tape ruler
+; Check that an instrument type can start the description if quoted
+*instrument altitude "station height finder #1"
+; Check that an instrument type can start the description if quoted
+*instrument assistant "right"
+; All other *team roles should work here too
+*instrument BACKBEARING BACKCLINO BACKCOMPASS BACKGRADIENT BACKLENGTH BACKTAPE BEARING CEILING CLINO COMPASS COUNT COUNTER DEPTH DIMENSIONS DOG DOWN DZ EXPLORER FLOOR GRADIENT INSTRUMENTS INSTS LEFT LENGTH NOTEBOOK PICS PICTURES POSITION RIGHT STATION UP "swiss army survey instrument"
+*instrument gps "test alias for position added in 1.4.20"
+*fix 1 0 0 0
+1 2 1 0 0
+*end survey
diff -Nru survex-1.4.17/tests/cmd_instruments_bad.out survex-1.4.22/tests/cmd_instruments_bad.out
--- survex-1.4.17/tests/cmd_instruments_bad.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/cmd_instruments_bad.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,46 @@
+./cmd_instruments_bad.svx:3:12: warning: Unknown instrument type ""
+ *instrument
+ ^
+./cmd_instruments_bad.svx:4:17: warning: Expecting string field
+ *instrument tape
+ ^
+./cmd_instruments_bad.svx:5:26: warning: Expecting string field
+ *instrument compass clino
+ ^
+./cmd_instruments_bad.svx:6:13: warning: Unknown instrument type ""
+ *instrument "compass" "#2"
+ ^
+./cmd_instruments_bad.svx:7:38: warning: Missing "
+ *instrument altitude "unclosed quotes
+ ^
+./cmd_instruments_bad.svx:8:27: warning: Missing "
+ *instrument left "unclosed
+ ^
+./cmd_instruments_bad.svx:12:13: warning: Unknown instrument type "lefts"
+ *instrument lefts rights "red open reel tape"
+ ^~~~~
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 2 survey stations, joined by 1 leg.
+There are 0 loops.
+Total length of survey legs = 1.00m ( 1.00m adjusted)
+Total plan length of survey legs = 1.00m
+Total vertical length of survey legs = 0.00m
+Vertical range = 0.00m (from survey.2 at 0.00m to survey.2 at 0.00m)
+North-South range = 1.00m (from survey.2 at 1.00m to survey.1 at 0.00m)
+East-West range = 0.00m (from survey.2 at 0.00m to survey.2 at 0.00m)
+
+There were 7 warning(s).
diff -Nru survex-1.4.17/tests/cmd_instruments_bad.svx survex-1.4.22/tests/cmd_instruments_bad.svx
--- survex-1.4.17/tests/cmd_instruments_bad.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/cmd_instruments_bad.svx 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,15 @@
+; pos=no warn=7
+*begin survey
+*instrument
+*instrument tape
+*instrument compass clino
+*instrument "compass" "#2"
+*instrument altitude "unclosed quotes
+*instrument left "unclosed
+; We deliberately skip the line after a bad role to avoid triggering multiple
+; warnings for one *instrument command in existing data from before this check
+; was implemented.
+*instrument lefts rights "red open reel tape"
+*fix 1 0 0 0
+1 2 1 0 0
+*end survey
diff -Nru survex-1.4.17/tests/cmd_set.out survex-1.4.22/tests/cmd_set.out
--- survex-1.4.17/tests/cmd_set.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/cmd_set.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,27 @@
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+./cmd_set.svx:49: warning: Unused fixed point "unused"
+
+Calculating statistics...
+
+Survey contains 7 survey stations, joined by 3 legs.
+There are 0 loops.
+Survey has 4 connected components.
+Total length of survey legs = 101.00m ( 101.00m adjusted)
+Total plan length of survey legs = 1.00m
+Total vertical length of survey legs = 100.03m
+Vertical range = 100.00m (from foo:1 at 0.00m to foo:2 at -100.00m)
+North-South range = 0.94m (from foo:2 at 0.00m to 3.1 at -0.94m)
+East-West range = 0.34m (from foo:2 at 0.00m to 3.1 at -0.34m)
+
+There were 1 warning(s).
diff -Nru survex-1.4.17/tests/cmd_set.pos survex-1.4.22/tests/cmd_set.pos
--- survex-1.4.17/tests/cmd_set.pos 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/cmd_set.pos 2026-03-21 21:06:18.000000000 +0000
@@ -5,3 +5,4 @@
( 0.00, 0.00, 0.00 ) foo:1
( 0.00, 0.00, -100.00 ) foo:2
( 0.00, 0.00, 0.00 ) name with spaces in
+( 0.00, 0.00, 0.00 ) unused
diff -Nru survex-1.4.17/tests/cmd_set.svx survex-1.4.22/tests/cmd_set.svx
--- survex-1.4.17/tests/cmd_set.svx 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/cmd_set.svx 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=yes warn=0
+; pos=yes warn=1
*begin
; This should be enough to hint the output separator
*set separator :
@@ -41,3 +41,12 @@
*set names .
1 3.1 1,00 200 -01,5
*end
+*begin ; Check EOL works and that parsing a-f after x is no longer buggy.
+*set eol ^^;this comment should continue until the caret before the next *set
+
+*fix should_be_ignored 0 0 0
+
+^*set eol x0a
+
+*fix unused 0 0 0 ; trigger a warning to check line numbering
+*end
diff -Nru survex-1.4.17/tests/cmd_team.svx survex-1.4.22/tests/cmd_team.svx
--- survex-1.4.17/tests/cmd_team.svx 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/cmd_team.svx 2026-03-21 21:06:18.000000000 +0000
@@ -5,6 +5,7 @@
*team "Al Jobs" ALTITUDE ASSISTANT BACKBEARING BACKCLINO BACKCOMPASS BACKGRADIENT BACKLENGTH BACKTAPE BEARING CEILING CLINO COMPASS COUNT COUNTER DEPTH DIMENSIONS DOG DOWN DZ EXPLORER FLOOR GRADIENT INSTRUMENTS INSTS LEFT LENGTH NOTEBOOK NOTES PICS PICTURES POSITION RIGHT STATION TAPE UP
*team Anna
*team "Bob Bobbington"
+*team "Peter Position" gps ; Alias for position added in 1.4.20
*fix 1 0 0 0
1 2 1 0 0
*end survey
diff -Nru survex-1.4.17/tests/compare.tst survex-1.4.22/tests/compare.tst
--- survex-1.4.17/tests/compare.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/compare.tst 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -26,9 +26,6 @@
export SURVEXLIB
fi
-# force VERBOSE if we're run on a subset of tests
-#test -n "$*" && VERBOSE=1
-
test -x "$testdir"/../src/cavern || testdir=.
: ${CAVERN="$testdir"/../src/cavern}
@@ -51,16 +48,34 @@
DIFFPOS="$VALGRIND --log-file=$vg_log --error-exitcode=$vg_error $DIFFPOS"
fi
+case $TESTS in
+ ""|*--help*)
+ echo "Usage: $0 SVX_FILE..."
+ echo ""
+ echo "Process each SVX_FILE in turn with two versions of cavern and compare."
+ echo ""
+ echo "Cavern versions specified by environment variables:"
+ echo ""
+ echo " CAVERN_ORIG (default: $CAVERN_ORIG)"
+ echo " CAVERN (default: $CAVERN)"
+ if [ -z "$TESTS" ] ; then
+ exit 1
+ else
+ exit 0
+ fi
+ ;;
+esac
+
for file in $TESTS ; do
if test -n "$file" ; then
echo "$file"
rm -f tmp.* tmp_orig.*
if test -n "$VERBOSE" ; then
- $CAVERN_ORIG "$file" --output=tmp_orig | tee tmp_orig.out || exit 1
- $CAVERN "$file" --output=tmp | tee tmp.out
- exitcode=$?
+ { $CAVERN_ORIG "$file" --output=tmp_orig ; exitcode_orig=$? ; } | tee tmp_orig.out
+ { $CAVERN "$file" --output=tmp ; exitcode=$? ; } | tee tmp.out
else
- $CAVERN_ORIG "$file" --output=tmp_orig > tmp_orig.out || exit 1
+ $CAVERN_ORIG "$file" --output=tmp_orig > tmp_orig.out
+ exitcode_orig=$?
$CAVERN "$file" --output=tmp > tmp.out
exitcode=$?
fi
@@ -72,14 +87,14 @@
fi
rm "$vg_log"
fi
- [ "$exitcode" = 0 ] || exit 1
- warn_orig=`sed '$!d;s/^There were \([0-9]*\).*/\1/;s/^[^0-9].*$/0/' tmp_orig.out
- warn=`sed '$!d;s/^There were \([0-9]*\).*/\1/;s/^[^0-9].*$/0/' tmp.out`
- if test x"$warn_orig" != x"$warn" ; then
- echo "$CAVERN_ORIG gave $warn_orig warning(s)"
- echo "$CAVERN gave $warn warning(s)"
+ diag_orig=`sed 's/^There were \([0-9]* warning(s) and [0-9]* error(s)\).*/\1/p;d' tmp_orig.out`
+ diag=`sed 's/^There were \([0-9]* warning(s) and [0-9]* error(s)\).*/\1/p;d' tmp.out`
+ if test x"$diag_orig" != x"$diag" ; then
+ echo " $diag_orig from $CAVERN_ORIG"
+ echo " $diag from $CAVERN"
exit 1
fi
+ [ "$exitcode_orig:$exitcode" = "0:0" ] || exit 1
if test -n "$VERBOSE" ; then
$DIFFPOS tmp.3d tmp_orig.3d
exitcode=$?
diff -Nru survex-1.4.17/tests/csbad.out survex-1.4.22/tests/csbad.out
--- survex-1.4.17/tests/csbad.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/csbad.out 2026-03-21 21:06:18.000000000 +0000
@@ -80,8 +80,9 @@
./csbad.svx:29:9: error: Coordinate system unsuitable for output
*cs out ESRI:104305
^~~~~~~~~~~
-./csbad.svx:37: error: Failed to convert coordinates: Point outside of projection domain
+./csbad.svx:37:18: error: Failed to convert coordinates: Point outside of projection domain
*fix 2 reference 179 -89 1000
+ ^~~~~~~~~~~~
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/diffpos.tst survex-1.4.22/tests/diffpos.tst
--- survex-1.4.17/tests/diffpos.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/diffpos.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - diffpos tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -76,11 +76,9 @@
fi
rm "$vg_log"
fi
- if test -n "$VERBOSE" ; then
- cat diffpos.tmp
- $DIFF diffpos.tmp "$srcdir/${file}.out" || exit 1
- else
- $QUIET_DIFF diffpos.tmp "$srcdir/${file}.out" > /dev/null || exit 1
+ if ! $QUIET_DIFF diffpos.tmp "$srcdir/${file}.out" > /dev/null ; then
+ [ -z "$VERBOSE"] || $DIFF diffpos.tmp "$srcdir/${file}.out"
+ exit 1
fi
rm -f diffpos.tmp
done
@@ -89,10 +87,14 @@
echo "diffpos $args"
rm -f diffpos.tmp
$DIFFPOS $args "$srcdir/v0.3d" "$srcdir/v0.3d" > diffpos.tmp
- if test -n "$VERBOSE" ; then
- cat diffpos.tmp
+ exitcode=$?
+ if [ $exitcode != 0 ] ; then
+ [ -z "$VERBOSE"] || cat diffpos.tmp
+ fi
+ if ! $QUIET_DIFF diffpos.tmp /dev/null > /dev/null ; then
+ [ -z "$VERBOSE"] || $DIFF diffpos.tmp /dev/null
+ exit 1
fi
- $QUIET_DIFF diffpos.tmp /dev/null > /dev/null || exit 1
rm -f diffpos.tmp
done
test -n "$VERBOSE" && echo "Test passed"
diff -Nru survex-1.4.17/tests/doubleinc.out survex-1.4.22/tests/doubleinc.out
--- survex-1.4.17/tests/doubleinc.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/doubleinc.out 2026-03-21 21:06:18.000000000 +0000
@@ -2,11 +2,11 @@
./cmd_dummy.svx:2:8: warning: Reentering an existing survey is deprecated
*begin it_all
^~~~~~
-./cmd_dummy.svx:2: info: Originally entered here
-./cmd_dummy.svx:12:6: warning: Station already fixed at the same coordinates
+./cmd_dummy.svx:2:8: info: Originally entered here
+./cmd_dummy.svx:16:6: warning: Station already fixed at the same coordinates
*fix no_warnings_please reference 0 0 0
^~~~~~~~~~~~~~~~~~
-./cmd_dummy.svx:12: info: Previously fixed or equated here
+./cmd_dummy.svx:16:6: info: Previously fixed or equated here
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/dump3d.tst survex-1.4.22/tests/dump3d.tst
--- survex-1.4.17/tests/dump3d.tst 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/dump3d.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - dump3d tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -101,12 +101,9 @@
rm "$vg_log"
fi
test $exitcode = 0 || exit 1
- if test -n "$VERBOSE" ; then
- $DIFF tmp.dump "$expect"
- exitcode=$?
- else
- $QUIET_DIFF tmp.dump "$expect" > /dev/null
- exitcode=$?
+ if ! $QUIET_DIFF tmp.dump "$expect" > /dev/null ; then
+ [ -z "$VERBOSE" ] || $DIFF tmp.dump "$expect"
+ exit 1
fi
if [ -n "$VALGRIND" ] ; then
if [ $exitcode = "$vg_error" ] ; then
diff -Nru survex-1.4.17/tests/equatenosuchstn.out survex-1.4.22/tests/equatenosuchstn.out
--- survex-1.4.17/tests/equatenosuchstn.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/equatenosuchstn.out 2026-03-21 21:06:18.000000000 +0000
@@ -21,7 +21,7 @@
Vertical range = 1.74m (from entrance.1 at 0.00m to entrance.2 at -1.74m)
North-South range = 1.71m (from entrance.1 at 0.00m to entrance.2 at -1.71m)
East-West range = 9.70m (from entrance.2 at 9.70m to entrance.1 at 0.00m)
-./equatenosuchstn.svx:8: error: Reference to station "nosuchsurvey.1" from non-existent survey "nosuchsurvey"
+./equatenosuchstn.svx:8:20: error: Reference to station "nosuchsurvey.1" from non-existent survey "nosuchsurvey"
./equatenosuchstn.svx:8: warning: Station "nosuchsurvey.1" referred to just once, with an explicit survey name - typo?
There were 1 warning(s) and 1 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/exporterr1b.out survex-1.4.22/tests/exporterr1b.out
--- survex-1.4.17/tests/exporterr1b.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/exporterr1b.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,5 +1,5 @@
-./exporterr1b.svx:2: error: Station "outer.inner.1" not exported from survey "outer"
-./exporterr1b.svx:8: info: Survey has no fixed points. Therefore I've fixed outer.inner.1 at (0,0,0)
+./exporterr1b.svx:2:8: error: Station "outer.inner.1" not exported from survey "outer"
+./exporterr1b.svx:8:9: info: Survey has no fixed points. Therefore I've fixed outer.inner.1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/extend.tst survex-1.4.22/tests/extend.tst
--- survex-1.4.17/tests/extend.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/extend.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - extend tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -58,8 +58,10 @@
test -f "$srcdir/$file.espec" && EXTEND_ARGS="--specfile $srcdir/$file.espec"
rm -f tmp.*
if test -n "$VERBOSE" ; then
- $CAVERN "$srcdir/$file.svx" --output=tmp
+ $CAVERN "$srcdir/$file.svx" --output=tmp > tmp.stdout
exitcode=$?
+ [ $exitcode = 0 ] || cat tmp.stdout
+ rm tmp.stdout
else
$CAVERN "$srcdir/$file.svx" --output=tmp > /dev/null
exitcode=$?
@@ -74,8 +76,10 @@
fi
[ "$exitcode" = 0 ] || exit 1
if test -n "$VERBOSE" ; then
- $EXTEND $EXTEND_ARGS tmp.3d tmp.x.3d
+ $EXTEND $EXTEND_ARGS tmp.3d tmp.x.3d > tmp.stdout
exitcode=$?
+ [ $exitcode = 0 ] || cat tmp.stdout
+ rm tmp.stdout
else
$EXTEND $EXTEND_ARGS tmp.3d tmp.x.3d > /dev/null
exitcode=$?
@@ -90,8 +94,10 @@
fi
[ "$exitcode" = 0 ] || exit 1
if test -n "$VERBOSE" ; then
- $DIFFPOS tmp.x.3d "$srcdir/${file}x.3d"
+ $DIFFPOS tmp.x.3d "$srcdir/${file}x.3d" > tmp.stdout
exitcode=$?
+ [ $exitcode = 0 ] || cat tmp.stdout
+ rm tmp.stdout
else
$DIFFPOS tmp.x.3d "$srcdir/${file}x.3d" > /dev/null
exitcode=$?
diff -Nru survex-1.4.17/tests/fixfeet.mak survex-1.4.22/tests/fixfeet.mak
--- survex-1.4.17/tests/fixfeet.mak 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/fixfeet.mak 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-/ pos=yes warn=0 /
+/ pos=yes warn=0
#backread.dat,
C1 [m,10.23,20.47,1234.56];
#noteam.dat,
diff -Nru survex-1.4.17/tests/flags.out survex-1.4.22/tests/flags.out
--- survex-1.4.17/tests/flags.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/flags.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,6 +1,6 @@
./flags.dat:17: warning: Survey leg with same station ("y") at both ends - typing error?
y y 3.281 0 0 0 0 0 0
-./flags.dat:10: info: Survey has no fixed points. Therefore I've fixed C1 at (0,0,0)
+./flags.dat:10:2: info: Survey has no fixed points. Therefore I've fixed C1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/folder.mak survex-1.4.22/tests/folder.mak
--- survex-1.4.17/tests/folder.mak 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/folder.mak 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-/ pos=dump warn=0 /
+/ pos=dump warn=0
[subdir;
#cave1a.dat;
[subsubdir;
diff -Nru survex-1.4.17/tests/hanging_cpt.svx survex-1.4.22/tests/hanging_cpt.svx
--- survex-1.4.17/tests/hanging_cpt.svx 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/hanging_cpt.svx 2026-03-21 21:06:18.000000000 +0000
@@ -8,3 +8,11 @@
3 7 1 0 0
4 5 1 0 0
6 7 1 0 0
+
+; Regression test for bug in code to find a neighbour for an anonymous station.
+;
+; This component gets reduced to a single anonymous station (by removing a
+; trailing traverse ending at the other anonymous station).
+a .. 1 0 0
+a b 1 0 0
+b .. 1 0 0
diff -Nru survex-1.4.17/tests/hpglexport.hpgl survex-1.4.22/tests/hpglexport.hpgl
--- survex-1.4.17/tests/hpglexport.hpgl 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/tests/hpglexport.hpgl 2026-05-04 02:31:08.000000000 +0000
@@ -5,12 +5,8 @@
PU15939,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
PU15939,7172;LB5;
PU15939,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
-PU0,0;LB;
-PU0,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
PU0,7172;LB3;
PU0,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
-PU7969,0;LB;
-PU7969,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
PU7969,7172;LB2;
PU7969,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
PU7969,15142;LB1;
diff -Nru survex-1.4.17/tests/hpglexportanon.hpgl survex-1.4.22/tests/hpglexportanon.hpgl
--- survex-1.4.17/tests/hpglexportanon.hpgl 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/hpglexportanon.hpgl 2026-05-04 02:32:15.000000000 +0000
@@ -0,0 +1,18 @@
+IN;SP1;SI0.125,.179;
+PU0,15142;PD7969,15142;PD7969,7172;PU7969,7172;PD15939,7172;SP3;PU7969,7172;PD0,7172;SP1;PU15939,7172;PD15939,11;SP2;PU15939,7172;PD15939,0;SP3;PU7969,7172;PD7969,0;PU0,7172;PD0,0;SP1;PU15939,11;LB6a;
+PU15939,11;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU15939,0;LB6;
+PU15939,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU15939,7172;LB5;
+PU15939,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU0,7172;LB3;
+PU0,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU7969,7172;LB2;
+PU7969,7172;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU7969,15142;LB1;
+PU7969,15142;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU0,15142;LBbh;
+PU0,15142;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU0,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+PU7969,0;PD;PR28,28;PR-56,-56;PU56,0;PD-56,56;PU28,-28;PA;
+IW;PG;
diff -Nru survex-1.4.17/tests/hpglexportanon.svx survex-1.4.22/tests/hpglexportanon.svx
--- survex-1.4.17/tests/hpglexportanon.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/hpglexportanon.svx 2026-05-04 02:31:46.000000000 +0000
@@ -0,0 +1,20 @@
+; pos=hpgl survexportopt=--surface-legs survexportopt=--splays survexportopt=--anonymous-stations warn=0
+*cs long-lat
+*cs out UTM60S
+*fix bh 174.7767 -41.2784 30
+*entrance bh
+bh 1 100 090 -5
+1 2 100 180 -5
+*begin
+*flags surface
+2 3 100 270 -5
+2 . 90 180 -5
+3 .. 90 180 -5
+*end
+2 5 100 090 -5
+*begin
+*flags splay
+5 6 90 180 -5
+*end
+*flags duplicate
+5 6a 90 180 -6
diff -Nru survex-1.4.17/tests/imgtest.tst survex-1.4.22/tests/imgtest.tst
--- survex-1.4.17/tests/imgtest.tst 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/imgtest.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - test using img library outside of Survex
-# Copyright (C) 2020-2024 Olly Betts
+# Copyright (C) 2020-2025 Olly Betts
#
# 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
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -63,7 +63,7 @@
srcdir=. $CAVERN "$file.svx" --output="$pwd/$file" > "$pwd/cavern.tmp" 2>&1
exitcode=$?
cd "$pwd"
- test -n "$VERBOSE" && cat cavern.tmp
+ test $exitcode != 0 && test -n "$VERBOSE" && cat cavern.tmp
if [ -n "$VALGRIND" ] ; then
if [ $exitcode = "$vg_error" ] ; then
cat "$vg_log"
@@ -82,9 +82,7 @@
$IMGTEST "$file.3d" $args > imgtest.tmp 2>&1
exitcode=$?
- if test -n "$VERBOSE" ; then
- cat imgtest.tmp
- fi
+ test $exitcode != 0 && test -n "$VERBOSE" && cat imgtest.tmp
if [ -n "$VALGRIND" ] ; then
if [ $exitcode = "$vg_error" ] ; then
cat "$vg_log"
diff -Nru survex-1.4.17/tests/kmlexport.kml survex-1.4.22/tests/kmlexport.kml
--- survex-1.4.17/tests/kmlexport.kml 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/tests/kmlexport.kml 2026-05-04 02:39:03.000000000 +0000
@@ -38,9 +38,7 @@
174.77901985,-41.28014060,-3.90 6a
174.77901954,-41.28014960,-3.99 6
174.77904692,-41.27934257,3.85 5
-174.77664219,-41.28010369,-3.99
174.77666960,-41.27929666,3.85 3
-174.77783087,-41.28012665,4.72
174.77785826,-41.27931962,12.57 2
174.77788868,-41.27842294,21.28 1
174.77670004,-41.27839998,30.00 bh #ent
diff -Nru survex-1.4.17/tests/kmlexportanon.kml survex-1.4.22/tests/kmlexportanon.kml
--- survex-1.4.17/tests/kmlexportanon.kml 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/kmlexportanon.kml 2026-05-04 02:52:44.000000000 +0000
@@ -0,0 +1,47 @@
+
+
+kmlexportanon
+
+
+
+
+
+absolute
+174.77670004,-41.27839998,30.00
+174.77788868,-41.27842294,21.28
+174.77785826,-41.27931962,12.57
+
+absolute
+174.77785826,-41.27931962,12.57
+174.77904692,-41.27934257,3.85
+
+#surf absolute
+174.77785826,-41.27931962,12.57
+174.77666960,-41.27929666,3.85
+
+absolute
+174.77904692,-41.27934257,3.85
+174.77901985,-41.28014060,-3.90
+
+#splay absolute
+174.77904692,-41.27934257,3.85
+174.77901954,-41.28014960,-3.99
+
+#surf absolute
+174.77785826,-41.27931962,12.57
+174.77783087,-41.28012665,4.72
+
+absolute
+174.77666960,-41.27929666,3.85
+174.77664219,-41.28010369,-3.99
+
+174.77901985,-41.28014060,-3.90 6a
+174.77901954,-41.28014960,-3.99 6
+174.77904692,-41.27934257,3.85 5
+174.77666960,-41.27929666,3.85 3
+174.77785826,-41.27931962,12.57 2
+174.77788868,-41.27842294,21.28 1
+174.77670004,-41.27839998,30.00 bh #ent
+174.77664219,-41.28010369,-3.99
+174.77783087,-41.28012665,4.72
+
diff -Nru survex-1.4.17/tests/kmlexportanon.svx survex-1.4.22/tests/kmlexportanon.svx
--- survex-1.4.17/tests/kmlexportanon.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/kmlexportanon.svx 2026-05-04 02:37:30.000000000 +0000
@@ -0,0 +1,20 @@
+; pos=kml survexportopt=--surface-legs survexportopt=--splays survexportopt=--entrances survexportopt=--anon-stations warn=0
+*cs long-lat
+*cs out UTM60S
+*fix bh 174.7767 -41.2784 30
+*entrance bh
+bh 1 100 090 -5
+1 2 100 180 -5
+*begin
+*flags surface
+2 3 100 270 -5
+2 . 90 180 -5
+3 .. 90 180 -5
+*end
+2 5 100 090 -5
+*begin
+*flags splay
+5 6 90 180 -5
+*end
+*flags duplicate
+5 6a 89 180 -5
diff -Nru survex-1.4.17/tests/lrud.out survex-1.4.22/tests/lrud.out
--- survex-1.4.17/tests/lrud.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/lrud.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./lrud.dat:10: info: Survey has no fixed points. Therefore I've fixed AA1 at (0,0,0)
+./lrud.dat:10:6: info: Survey has no fixed points. Therefore I've fixed AA1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/mixedeols.out survex-1.4.22/tests/mixedeols.out
--- survex-1.4.17/tests/mixedeols.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/mixedeols.out 2026-05-03 19:23:23.000000000 +0000
@@ -13,14 +13,15 @@
./mixedeols.svx:2: warning: Unused fixed point "1"
./mixedeols.svx:7: warning: Unused fixed point "2"
./mixedeols.svx:10: warning: Unused fixed point "3"
+./mixedeols.svx:13: warning: Unused fixed point "4"
Calculating statistics...
-Survey contains 3 survey stations, joined by 0 legs.
+Survey contains 4 survey stations, joined by 0 legs.
There are 0 loops.
-Survey has 3 connected components.
+Survey has 4 connected components.
Total length of survey legs = 0.00m ( 0.00m adjusted)
Total plan length of survey legs = 0.00m
Total vertical length of survey legs = 0.00m
-There were 3 warning(s).
+There were 4 warning(s).
diff -Nru survex-1.4.17/tests/mixedeols.svx survex-1.4.22/tests/mixedeols.svx
--- survex-1.4.17/tests/mixedeols.svx 2024-07-22 19:59:17.000000000 +0000
+++ survex-1.4.22/tests/mixedeols.svx 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=no warn=3
+; pos=no warn=4
*fix 1 0 0 0
; This file has erratic line endings, which used to confuse cavern's line
; counting in some cases - we sprinkle in unused *fix commands to generate
@@ -8,3 +8,6 @@
*fix 3 0 0 0
+
+
+*fix 4 0 0 0
diff -Nru survex-1.4.17/tests/multinosurv.dump survex-1.4.22/tests/multinosurv.dump
--- survex-1.4.17/tests/multinosurv.dump 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/multinosurv.dump 2026-06-23 05:39:58.000000000 +0000
@@ -4,12 +4,15 @@
VERSION 8
SEPARATOR '.'
--
+LEG 0.00 1.00 0.00 0.50 0.50 0.50 [] STYLE=NOSURVEY
+LEG 0.00 0.00 0.00 0.00 1.00 0.00 [] STYLE=NOSURVEY
+LEG 0.00 0.00 0.00 0.00 0.00 1.00 [] STYLE=NOSURVEY
LEG 1.00 0.00 0.00 0.50 0.50 0.50 [] STYLE=NOSURVEY
LEG 1.00 0.00 0.00 0.00 0.00 1.00 [] STYLE=NOSURVEY
LEG 1.00 0.00 0.00 0.00 1.00 0.00 [] STYLE=NOSURVEY
LEG 0.00 0.00 0.00 1.00 0.00 0.00 [] STYLE=NOSURVEY
-NODE 0.00 0.00 1.00 [4] UNDERGROUND
-NODE 0.00 1.00 0.00 [3] UNDERGROUND
+NODE 0.00 0.00 1.00 [4] UNDERGROUND FIXED
+NODE 0.00 1.00 0.00 [3] UNDERGROUND FIXED
NODE 0.00 0.00 0.00 [1] UNDERGROUND FIXED
NODE 1.00 0.00 0.00 [2] UNDERGROUND FIXED
NODE 0.50 0.50 0.50 [5] UNDERGROUND FIXED
diff -Nru survex-1.4.17/tests/multinosurv.svx survex-1.4.22/tests/multinosurv.svx
--- survex-1.4.17/tests/multinosurv.svx 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/multinosurv.svx 2026-06-23 05:48:02.000000000 +0000
@@ -14,3 +14,10 @@
*data
2
5
+*data nosurvey station ignore
+1 42; Test handling of a comment right after an ignored reading.
+4 x
+*data nosurvey station ignoreall
+1 Testing ignoreall
+3
+5 oh yeah!
diff -Nru survex-1.4.17/tests/nomeasure.out survex-1.4.22/tests/nomeasure.out
--- survex-1.4.17/tests/nomeasure.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/nomeasure.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./nomeasure.dat:10: info: Survey has no fixed points. Therefore I've fixed C1 at (0,0,0)
+./nomeasure.dat:10:2: info: Survey has no fixed points. Therefore I've fixed C1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/nosurv.svx survex-1.4.22/tests/nosurv.svx
--- survex-1.4.17/tests/nosurv.svx 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/nosurv.svx 2026-06-23 20:53:55.000000000 +0000
@@ -8,3 +8,5 @@
2 3
*data nosurvey to from ignore
4 3 42; Test handling of a comment right after an ignored reading.
+*data nosurvey to from ignoreall
+4 3 Testing ignoreall
diff -Nru survex-1.4.17/tests/nosurvey2.out survex-1.4.22/tests/nosurvey2.out
--- survex-1.4.17/tests/nosurvey2.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/nosurvey2.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./nosurvey2.svx:2: info: Survey has no fixed points. Therefore I've fixed 1 at (0,0,0)
+./nosurvey2.svx:2:1: info: Survey has no fixed points. Therefore I've fixed 1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/nosurveyhanging.out survex-1.4.22/tests/nosurveyhanging.out
--- survex-1.4.17/tests/nosurveyhanging.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/nosurveyhanging.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./nosurveyhanging.svx:6: info: Survey has no fixed points. Therefore I've fixed test.2 at (0,0,0)
+./nosurveyhanging.svx:6:3: info: Survey has no fixed points. Therefore I've fixed test.2 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/nosurveyhanging2.out survex-1.4.22/tests/nosurveyhanging2.out
--- survex-1.4.17/tests/nosurveyhanging2.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/nosurveyhanging2.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./nosurveyhanging2.svx:5: info: Survey has no fixed points. Therefore I've fixed 2 at (0,0,0)
+./nosurveyhanging2.svx:5:3: info: Survey has no fixed points. Therefore I've fixed 2 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/noteam.out survex-1.4.22/tests/noteam.out
--- survex-1.4.17/tests/noteam.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/noteam.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-./noteam.dat:10: info: Survey has no fixed points. Therefore I've fixed GX1 at (0,0,0)
+./noteam.dat:10:10: info: Survey has no fixed points. Therefore I've fixed GX1 at (0,0,0)
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/omitclino.pos survex-1.4.22/tests/omitclino.pos
--- survex-1.4.17/tests/omitclino.pos 2023-11-16 02:07:28.000000000 +0000
+++ survex-1.4.22/tests/omitclino.pos 2026-03-21 21:06:18.000000000 +0000
@@ -2,3 +2,4 @@
( 0.00, 0.00, 0.00 ) 1
( 0.00, 12.00, 0.00 ) 2
( 11.00, 12.00, 0.00 ) 3
+( 10.00, 12.00, 0.00 ) 4
diff -Nru survex-1.4.17/tests/omitclino.svx survex-1.4.22/tests/omitclino.svx
--- survex-1.4.17/tests/omitclino.svx 2024-07-22 19:59:17.000000000 +0000
+++ survex-1.4.22/tests/omitclino.svx 2026-03-21 21:06:18.000000000 +0000
@@ -4,3 +4,6 @@
; this failed up to Survex 1.0.7:
*set omit @
2 3 11.00 090 @
+
+*data normal from to tape compass
+2 4 10.00 090
diff -Nru survex-1.4.17/tests/passage.svx survex-1.4.22/tests/passage.svx
--- survex-1.4.17/tests/passage.svx 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/passage.svx 2026-06-20 21:58:35.000000000 +0000
@@ -13,3 +13,19 @@
*data
2 .3 .3 .3 .3
4 .3 .3 .3 .3
+
+*data passage station left right ignore up down ignoreall
+1 1 .3 HELLO 1.8 1 HI THERE!
+3 2 2 x 2 2
+
+; Test with a subset of LRUD (supported since 1.4.22).
+*data passage station left right
+3 3 3
+4 4 4
+
+; Test with no LRUD (supported since 1.4.22).
+*data passage station ignoreall
+1 This is a comment
+2 -
+3
+4 As is this
diff -Nru survex-1.4.17/tests/pltexport.plt survex-1.4.22/tests/pltexport.plt
--- survex-1.4.17/tests/pltexport.plt 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/pltexport.plt 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,6 @@
Z 17807624.344 17808245.341 1029527.264 1030180.938 -13.091 98.425
+G-60
+OWGS 1984
NX D 1 1 1 Cpltexport
M 17808245.341 1029527.264 98.425 Sbh P -9 -9 -9 -9
D 17808245.341 1029854.101 69.816 S1 P -9 -9 -9 -9
@@ -10,10 +12,12 @@
M 17807918.504 1030180.938 12.631 S5 P -9 -9 -9 -9
D 17807627.625 1030180.938 -12.795 S6a P -9 -9 -9 -9 FL
M 17807918.504 1030180.938 12.631 S5 P -9 -9 -9 -9
+D 17807630.873 1030180.938 -12.533 S6^_^^^Zz P -9 -9 -9 -9 FL
+M 17807918.504 1030180.938 12.631 S5 P -9 -9 -9 -9
D 17807624.344 1030180.938 -13.091 S6 P -9 -9 -9 -9 FS
M 17807918.504 1029854.101 41.240 S2 P -9 -9 -9 -9
-D 17807624.344 1029854.101 15.486 S%:1 P -9 -9 -9 -9 FPS
+D 17807624.344 1029854.101 15.486 S^1 P -9 -9 -9 -9 FPS
M 17807918.504 1029527.264 12.631 S3 P -9 -9 -9 -9
-D 17807624.344 1029527.264 -13.091 S%:2 P -9 -9 -9 -9 FPS
+D 17807624.344 1029527.264 -13.091 S^2 P -9 -9 -9 -9 FPS
X 17807624.344 17808245.341 1029527.264 1030180.938 -13.091 98.425
\ No newline at end of file
diff -Nru survex-1.4.17/tests/pltexport.svx survex-1.4.22/tests/pltexport.svx
--- survex-1.4.17/tests/pltexport.svx 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/pltexport.svx 2026-03-21 21:06:18.000000000 +0000
@@ -17,3 +17,6 @@
*end
*flags duplicate
5 6a 89 180 -5
+*set eol x0a
+*set names x20x1a^
+5 6 ^z 88 180 -5
diff -Nru survex-1.4.17/tests/reenterlots.out survex-1.4.22/tests/reenterlots.out
--- survex-1.4.17/tests/reenterlots.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/reenterlots.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,23 +1,23 @@
./reenterlots.svx:7:8: warning: Reentering an existing survey is deprecated
*begin svy
^~~
-./reenterlots.svx:3: info: Originally entered here
+./reenterlots.svx:3:8: info: Originally entered here
./reenterlots.svx:10:8: warning: Reentering an existing survey is deprecated
*begin svy
^~~
-./reenterlots.svx:3: info: Originally entered here
+./reenterlots.svx:3:8: info: Originally entered here
./reenterlots.svx:13:8: warning: Reentering an existing survey is deprecated
*begin svy
^~~
-./reenterlots.svx:3: info: Originally entered here
+./reenterlots.svx:3:8: info: Originally entered here
./reenterlots.svx:16:8: warning: Reentering an existing survey is deprecated
*begin svy
^~~
-./reenterlots.svx:3: info: Originally entered here
+./reenterlots.svx:3:8: info: Originally entered here
./reenterlots.svx:19:8: warning: Reentering an existing survey is deprecated
*begin svy
^~~
-./reenterlots.svx:3: info: Originally entered here
+./reenterlots.svx:3:8: info: Originally entered here
./reenterlots.svx:19: info: Further uses of this deprecated feature will not be reported
*begin svy
diff -Nru survex-1.4.17/tests/reenterwarn.out survex-1.4.22/tests/reenterwarn.out
--- survex-1.4.17/tests/reenterwarn.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/reenterwarn.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
./reenterwarn.svx:4:8: warning: Reentering an existing survey is deprecated
*begin 1
^
-./reenterwarn.svx:2: info: Originally entered here
+./reenterwarn.svx:2:8: info: Originally entered here
Removing trailing traverses...
diff -Nru survex-1.4.17/tests/singlefixerr.out survex-1.4.22/tests/singlefixerr.out
--- survex-1.4.17/tests/singlefixerr.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/singlefixerr.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,23 @@
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+./singlefixerr.svx:2: warning: Unused fixed point "1"
+
+Calculating statistics...
+
+Survey contains 1 survey station, joined by 0 legs.
+There are 0 loops.
+Total length of survey legs = 0.00m ( 0.00m adjusted)
+Total plan length of survey legs = 0.00m
+Total vertical length of survey legs = 0.00m
+
+There were 1 warning(s).
diff -Nru survex-1.4.17/tests/smoke.tst survex-1.4.22/tests/smoke.tst
--- survex-1.4.17/tests/smoke.tst 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/smoke.tst 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Survex test suite - smoke tests
-# Copyright (C) 1999-2024 Olly Betts
+# Copyright (C) 1999-2025 Olly Betts
#
# 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
@@ -14,8 +14,8 @@
# 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with this program; if not, see
+# .
testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
@@ -32,7 +32,10 @@
DISPLAY=
export DISPLAY
-PROGS="cavern diffpos extend sorterr survexport aven"
+PROGS="cavern diffpos extend sorterr"
+
+# FIXME aven and survexport are failing to run in CI on msys+mingw.
+[ "$OSTYPE" = "cygwin" ] || PROGS="$PROGS survexport aven"
# Suppress checking for leaks on exit if we're build with lsan - we don't
# generally waste effort to free all allocations as the OS will reclaim
@@ -51,7 +54,12 @@
for p in ${PROGS}; do
echo $p
for o in version help ; do
- if test -n "$VERBOSE"; then
+ if test "$VERBOSE" = 1; then
+ $vgrun "$testdir/../src/$p" --$o > stdout.log
+ exitcode=$?
+ test $exitcode = 0 || cat stdout.log
+ rm stdout.log
+ elif test -n "$VERBOSE"; then
$vgrun "$testdir/../src/$p" --$o
exitcode=$?
else
diff -Nru survex-1.4.17/tests/stationnotes.out survex-1.4.22/tests/stationnotes.out
--- survex-1.4.17/tests/stationnotes.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/stationnotes.out 2026-06-23 20:53:55.000000000 +0000
@@ -0,0 +1,23 @@
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 11 survey stations, joined by 10 legs.
+There are 0 loops.
+Total length of survey legs = 16.00m ( 16.00m adjusted)
+Total plan length of survey legs = 15.87m
+Total vertical length of survey legs = 0.50m
+Vertical range = 0.50m (from 9 at 0.00m to 11 at -0.50m)
+North-South range = 3.00m (from 8 at 2.00m to 6 at -1.00m)
+East-West range = 4.00m (from 8 at 2.00m to 9 at -2.00m)
diff -Nru survex-1.4.17/tests/stationnotes.pos survex-1.4.22/tests/stationnotes.pos
--- survex-1.4.17/tests/stationnotes.pos 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/stationnotes.pos 2026-06-23 20:53:55.000000000 +0000
@@ -0,0 +1,12 @@
+( Easting, Northing, Altitude )
+( 0.00, 0.00, 0.00 ) 1
+( 0.00, 1.00, -0.00 ) 2
+( 1.00, 1.00, -0.00 ) 3
+( 1.00, 0.00, 0.00 ) 4
+( 0.00, 0.00, 0.00 ) 5
+( 0.00, -1.00, 0.00 ) 6
+( 2.00, -1.00, 0.00 ) 7
+( 2.00, 2.00, -0.00 ) 8
+( -2.00, 2.00, -0.00 ) 9
+( -1.13, 2.00, -0.50 ) 10
+( -1.13, 1.00, -0.50 ) 11
diff -Nru survex-1.4.17/tests/stationnotes.svx survex-1.4.22/tests/stationnotes.svx
--- survex-1.4.17/tests/stationnotes.svx 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/stationnotes.svx 2026-06-23 20:53:55.000000000 +0000
@@ -0,0 +1,57 @@
+; pos=yes warn=0
+*fix 1 0 0 0
+*data normal station noteall newline tape compass clino
+1 blah blah wobble
+ 1.00 000 0
+2 ; test
+ 1.00 090 0 ; test
+3
+
+*data normal station noteall newline tape compass clino ignoreall
+3
+ 1.00 180 0 _-=-_
+ ; testing
+4 ickity ick
+ ; testing
+ 1.00 270 0 and the rest
+5 6 7 8 9 10
+
+*data normal note station newline tape compass clino
+"Tag bolt" 5
+ 1.00 180 0
+LHW 6
+ 2.00 090 0
+"" 7
+ 3.00 000 0
+- 8
+ 4.00 270 0
+"-" 9
+
+*data diving station depth noteall newline tape compass
+9 0.0 sump pool
+ 1.00 090
+10 -0.5
+
+*data diving station note depth newline tape compass
+10 "" -1.0
+ 1.00 180
+11 "limit of exploration" -1.0
+
+*data nosurvey station noteall
+8 note 8
+4 note 4
+
+*data nosurvey station note
+1 "note 1"
+3 -
+6 "note 6"
+8 ""
+
+*data passage station left right noteall
+1 0.5 0.5 Passage note
+2 0.4 0.6 Note #2
+
+*data passage station left right note
+3 0.3 0.4 "A note"
+4 0.4 0.3 -
+5 0.2 0.6 ""
diff -Nru survex-1.4.17/tests/surveytypo.out survex-1.4.22/tests/surveytypo.out
--- survex-1.4.17/tests/surveytypo.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/surveytypo.out 2026-03-21 21:06:18.000000000 +0000
@@ -4,8 +4,6 @@
Concatenating traverses...
Simplifying network...
-./surveytypo.svx:15: error: Reference to station "gos.1" from non-existent survey "gos"
-./surveytypo.svx:15: warning: Station "gos.1" referred to just once, with an explicit survey name - typo?
cavern: warning: Survey not all connected to fixed stations
The following survey stations are not attached to a fixed point:
./surveytypo.svx:10: info: cave.001
@@ -25,7 +23,7 @@
Total length of survey legs = 0.00m ( 0.00m adjusted)
Total plan length of survey legs = 0.00m
Total vertical length of survey legs = 0.00m
-./surveytypo.svx:15: error: Reference to station "gos.1" from non-existent survey "gos"
+./surveytypo.svx:15:9: error: Reference to station "gos.1" from non-existent survey "gos"
./surveytypo.svx:15: warning: Station "gos.1" referred to just once, with an explicit survey name - typo?
-There were 4 warning(s) and 2 error(s) - no output files produced.
+There were 3 warning(s) and 1 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/surveytypo.svx survex-1.4.22/tests/surveytypo.svx
--- survex-1.4.17/tests/surveytypo.svx 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/surveytypo.svx 2026-03-21 21:06:18.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=fail warn=4 dummycrprotection=
+; pos=fail warn=3 dummycrprotection=
*begin gps
*export 1
*fix 1 66123.45 79123.45 123.45
diff -Nru survex-1.4.17/tests/unknowndirective.out survex-1.4.22/tests/unknowndirective.out
--- survex-1.4.17/tests/unknowndirective.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/unknowndirective.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,113 @@
+./unknowndirective.srv:5:2: warning: Unknown command ""
+ #
+ ^
+./unknowndirective.srv:6:2: warning: Unknown command ""
+ #<1,2,3,hello>
+ ^
+./unknowndirective.srv:7:2: warning: Unknown command ""
+ #*L,R,U,D*
+ ^
+./unknowndirective.srv:8:2: warning: Unknown command ""
+ #<,>
+ ^
+./unknowndirective.srv:9:2: warning: Unknown command ""
+ #*,>
+ ^
+./unknowndirective.srv:10:2: warning: Unknown command ""
+ #<,*
+ ^
+./unknowndirective.srv:11:2: warning: Unknown command ""
+ #*,*
+ ^
+./unknowndirective.srv:12:3: warning: Unknown command ""
+ #
+ ^
+./unknowndirective.srv:13:3: warning: Unknown command ""
+ # <1,2,3,hello>
+ ^
+./unknowndirective.srv:14:3: warning: Unknown command ""
+ # *L,R,U,D*
+ ^
+./unknowndirective.srv:15:3: warning: Unknown command ""
+ # <,>
+ ^
+./unknowndirective.srv:16:3: warning: Unknown command ""
+ # *,>
+ ^
+./unknowndirective.srv:17:3: warning: Unknown command ""
+ # <,*
+ ^
+./unknowndirective.srv:18:3: warning: Unknown command ""
+ # *,*
+ ^
+./unknowndirective.srv:19:2: warning: Unknown command ""
+ #
+ ^
+./unknowndirective.srv:20:2: warning: Unknown command ""
+ #!,!
+ ^
+./unknowndirective.srv:21:2: warning: Unknown command ""
+ #","
+ ^
+./unknowndirective.srv:22:3: warning: Unknown command ""
+ # !,!
+ ^
+./unknowndirective.srv:23:3: warning: Unknown command ""
+ # ","
+ ^
+./unknowndirective.srv:24:3: warning: Unknown command ""
+ # !,"
+ ^
+./unknowndirective.srv:25:3: warning: Unknown command ""
+ # ",!
+ ^
+./unknowndirective.srv:26:3: warning: Unknown command "Q"
+ # Q,Q
+ ^
+./unknowndirective.srv:27:3: warning: Unknown command "W"
+ # W-T, F
+ ^
+./unknowndirective.srv:28:3: warning: Unknown command "THANK"
+ # THANK,YOU
+ ^~~~~
+./unknowndirective.srv:31:2: error: Unknown command "unknown"
+ #unknown directive
+ ^~~~~~~
+./unknowndirective.srv:32:3: error: Unknown command "bad"
+ # bad
+ ^~~
+./unknowndirective.srv:33:2: error: Unknown command ""
+ #<
+ ^
+./unknowndirective.srv:34:2: error: Unknown command ""
+ #<>
+ ^
+./unknowndirective.srv:35:2: error: Unknown command ""
+ #!/bin/sh
+ ^
+./unknowndirective.srv:36:15: error: Expecting "S", "SEG", or "SEGMENT"
+ Q0 U0 0 0 0 #sygment /TYPO
+ ^~~~~~~
+./unknowndirective.srv:36:1: info: Survey has no fixed points. Therefore I've fixed Q0 at (0,0,0)
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 2 survey stations, joined by 1 leg.
+There are 0 loops.
+Total length of survey legs = 0.00m ( 0.00m adjusted)
+Total plan length of survey legs = 0.00m
+Total vertical length of survey legs = 0.00m
+
+There were 24 warning(s) and 6 error(s) - no output files produced.
diff -Nru survex-1.4.17/tests/unknowndirective.srv survex-1.4.22/tests/unknowndirective.srv
--- survex-1.4.17/tests/unknowndirective.srv 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/unknowndirective.srv 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,36 @@
+; pos=fail warn=24 dummycrprotection=
+
+; Walls quietly accepts (and seems to ignore) all of these, so we issue a
+; warning instead of an error:
+#
+#<1,2,3,hello>
+#*L,R,U,D*
+#<,>
+#*,>
+#<,*
+#*,*
+#
+# <1,2,3,hello>
+# *L,R,U,D*
+# <,>
+# *,>
+# <,*
+# *,*
+#
+#!,!
+#","
+# !,!
+# ","
+# !,"
+# ",!
+# Q,Q
+# W-T, F
+# THANK,YOU
+
+; These should actually give an error though:
+#unknown directive
+# bad
+#<
+#<>
+#!/bin/sh
+Q0 U0 0 0 0 #sygment /TYPO
diff -Nru survex-1.4.17/tests/utm.mak survex-1.4.22/tests/utm.mak
--- survex-1.4.17/tests/utm.mak 2025-02-23 23:28:52.000000000 +0000
+++ survex-1.4.22/tests/utm.mak 2026-03-21 21:06:18.000000000 +0000
@@ -1,7 +1,7 @@
-/ pos=dump warn=1 /
+/ pos=dump warn=1
@1314000.0,5428000.0,50.0,-60,0.0;
$-60;
&WGS 1984;
-*fix bh reference 174.7767 -41.2784 30
+/ *fix bh reference 174.7767 -41.2784 30
#backread.dat,
C1 [m,1313799.91,5427953.18,30];
diff -Nru survex-1.4.17/tests/walls.dump survex-1.4.22/tests/walls.dump
--- survex-1.4.17/tests/walls.dump 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/walls.dump 2026-03-21 21:06:18.000000000 +0000
@@ -2,9 +2,19 @@
DATE "?"
DATE_NUMERIC -1
VERSION 8
-SEPARATOR '.'
+SEPARATOR ':'
--
LEG 0.00 0.00 1.00 -1.49 -3.51 4.82 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 -1.49 -3.51 4.82 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 0.00 0.00 2.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 0.00 0.00 0.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 2.16 9.76 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 2.16 9.76 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 1.87 9.82 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 2.08 9.78 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 2.16 9.76 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 2.08 9.78 1.00 [] STYLE=NORMAL 2024.03.09
+LEG 0.00 0.00 1.00 -1.49 -3.51 4.82 [] STYLE=NORMAL 2024.03.09
LEG -1.49 -3.51 4.82 7.42 -1.78 0.39 [] STYLE=NORMAL DUPLICATE 1972.02.29
LEG 7.42 -1.78 0.39 16.33 -0.05 -4.04 [] STYLE=NORMAL DUPLICATE 1973.08.04
LEG 16.33 -0.05 -4.04 7.16 -0.53 -4.36 [] STYLE=NORMAL DUPLICATE 1973.08.04
@@ -39,7 +49,21 @@
LEG 12.70 3.63 -3.40 13.22 7.07 -3.17 [] STYLE=NORMAL 1973.08.04
LEG 12.70 3.63 -3.40 13.74 8.51 -3.09 [] STYLE=NORMAL 1973.08.04
LEG 12.70 3.63 -3.40 12.70 5.62 -3.26 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 14.96 3.73 -1.14 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 14.96 3.73 -1.14 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 13.38 6.76 -3.56 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 13.38 6.76 -3.56 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 13.38 6.76 -3.56 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 13.38 6.76 -3.56 [] STYLE=NORMAL 1973.08.04
+LEG 12.70 3.63 -3.40 13.38 6.76 -3.56 [] STYLE=NORMAL 1973.08.04
LEG 1.00 1.00 1.00 0.00 0.00 1.00 [] STYLE=NOSURVEY 2024.03.09
+NODE 13.38 6.76 -3.56 [suf2e] UNDERGROUND
+NODE 13.38 6.76 -3.56 [suf2d] UNDERGROUND
+NODE 13.38 6.76 -3.56 [suf2c] UNDERGROUND
+NODE 13.38 6.76 -3.56 [suf2b] UNDERGROUND
+NODE 13.38 6.76 -3.56 [suf2a] UNDERGROUND
+NODE 14.96 3.73 -1.14 [suf1b] UNDERGROUND
+NODE 14.96 3.73 -1.14 [suf1a] UNDERGROUND
NODE 12.70 5.62 -3.26 [*1] UNDERGROUND
NODE 13.74 8.51 -3.09 [<8] UNDERGROUND
NODE 13.22 7.07 -3.17 [*8] UNDERGROUND
@@ -58,7 +82,7 @@
NODE 6.83 0.45 -1.37 [U12] UNDERGROUND
NODE 30.00 40.00 51.00 [U12b] UNDERGROUND
NODE 30.00 40.00 51.00 [U12a] UNDERGROUND
-NODE 6.88 -0.55 -0.37 [EMPTY.empty name] UNDERGROUND EXPORTED
+NODE 6.88 -0.55 -0.37 [EMPTY:empty name] UNDERGROUND EXPORTED
NODE 6.88 -0.55 -1.37 [U11] UNDERGROUND
NODE 6.88 -0.55 -2.37 [U10] UNDERGROUND
NODE 6.88 -0.55 -3.37 [U9] UNDERGROUND
@@ -67,7 +91,7 @@
NODE 24.09 -0.83 -4.04 [] UNDERGROUND ANON WALL
NODE 16.33 -0.05 -5.04 [] UNDERGROUND ANON WALL
NODE 16.33 -0.05 -3.04 [] UNDERGROUND ANON WALL
-NODE 27.40 -10.64 7.66 [#.S1] UNDERGROUND EXPORTED
+NODE 27.40 -10.64 7.66 [#:S1] UNDERGROUND EXPORTED
NODE 28.16 -13.08 -4.37 [12#4] UNDERGROUND
NODE 6.86 0.45 -4.31 [U6] UNDERGROUND
NODE 6.88 -0.55 -4.37 [U5] UNDERGROUND
@@ -75,6 +99,16 @@
NODE 16.33 -0.05 -4.04 [U3] UNDERGROUND
NODE 7.42 -1.78 0.39 [U2] UNDERGROUND
NODE -1.49 -3.51 4.82 [U1] UNDERGROUND EXPORTED
-NODE 0.00 0.00 1.00 [U0] UNDERGROUND FIXED
+NODE 2.08 9.78 1.00 [U1DMS6] UNDERGROUND
+NODE 2.16 9.76 1.00 [U1DMS5] UNDERGROUND
+NODE 2.08 9.78 1.00 [U1DMS4] UNDERGROUND
+NODE 1.87 9.82 1.00 [U1DMS3] UNDERGROUND
+NODE 2.16 9.76 1.00 [U1DMS2] UNDERGROUND
+NODE 2.16 9.76 1.00 [U1DMS1] UNDERGROUND
+NODE 0.00 0.00 0.00 [U1VD] UNDERGROUND
+NODE 0.00 0.00 2.00 [U1VU] UNDERGROUND
+NODE -1.49 -3.51 4.82 [U1D] UNDERGROUND
+NODE -1.49 -3.51 4.82 [U1P] UNDERGROUND
NODE 1.00 1.00 1.00 [Q0] UNDERGROUND FIXED
+NODE 0.00 0.00 1.00 [U0] UNDERGROUND FIXED
STOP
diff -Nru survex-1.4.17/tests/walls.out survex-1.4.22/tests/walls.out
--- survex-1.4.17/tests/walls.out 2025-03-14 22:22:16.000000000 +0000
+++ survex-1.4.22/tests/walls.out 2026-03-21 21:06:18.000000000 +0000
@@ -1,79 +1,94 @@
./walls.srv:5:18: warning: End of line not blank
#date 2024-03-09 walls appears to ignore anything here
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-./walls.srv:27:28: warning: CLINO reading and BACKCLINO reading disagree by 4dg
+./walls.srv:18:22: warning: Expecting numeric field, found ""
+ u0 u1dms2 10.0 12:30: 0:0:
+ ^
+./walls.srv:18:27: warning: Expecting numeric field, found ""
+ u0 u1dms2 10.0 12:30: 0:0:
+ ^
+./walls.srv:19:21: warning: Expecting numeric field, found ""
+ u0 u1dms3 10.0 12 0:
+ ^
+./walls.srv:20:19: warning: Expecting numeric field, found ""
+ u0 u1dms4 10.0 12: 0
+ ^
+./walls.srv:22:19: warning: Expecting numeric field, found ""
+ u0 u1dms6 10.0 12: 0d
+ ^
+./walls.srv:38:28: warning: CLINO reading and BACKCLINO reading disagree by 4dg
:U1 U2 10.1m N79E/S79W -28/24 *15 25 4 3*
^~
-./walls.srv:47:14: warning: End of line not blank
+./walls.srv:58:14: warning: End of line not blank
#prefix test walls appears to ignore anything here
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-./walls.srv:55:8: warning: Unknown command "inch"
+./walls.srv:66:8: warning: Unknown command "inch"
#units inch=1 ; regression test
^~~~
-./walls.srv:59:12: warning: Ignoring "gradeb)"
+./walls.srv:70:12: warning: Ignoring "gradeb)"
#units uv=4gradeb) inch=1
^~~~~~~
-./walls.srv:59:20: warning: Unknown command "inch"
+./walls.srv:70:20: warning: Unknown command "inch"
#units uv=4gradeb) inch=1
^~~~
-./walls.srv:60:13: warning: Ignoring "gradeb"
+./walls.srv:71:13: warning: Ignoring "gradeb"
#units uvv=4gradeb inch=1
^~~~~~
-./walls.srv:60:20: warning: Unknown command "inch"
+./walls.srv:71:20: warning: Unknown command "inch"
#units uvv=4gradeb inch=1
^~~~
-./walls.srv:61:13: warning: Ignoring "gradeb"
+./walls.srv:72:13: warning: Ignoring "gradeb"
#units uvh=4gradeb inch=1
^~~~~~
-./walls.srv:61:20: warning: Unknown command "inch"
+./walls.srv:72:20: warning: Unknown command "inch"
#units uvh=4gradeb inch=1
^~~~
-./walls.srv:62:18: warning: Ignoring "Q)"
+./walls.srv:73:18: warning: Ignoring "Q)"
#units typeab=n,4Q),X inch=1
^~
-./walls.srv:62:23: warning: Unknown command "inch"
+./walls.srv:73:23: warning: Unknown command "inch"
#units typeab=n,4Q),X inch=1
^~~~
-./walls.srv:63:20: warning: Ignoring "Q"
+./walls.srv:74:20: warning: Ignoring "Q"
#units typevb=c,1.2Q inch=1
^
-./walls.srv:63:22: warning: Unknown command "inch"
+./walls.srv:74:22: warning: Unknown command "inch"
#units typevb=c,1.2Q inch=1
^~~~
-./walls.srv:74:11: warning: Expecting station name
+./walls.srv:85:11: warning: Expecting station name
U11 EMPTY: 1.00 -- 90
^
-./walls.srv:83:36: warning: Ignoring ">"
+./walls.srv:94:36: warning: Ignoring ">"
U13 U14 1.00 000 00 1 0.5 <0,1,0,1>>
^
-./walls.srv:84:48: warning: Ignoring "."
+./walls.srv:95:48: warning: Ignoring "."
U14 U15 0.5 354.4/174.5 -7.4/+7.4 *0.5 3 2.5 2*.
^
-./walls.srv:85:37: warning: Ignoring "3"
+./walls.srv:96:37: warning: Ignoring "3"
U15 U16 1.5 45/224 +1/0 *15 0 3 1.5*3
^
-./walls.srv:86:43: warning: Ignoring "0.5*"
+./walls.srv:97:43: warning: Ignoring "0.5*"
U16 U17 0.7 87.9/267.9 48.9/-48.9 *2,1,5,*0.5*
^~~~
-./walls.srv:87:15: warning: End of line not blank
+./walls.srv:98:15: warning: End of line not blank
U17 <1,2,3,0> 'random comment here
^~~~~~~~~~~~~~~~~~~~
-./walls.srv:88:38: warning: Ignoring "6*"
+./walls.srv:99:38: warning: Ignoring "6*"
U17 U18 1.4 043/224 +5/-3.5 *0 9 4.5*6*
^~
-./walls.srv:89:40: warning: Ignoring "+"
+./walls.srv:100:40: warning: Ignoring "+"
U18 U19 1.6 200/19 -34/+33 *0 20 100 5*+ #seg /X
^
-./walls.srv:90:38: warning: Ignoring "K1"
+./walls.srv:101:38: warning: Ignoring "K1"
U19 U20 1.2 0/180 -90/90 *20 5 0 3.2*K1
^~
-./walls.srv:91:36: warning: Ignoring "/"
+./walls.srv:102:36: warning: Ignoring "/"
U20 U21 1.10 265/84 -5/5 *2 3 15 4*/
^
-./walls.srv:98:5: warning: Parsing as "to" station but may be isolated LRUD with missing closing delimiter
+./walls.srv:109:5: warning: Parsing as "to" station but may be isolated LRUD with missing closing delimiter
U23 *8 5 15 3.58
^~
-./walls.srv:100:5: warning: Parsing as "to" station but may be isolated LRUD with missing closing delimiter
+./walls.srv:111:5: warning: Parsing as "to" station but may be isolated LRUD with missing closing delimiter
U23 <8 5 15 3.58
^~
@@ -91,15 +106,15 @@
Calculating statistics...
-Survey contains 37 survey stations, joined by 35 legs.
+Survey contains 54 survey stations, joined by 52 legs.
There are 0 loops.
Survey has 2 connected components.
-Total length of survey legs = 105.38m ( 105.38m adjusted)
-Total plan length of survey legs = 77.59m
-Total vertical length of survey legs = 60.94m
+Total length of survey legs = 200.64m ( 200.64m adjusted)
+Total plan length of survey legs = 165.80m
+Total vertical length of survey legs = 75.90m
Vertical range = 56.04m (from U12b at 51.00m to anonymous station at -5.04m)
Vertical range = 55.37m (from U12b at 51.00m to 12#4 at -4.37m)
North-South range = 53.08m (from U12b at 40.00m to 12#4 at -13.08m)
East-West range = 31.49m (from U12a at 30.00m to U1 at -1.49m)
-There were 26 warning(s).
+There were 31 warning(s).
diff -Nru survex-1.4.17/tests/walls.srv survex-1.4.22/tests/walls.srv
--- survex-1.4.17/tests/walls.srv 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/walls.srv 2026-03-21 22:50:20.000000000 +0000
@@ -1,4 +1,4 @@
-; pos=dump warn=26 dummycrprotection=
+; pos=dump warn=31 dummycrprotection=
#u o=EUN v=g
#Fix U0 0 1 0
#seg FOO
@@ -8,8 +8,19 @@
; use INFER_EQUATES.
Q0 U0 0 0 0 (?) #segment /Q ; We treat (?) as a NOSURVEY leg.
#UNITS CASE=U
-u0 u1 5.4 203d +45D
-#units v=d case=none ; undocumented but unknown "case=" values -> "mixed"
+u0 u1 5.4 203d +100P/-100P ; Feature test for "p" override supported since 1.4.20.
+#Units V=Percent VB=P a=g
+u0 u1p 5.4 203d +100/-100 ; Test percent is applied
+u0 u1d 5.4 203d +45D ; Regression test for degrees overriding percent
+u0 u1vu 1.0 -- +90D ; Regression test for degrees overriding percent
+u0 u1vd 1.0 -- -90D ; Regression test for degrees overriding percent
+u0 u1dms1 10.0 12:30 0:0:0
+u0 u1dms2 10.0 12:30: 0:0:
+u0 u1dms3 10.0 12 0:
+u0 u1dms4 10.0 12: 0
+u0 u1dms5 10.0 12.5d 0d
+u0 u1dms6 10.0 12: 0d
+#units v=d vb=d a=d case=none ; undocumented but unknown "case=" values -> "mixed"
#[
U1 X1 3 4 5
#[
@@ -100,3 +111,19 @@
U23 <8 5 15 3.58
#note *1 ; Suppress Survex warning
U23 *1 2 3 4 ; Should not warn because `*1` is a known station.
+; Test examples from Walls_Help_HTML/suffixes.htm
+U23 suf1a 10.5f 100.5g 45d <-.5m,10.5f,10i6.5,i6>
+U23 suf1b 3.2004m 90.45d 45d <-.5m,38.4048m,38.5572m,1.8288m>
+U23 suf2a 10i6.5 15:10:30 -5p
+U23 suf2b 3.2131m 15.175d -2.8624d
+U23 suf2c i126.5 15:10:30 -2:51.744
+U23 suf2d 3.2131m 15.175d -2:51:44.64
+; Test mils (360d=6400m)
+U23 suf2e 3.2131m 269.7778m -50.8871m
+
+; FIXME: These should all work now - make sure they are tested.
+; :50 = 50 minutes (0.8333333333333d)
+; N50.5W = North 50.5 degrees West (=309.5d)
+; S:15.5E = South 15.5 minutes East
+; 320d/N41W = foresight/backsight pair (=319.5d)
+; /-20 = isolated back-inclination (default units)
diff -Nru survex-1.4.17/tests/wallsdecl.dump survex-1.4.22/tests/wallsdecl.dump
--- survex-1.4.17/tests/wallsdecl.dump 2025-02-23 23:50:00.000000000 +0000
+++ survex-1.4.22/tests/wallsdecl.dump 2026-03-21 21:06:18.000000000 +0000
@@ -3,7 +3,7 @@
DATE_NUMERIC -1
CS EPSG:26916
VERSION 8
-SEPARATOR '.'
+SEPARATOR ':'
--
LEG 410000.00 580000.00 1000.00 409995.90 580099.92 1000.00 [] STYLE=NORMAL 1990.09.09
NODE 409995.90 580099.92 1000.00 [1] UNDERGROUND
diff -Nru survex-1.4.17/tests/wallsdiving.dump survex-1.4.22/tests/wallsdiving.dump
--- survex-1.4.17/tests/wallsdiving.dump 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/wallsdiving.dump 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,20 @@
+TITLE "wallsdiving"
+DATE "?"
+DATE_NUMERIC -1
+VERSION 8
+SEPARATOR ':'
+--
+LEG 0.00 0.00 0.00 0.00 0.00 -1.83 [] STYLE=DIVING
+LEG 0.00 0.00 -1.83 1.67 1.99 -3.33 [] STYLE=DIVING
+LEG 1.67 1.99 -3.33 1.67 1.99 -4.33 [] STYLE=NORMAL
+LEG 0.00 0.00 0.00 0.00 0.00 -1.83 [] STYLE=DIVING
+LEG 0.00 0.00 -1.83 1.67 1.99 -3.33 [] STYLE=DIVING
+NODE 1.67 1.99 -3.33 [1.1] UNDERGROUND
+NODE 0.00 0.00 -1.83 [2.1] UNDERGROUND
+NODE 1.67 1.99 -4.33 [4] UNDERGROUND
+NODE 1.67 1.99 -3.33 [1.0] UNDERGROUND
+NODE 0.00 0.00 -1.83 [2.0] UNDERGROUND
+NODE 0.00 0.00 0.00 [3.1] UNDERGROUND
+NODE 0.00 0.00 0.00 [X:1] EXPORTED
+NODE 0.00 0.00 0.00 [3.0] UNDERGROUND
+STOP
diff -Nru survex-1.4.17/tests/wallsdiving.out survex-1.4.22/tests/wallsdiving.out
--- survex-1.4.17/tests/wallsdiving.out 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/wallsdiving.out 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,32 @@
+./wallsdiving.srv:8:9: warning: Tape reading is less than change in depth
+ 2.0 3.0 1.5 135 11 8.5 ; a comment
+ ^~~
+./wallsdiving.srv:15:9: warning: Tape reading is less than change in depth
+ 2.1 3.1 1.5 135 11 8.5 ; a comment
+ ^~~
+./wallsdiving.srv:6:1: info: Survey has no fixed points. Therefore I've fixed 3.0 at (0,0,0)
+
+Removing trailing traverses...
+
+Concatenating traverses...
+
+Simplifying network...
+
+Calculating network...
+
+Calculating traverses...
+
+Calculating trailing traverses...
+
+Calculating statistics...
+
+Survey contains 8 survey stations, joined by 7 legs.
+There are 0 loops.
+Total length of survey legs = 10.67m ( 10.67m adjusted)
+Total plan length of survey legs = 5.20m
+Total vertical length of survey legs = 7.67m
+Vertical range = 4.33m (from 3.1 at 0.00m to 4 at -4.33m)
+North-South range = 1.99m (from 1.1 at 1.99m to 2.1 at 0.00m)
+East-West range = 1.67m (from 1.1 at 1.67m to 2.1 at 0.00m)
+
+There were 2 warning(s).
diff -Nru survex-1.4.17/tests/wallsdiving.srv survex-1.4.22/tests/wallsdiving.srv
--- survex-1.4.17/tests/wallsdiving.srv 1970-01-01 00:00:00.000000000 +0000
+++ survex-1.4.22/tests/wallsdiving.srv 2026-03-21 21:06:18.000000000 +0000
@@ -0,0 +1,15 @@
+; pos=dump warn=2 dummycrprotection=
+#units m
+#units save
+#UNITS ORDER=DA Tape=SS
+;From To Dist Az From-Depth To-Depth
+3.0 X:1 0 0 0 ;?
+1.0 2.0 3 220 10.5 9
+2.0 3.0 1.5 135 11 8.5 ; a comment
+#units restore
+1.0 4 1.0 - -90
+#units tape=ss order=da
+;From To Dist Az From-Depth To-Depth
+3.1 X:1 0 0 0 ;?
+1.1 2.1 3 220 10.5 9
+2.1 3.1 1.5 135 11 8.5 ; a comment
diff -Nru survex-1.4.17/vim/Makefile.in survex-1.4.22/vim/Makefile.in
--- survex-1.4.17/vim/Makefile.in 2025-03-20 00:15:18.000000000 +0000
+++ survex-1.4.22/vim/Makefile.in 2026-06-23 21:22:46.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -358,6 +358,7 @@
cscope cscopelist:
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
diff -Nru survex-1.4.17/vim/compiler/survex.vim survex-1.4.22/vim/compiler/survex.vim
--- survex-1.4.17/vim/compiler/survex.vim 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/vim/compiler/survex.vim 2026-03-21 21:06:18.000000000 +0000
@@ -11,8 +11,8 @@
" 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+" along with this program; if not, see
+" .
if exists("current_compiler")
finish
diff -Nru survex-1.4.17/vim/ftplugin/survex.vim survex-1.4.22/vim/ftplugin/survex.vim
--- survex-1.4.17/vim/ftplugin/survex.vim 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/vim/ftplugin/survex.vim 2026-03-21 21:06:18.000000000 +0000
@@ -11,8 +11,8 @@
" 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+" along with this program; if not, see
+" .
if exists("b:did_ftplugin")
finish
diff -Nru survex-1.4.17/vim/syntax/survex-err.vim survex-1.4.22/vim/syntax/survex-err.vim
--- survex-1.4.17/vim/syntax/survex-err.vim 2024-02-15 22:33:03.000000000 +0000
+++ survex-1.4.22/vim/syntax/survex-err.vim 2026-03-21 21:06:18.000000000 +0000
@@ -14,8 +14,8 @@
" 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+" along with this program; if not, see
+" .
syn match svxPErrSmall /Error\s\+\d\.\d\{2\}%/
syn match svxPErrBig /Error\s\+\d\{2,\}\.\d\{2\}%/
diff -Nru survex-1.4.17/vim/syntax/survex.vim survex-1.4.22/vim/syntax/survex.vim
--- survex-1.4.17/vim/syntax/survex.vim 2025-03-14 22:17:38.000000000 +0000
+++ survex-1.4.22/vim/syntax/survex.vim 2026-06-23 20:53:55.000000000 +0000
@@ -1,13 +1,13 @@
" Vim syntax file
" Language: Survex
" Maintainer: David Loeffler
-" Last Change: 2024-08-09
+" Last Change: 2026-06-23
" Filenames: *.svx
" URL: [NONE]
-" Note: This should be up to date for Survex 1.4.11
+" Note: This should be up to date for Survex 1.4.12
"
" Copyright (C) 2005 David Loeffler
-" Copyright (C) 2006,2016,2017,2024 Olly Betts
+" Copyright (C) 2006,2016,2017,2024,2026 Olly Betts
"
" 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
@@ -20,8 +20,8 @@
" 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+" along with this program; if not, see
+" .
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -77,6 +77,7 @@
syn keyword svxField contained nextgroup=svxField skipwhite ignoreall length newline northing
syn keyword svxField contained nextgroup=svxField skipwhite station tape to tocount todepth
syn keyword svxField contained nextgroup=svxField skipwhite left right up down ceiling floor
+syn keyword svxField contained nextgroup=svxField skipwhite note noteall
syn keyword svxCmd contained nextgroup=svxFlag,svxNot skipwhite flags
syn keyword svxFlag contained nextgroup=svxFlag,svxNot skipwhite duplicate surface splay