diff --git a/ChangeLog b/ChangeLog index e8d40a1..6847a07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5 @@ This is a dummy file. If you want to see the change log, use subversion: - svn log -v svn://orgis.org/mpg123 + svn log -v svn://scm.orgis.org/mpg123 + +The tool svn2cl provides nice formatting in traditional ChangeLog style. diff --git a/Makefile.am b/Makefile.am index 044611a..a543f2e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,13 +10,21 @@ ACLOCAL_AMFLAGS = -I m4 bin_PROGRAMS = EXTRA_PROGRAMS = EXTRA_DIST = +if NEED_LIB pkglib_LTLIBRARIES = lib_LTLIBRARIES = +endif noinst_LIBRARIES = noinst_LTLIBRARIES = nodist_include_HEADERS = +if NEED_MAINLIB +if NEED_LIB include_HEADERS = +endif +endif +if NEED_MAN dist_man_MANS = +endif CLEANFILES = TESTS = XFAIL_TESTS = @@ -31,22 +39,37 @@ AM_CPPFLAGS += \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/compat \ -I$(top_srcdir)/src/libmpg123 \ + -I$(top_srcdir)/src/libsyn123 \ -I$(top_srcdir)/src/libout123 \ -I$(top_builddir)/src/libmpg123 \ -I$(top_builddir)/src/libsyn123 \ -I$(top_builddir)/src/libout123 -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = - # Include Make modules from subdirectories. include src/Makemodule.am include doc/Makemodule.am -# Stuff from this directory. -pkgconfig_DATA += libmpg123.pc libout123.pc libsyn123.pc +if NEED_MAINLIB +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = +# Stuff from this directory. +if BUILD_LIBMPG123 +pkgconfig_DATA += libmpg123.pc +endif +if BUILD_LIBOUT123 +pkgconfig_DATA += libout123.pc +endif +if BUILD_LIBSYN123 +pkgconfig_DATA += libsyn123.pc +endif +endif + +if BUILD_PROGRAMS +if NEED_MAN dist_man_MANS += man1/mpg123.1 man1/out123.1 +endif +endif # mpg123.spec is autogenerated but needs to be present in tarball! EXTRA_DIST += \ @@ -73,10 +96,6 @@ EXTRA_DIST += \ ports/cmake/src/tests/CMakeLists.txt \ ports/cmake/src/compat/CMakeLists.txt \ ports/README \ - ports/Sony_PSP/config.h \ - ports/Sony_PSP/README \ - ports/Sony_PSP/Makefile.psp \ - ports/Sony_PSP/readers.c.patch \ scripts/benchmark-cpu.pl \ scripts/tag_lyrics.py \ scripts/conplay \ diff --git a/Makefile.in b/Makefile.in index 1ea1286..9ad8742 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,10 @@ # Module for non-recursive mpg123 build system. -# Module for non-recursive mpg123 build system. +# Component selection: +# If HAVE_MODULES, the library can be built fully independently. +# If not, the library depends on the one builtin module from +# the subdirectory. # Module for non-recursive mpg123 build system. # Gah! Not even re-defining that variable is allowed in automake! @@ -32,6 +35,18 @@ # Perhaps the next build system rewrite ... #makenam=src_libout123_modules +# Module for non-recursive mpg123 build system. +# Gah! Not even re-defining that variable is allowed in automake! +# I WANT TO USE PROPER MAKE! +# makedir := src/libout123/modules +# Experiment: Does automake pick that up in a Make variable? +# Damn, no! It complains wildly. +# I just want to use GNU Make and be done with it! +# Perhaps the next build system rewrite ... +#makenam=src_libout123_modules + +# Module for non-recursive mpg123 build system. + # Module for non-recursive mpg123 build system. # This bulds libsyn123, a basic library for some sound synthesis @@ -117,23 +132,141 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -bin_PROGRAMS = src/mpg123$(EXEEXT) src/out123$(EXEEXT) \ - src/mpg123-id3dump$(EXEEXT) src/mpg123-strip$(EXEEXT) -EXTRA_PROGRAMS = src/tests/volume$(EXEEXT) \ - src/tests/decode_fixed$(EXEEXT) src/tests/seek_whence$(EXEEXT) \ - src/tests/seek_accuracy$(EXEEXT) src/tests/noise$(EXEEXT) \ - src/tests/sweeper$(EXEEXT) src/libmpg123/testcpu$(EXEEXT) \ - src/libmpg123/calctables$(EXEEXT) -TESTS = src/tests/decode_fixed.sh src/tests/seek_whence.sh \ - src/tests/seek_accuracy.sh src/tests/resample_total$(EXEEXT) \ - src/tests/text$(EXEEXT) src/tests/textprint$(EXEEXT) \ - src/tests/plain_id3.sh -check_PROGRAMS = src/tests/decode_fixed$(EXEEXT) \ - src/tests/seek_whence$(EXEEXT) \ - src/tests/seek_accuracy$(EXEEXT) \ - src/tests/resample_total$(EXEEXT) src/tests/text$(EXEEXT) \ - src/tests/textprint$(EXEEXT) src/tests/plain_id3$(EXEEXT) -@HAVE_SYNTH16_FALSE@am__append_1 = src/tests/decode_fixed.sh +bin_PROGRAMS = $(am__EXEEXT_3) $(am__EXEEXT_4) +EXTRA_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) +TESTS = $(am__append_1) $(am__EXEEXT_6) +check_PROGRAMS = $(am__EXEEXT_5) +@BUILD_LIBMPG123_TRUE@@BUILD_PROGRAMS_TRUE@@HAVE_LFS_WRAP_TRUE@am__append_1 = \ +@BUILD_LIBMPG123_TRUE@@BUILD_PROGRAMS_TRUE@@HAVE_LFS_WRAP_TRUE@ src/tests/decode_fixed.sh + +@BUILD_LIBMPG123_TRUE@am__append_2 = \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_whence.sh \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_accuracy.sh \ +@BUILD_LIBMPG123_TRUE@ src/tests/resample_total \ +@BUILD_LIBMPG123_TRUE@ src/tests/text \ +@BUILD_LIBMPG123_TRUE@ src/tests/textprint \ +@BUILD_LIBMPG123_TRUE@ src/tests/plain_id3.sh + +@HAVE_SYNTH16_FALSE@am__append_3 = src/tests/decode_fixed.sh +@BUILD_LIBMPG123_TRUE@am__append_4 = \ +@BUILD_LIBMPG123_TRUE@ src/tests/decode_fixed \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_whence \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_accuracy \ +@BUILD_LIBMPG123_TRUE@ src/tests/resample_total \ +@BUILD_LIBMPG123_TRUE@ src/tests/text \ +@BUILD_LIBMPG123_TRUE@ src/tests/textprint \ +@BUILD_LIBMPG123_TRUE@ src/tests/plain_id3 + +@BUILD_LIBMPG123_TRUE@am__append_5 = \ +@BUILD_LIBMPG123_TRUE@ src/tests/volume \ +@BUILD_LIBMPG123_TRUE@ src/tests/decode_fixed \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_whence \ +@BUILD_LIBMPG123_TRUE@ src/tests/seek_accuracy \ +@BUILD_LIBMPG123_TRUE@ src/tests/noise \ +@BUILD_LIBMPG123_TRUE@ src/tests/sweeper + + +# Use that sh/perl script to generate the module entries: +# Confused as to when to use _LIBADD and when _LDADD. +# _LDADD gives errors from autotools. +#echo \ +#dummy tinyalsa alsa qsa coreaudio esd jack nas oss portaudio \ +#pulse sdl sndio sun win32 win32_wasapi aix alib arts hp os2 \ +#sgi mint openal \ +#| tr ' ' '\n' | +#perl -ne 'chomp; $big = uc($_); print < src/libout123/$(am__dirstamp) @@ -3405,7 +3594,7 @@ src/libout123/legacy_module.lo: src/libout123/$(am__dirstamp) \ src/libout123/$(DEPDIR)/$(am__dirstamp) src/libout123/libmodule.la: $(src_libout123_libmodule_la_OBJECTS) $(src_libout123_libmodule_la_DEPENDENCIES) $(EXTRA_src_libout123_libmodule_la_DEPENDENCIES) src/libout123/$(am__dirstamp) - $(AM_V_CCLD)$(LINK) $(src_libout123_libmodule_la_OBJECTS) $(src_libout123_libmodule_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(am_src_libout123_libmodule_la_rpath) $(src_libout123_libmodule_la_OBJECTS) $(src_libout123_libmodule_la_LIBADD) $(LIBS) src/libout123/libout123_la-libout123.lo: \ src/libout123/$(am__dirstamp) \ src/libout123/$(DEPDIR)/$(am__dirstamp) @@ -3422,7 +3611,7 @@ src/libout123/libout123_la-xfermem.lo: src/libout123/$(am__dirstamp) \ src/libout123/$(DEPDIR)/$(am__dirstamp) src/libout123/libout123.la: $(src_libout123_libout123_la_OBJECTS) $(src_libout123_libout123_la_DEPENDENCIES) $(EXTRA_src_libout123_libout123_la_DEPENDENCIES) src/libout123/$(am__dirstamp) - $(AM_V_CCLD)$(src_libout123_libout123_la_LINK) -rpath $(libdir) $(src_libout123_libout123_la_OBJECTS) $(src_libout123_libout123_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(src_libout123_libout123_la_LINK) $(am_src_libout123_libout123_la_rpath) $(src_libout123_libout123_la_OBJECTS) $(src_libout123_libout123_la_LIBADD) $(LIBS) src/libout123/modules/$(am__dirstamp): @$(MKDIR_P) src/libout123/modules @: > src/libout123/modules/$(am__dirstamp) @@ -3673,7 +3862,7 @@ src/libsyn123/libsyn123_la-sampleconv.lo: \ src/libsyn123/$(DEPDIR)/$(am__dirstamp) src/libsyn123/libsyn123.la: $(src_libsyn123_libsyn123_la_OBJECTS) $(src_libsyn123_libsyn123_la_DEPENDENCIES) $(EXTRA_src_libsyn123_libsyn123_la_DEPENDENCIES) src/libsyn123/$(am__dirstamp) - $(AM_V_CCLD)$(src_libsyn123_libsyn123_la_LINK) -rpath $(libdir) $(src_libsyn123_libsyn123_la_OBJECTS) $(src_libsyn123_libsyn123_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(src_libsyn123_libsyn123_la_LINK) $(am_src_libsyn123_libsyn123_la_rpath) $(src_libsyn123_libsyn123_la_OBJECTS) $(src_libsyn123_libsyn123_la_LIBADD) $(LIBS) src/libmpg123/calctables.$(OBJEXT): src/libmpg123/$(am__dirstamp) \ src/libmpg123/$(DEPDIR)/$(am__dirstamp) @@ -3915,7 +4104,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-layer1.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-layer2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-layer3.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-libmpg123.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libmpg123/$(DEPDIR)/libmpg123_la-ntom.Plo@am__quote@ # am--include-marker @@ -4235,13 +4423,6 @@ src/libmpg123/libmpg123_la-synth_real.lo: src/libmpg123/synth_real.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_libmpg123_libmpg123_la_CFLAGS) $(CFLAGS) -c -o src/libmpg123/libmpg123_la-synth_real.lo `test -f 'src/libmpg123/synth_real.c' || echo '$(srcdir)/'`src/libmpg123/synth_real.c -src/libmpg123/libmpg123_la-lfs_alias.lo: src/libmpg123/lfs_alias.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_libmpg123_libmpg123_la_CFLAGS) $(CFLAGS) -MT src/libmpg123/libmpg123_la-lfs_alias.lo -MD -MP -MF src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Tpo -c -o src/libmpg123/libmpg123_la-lfs_alias.lo `test -f 'src/libmpg123/lfs_alias.c' || echo '$(srcdir)/'`src/libmpg123/lfs_alias.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Tpo src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libmpg123/lfs_alias.c' object='src/libmpg123/libmpg123_la-lfs_alias.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_libmpg123_libmpg123_la_CFLAGS) $(CFLAGS) -c -o src/libmpg123/libmpg123_la-lfs_alias.lo `test -f 'src/libmpg123/lfs_alias.c' || echo '$(srcdir)/'`src/libmpg123/lfs_alias.c - src/libmpg123/libmpg123_la-lfs_wrap.lo: src/libmpg123/lfs_wrap.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_libmpg123_libmpg123_la_CFLAGS) $(CFLAGS) -MT src/libmpg123/libmpg123_la-lfs_wrap.lo -MD -MP -MF src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Tpo -c -o src/libmpg123/libmpg123_la-lfs_wrap.lo `test -f 'src/libmpg123/lfs_wrap.c' || echo '$(srcdir)/'`src/libmpg123/lfs_wrap.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Tpo src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Plo @@ -5041,7 +5222,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ - echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ @@ -5138,7 +5319,6 @@ src/tests/plain_id3.sh.log: src/tests/plain_id3.sh @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 @@ -5197,6 +5377,10 @@ dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @@ -5239,6 +5423,8 @@ distcheck: dist eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) @@ -5254,7 +5440,7 @@ distcheck: dist $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ @@ -5311,8 +5497,14 @@ check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(LIBRARIES) $(LTLIBRARIES) $(MANS) \ $(DATA) $(HEADERS) +install-EXTRAPROGRAMS: install-libLTLIBRARIES + install-binPROGRAMS: install-libLTLIBRARIES +install-checkPROGRAMS: install-libLTLIBRARIES + +install-pkglibLTLIBRARIES: install-libLTLIBRARIES + installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ @@ -5365,8 +5557,12 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." +@BUILD_LIBOUT123_MODULES_FALSE@install-exec-hook: @HAVE_MODULES_FALSE@install-exec-hook: +@NEED_LIB_FALSE@install-exec-hook: +@BUILD_LIBOUT123_MODULES_FALSE@uninstall-hook: @HAVE_MODULES_FALSE@uninstall-hook: +@NEED_LIB_FALSE@uninstall-hook: clean: clean-am clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ @@ -5448,7 +5644,6 @@ distclean: distclean-am -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer1.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer2.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer3.Plo - -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-libmpg123.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-ntom.Plo @@ -5702,7 +5897,6 @@ maintainer-clean: maintainer-clean-am -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer1.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer2.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-layer3.Plo - -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_alias.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-lfs_wrap.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-libmpg123.Plo -rm -f src/libmpg123/$(DEPDIR)/libmpg123_la-ntom.Plo @@ -5867,7 +6061,7 @@ uninstall-man: uninstall-man1 clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES cscope cscopelist-am ctags ctags-am \ dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ + dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ @@ -5896,20 +6090,27 @@ clean-local: clean-local-check clean-local-check: rm -f src/tests/sweepsweep.mp3 src/tests/stripsweep.mp3 src/tests/plain_id3.out.txt -@USE_YASM_FOR_AVX_TRUE@$(AVX_OBJS): %.@OBJEXT@: %.S $(ASM_DEPS) -@USE_YASM_FOR_AVX_TRUE@ $(CPP) $(DEFAULT_INCLUDES) $(INCLUDES) -DASMALIGN_BALIGN $< | @YASM@ - @YASMFLAGS@ @YASM_FORMAT@ -o $@ - -@USE_YASM_FOR_AVX_TRUE@$(AVX_OBJS:.@OBJEXT@=.lo): %.lo: %.@OBJEXT@ -@USE_YASM_FOR_AVX_TRUE@ @echo "# Generated by ltmain.sh (GNU libtool)" >$@ -@USE_YASM_FOR_AVX_TRUE@ @echo "pic_object='`basename $<`'" >>$@ -@USE_YASM_FOR_AVX_TRUE@ @echo "non_pic_object='`basename $<`'" >>$@ +# Get rid of .la files, at least _after_ install. +@BUILD_LIBOUT123_MODULES_TRUE@@HAVE_MODULES_TRUE@@NEED_LIB_TRUE@install-exec-hook: +@BUILD_LIBOUT123_MODULES_TRUE@@HAVE_MODULES_TRUE@@NEED_LIB_TRUE@ cd $(DESTDIR)$(pkglibdir) && rm -f @output_modules_la@ +# The above breaks uninstall of module .so files? +@BUILD_LIBOUT123_MODULES_TRUE@@HAVE_MODULES_TRUE@@NEED_LIB_TRUE@uninstall-hook: +@BUILD_LIBOUT123_MODULES_TRUE@@HAVE_MODULES_TRUE@@NEED_LIB_TRUE@ for m in @output_modules_la@; do eval $$(grep dlname= src/libout123/modules/$$m) && rm -f $(DESTDIR)$(pkglibdir)/$$dlname; done # Get rid of .la files, at least _after_ install. -@HAVE_MODULES_TRUE@install-exec-hook: -@HAVE_MODULES_TRUE@ cd $(DESTDIR)$(pkglibdir) && rm -f @output_modules_la@ +#install-exec-hook: +# cd $(DESTDIR)$(pkglibdir) && rm -f @output_modules_la@ # The above breaks uninstall of module .so files? -@HAVE_MODULES_TRUE@uninstall-hook: -@HAVE_MODULES_TRUE@ for m in @output_modules_la@; do eval $$(grep dlname= src/libout123/modules/$$m) && rm -f $(DESTDIR)$(pkglibdir)/$$dlname; done +#uninstall-hook: +# for m in @output_modules_la@; do eval $$(grep dlname= src/libout123/modules/$$m) && rm -f $(DESTDIR)$(pkglibdir)/$$dlname; done + +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@$(AVX_OBJS): %.@OBJEXT@: %.S $(ASM_DEPS) +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@ $(CPP) $(DEFAULT_INCLUDES) $(INCLUDES) -DASMALIGN_BALIGN $< | @YASM@ - @YASMFLAGS@ @YASM_FORMAT@ -o $@ + +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@$(AVX_OBJS:.@OBJEXT@=.lo): %.lo: %.@OBJEXT@ +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@ @echo "# Generated by ltmain.sh (GNU libtool)" >$@ +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@ @echo "pic_object='`basename $<`'" >>$@ +@NEED_LIB_TRUE@@NEED_MAINLIB_TRUE@@USE_YASM_FOR_AVX_TRUE@ @echo "non_pic_object='`basename $<`'" >>$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/NEWS b/NEWS index c28d7e3..bf501d8 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,59 @@ +1.32.0 +------ +- build: +-- Move version handling out of configure.ac to ease other build systems. +-- Include "fmt123.h" instead of in main API headers to make it more likely the + correct one is included (at least gcc picks the one in the same directory as the + including header first). +-- All headers are build-independent now. +-- Fix build for picky linkers by avoiding definition of wrap_getcpuflags() where it is not + used (spurious linker error to non-exitent getcpuflags(), bug 353). +-- Handle deprecation of C99 detection macro in autoconf 2.70. +-- No use of AC_SYS_LARGEFILE anymore for explicit handling and differing choice for + the libraries and frontend programs. +-- Added --enable-portable and --disable-largefile to configure, removing the other + largefile-related options. +-- Added --disable-components --enable-libmpg123 to only build libmpg123 (and likewise + --enable-libout123, --enable-libout123-modules, --enable-libsyn123) to autoconf + build. CMake build has something similar with BUILD_PROGRAMS and BUILD_LIBOUT123, + which leave only libmpg123 and libsyn123 if disabled). (bug 351) +-- Consistent formatting of ./configure --help with AS_HELP_STRING(). +- ports/Sony_PSP: removed +- mpg123: +-- Added --libversion. +-- Added proper A-B looping with terminal control key 'o', renamed + --pauseloop to --presetloop. +-- Really get rid of mpg123_position() usage. (It was all lies before!) +-- Fix terminal progress info when seeking in stopped mode (1.31 regression). +-- Patch up interaction of output buffer with generic remote control, adding + non-interruptible drain after P 3, and dropping buffer on QUIT. +-- Uppercase some generic control replies for consinstency: SILENCE, PROGRESS, + MUTE, UNMUTE +- libmpg123, libout123, libsyn123: +-- Bumped API version for version query functions. +-- Replaced nearly all symbol renames with explicit INT123_ prefix declarations + (intsym.h close to empty now). +- libout123: +-- Add sleep builtin output module (silent, but proper timing). +- libsyn123: +-- Introduced SYN123_PORTABLE_API for an API without off_t and ssize_t + (see NEWS.libsyn123). +- libmpg123: +-- Internal I/O using explicit largefile support via off64_t, lseek64, fallback + to plain 32 bit off_t. +-- Added explicit 64 bit API with 64 suffix (mpg123_tell64(), not mpg123_tell_64()). + This allows full avoidance of ambiguus off_t. The API is always using 64 bit + integers, regardless of internal implementation. (bug 344) +-- Introduced MPG123_PORTABLE_API for an API subset without off_t and + ssize_t. +-- Made mpg123_seek() and friends ignore offset sign for SEEK_END (always seeking + towards beginning, assuming negative offset) to make lseek()-conforming usage + possible. Seeking beyond the end never made sense, so no loss of valid functionality. +- Overall use of INT123_strerror(), trying to use thread-safe strerror_l() if possible. + 1.31.3 ------ + - build: -- Fix --disable-8bit. -- Fall back to generic decoder if no yasm for MSVC (bug 346). diff --git a/NEWS.libmpg123 b/NEWS.libmpg123 index 32ddf68..685dba4 100644 --- a/NEWS.libmpg123 +++ b/NEWS.libmpg123 @@ -1,8 +1,24 @@ -Changes in libmpg123 libtool interface versions... +Changes in libmpg123 libtool interface versions. Next to the version +the mpg123 release where its changes first appeared to the public +is given. -47.0.47 - Added mpg123_eq_bands(), mpg123_eq_change() and mpg123_volume_change_db(). +48.0.48 (mpg123 1.32) + - Added mpg123_distversion() and mpg123_libversion(). + - Added mpg123_reader64() and the other int64_t-based functions: + mpg123_framebyframe_decode64(), mpg123_framepos64(), mpg123_tell64(), + mpg123_tellframe64(), mpg123_tell_stream64(), mpg123_seek64(), + mpg123_feedseek64(), mpg123_seek_frame64(), mpg123_timeframe64(), + mpg123_index64(), mpg123_set_index64(), mpg123_framelength64(), + mpg123_length64(), and mpg123_set_filesize64(). + - Added MPG123_PORTABLE_API to hide non-portable API (off_t, ssize_t) + from mpg123.h. + - Made mpg123_seek() family ignore sign with SEEK_END offsets, always + putting a negative one on it to allow usage consistent with lseek(). -46.0.46 +47.0.47 (mpg123 1.30) + - Added mpg123_eq_bands(), mpg123_eq_change() and mpg123_volume_change_db(). + +46.0.46 (mpg123 1.27) - Functions mpg123_init() and mpg123_exit() are really no-ops now. There is no need to call them, and no harm done calling them in parallel. The latter used to be the case before, too, but only in @@ -11,7 +27,7 @@ Changes in libmpg123 libtool interface versions... - There are enum-less variants of all API entry points now, mapped to by default unless MPG123_ENUM_API is defined. -45.0.45 +45.0.45 (mpg123 1.26) - mpg123_read(), mpg123_decode(), and mpg123_replace_buffer() now taking void* for output buffers - value 0 for any rate in mpg123_format()/mpg123_fmt() @@ -37,20 +53,20 @@ Changes in libmpg123 libtool interface versions... MPG123_FEATURE_OUTPUT_FLOAT32 - added mpg123_open_fixed() -44.0.44 +44.0.44 (mpg123 1.25) - added mpg123_getformat2() -43.0.43 +43.0.43 (mpg123 1.24) - added MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE -42.0.42 +42.0.42 (mpg123 1.23) - added mpg123_framelength() Now mpg123_position() is truly obsolete! - hardened string API to not crash if given NULL pointers (except mpg123_init_string()) - equalizer feature optional -41.0.41 +41.0.41 (mpg123 1.22) - Add checks for NULL handles in some API functions that missed that, changed return value in others to MPG123_BAD_HANDLE where appropriate: - mpg123_format_none(NULL) == MPG123_BAD_HANDLE (was: MPG123_ERR) - mpg123_format_all(NULL) == MPG123_BAD_HANDLE (was: MPG123_ERR) @@ -83,153 +99,155 @@ Changes in libmpg123 libtool interface versions... - Changed return value of mpg123_geteq() to 0 for NULL handle to be consistent with itself. -40.0.40 +40.0.40 (mpg123 1.19) - Bump for marking the first actual implementation of A-Law encoding. Not that it matters to anyone, though --- I wonder why not even the Asterisk users wanted this. It's for telephony, dammit! - Added arm_fpu decoder for runtime switch between NEON and generic fpu. -39.2.39 +39.2.39 (mpg123 1.19) - Added more elaborate post-processing to enable 32 and 24 bit output also with low-precision decoder (16 bit, fixed-point). -39.0.39 +39.0.39 (mpg123 1.18) - Added MPG123_FRESH_DECODER. - Also containing several regression fixes. -38.0.38 +38.0.38 (mpg123 1.16) - Added MPG123_PICTURE and associated addition to mpg123_id3v2 struct. -37.0.37 +37.0.37 (mpg123 1.16) - Added mpg123_chomp_string. -36.0.36 +36.0.36 (mpg123 1.14) - Extended MPG123_RESYNC_LIMIT to initial header search. - Not cutting decoder delay unconditionally anymore (only in combination with known encoder delay / padding). -35.0.35 +35.0.35 (mpg123 1.14) - Added mpg123_meta_free(). -34.0.34 +34.0.34 (mpg123 1.14) - Added flag MPG123_AUTO_RESAMPLE. - Changed (improved;-) outbuffer behaviour. -33.0.33 +33.0.33 (mpg123 1.14) - Added MPG123_BUFFERFILL. -32.0.32 +32.0.32 (mpg123 1.14) - Added mpg123_framepos() -31.0.31 +31.0.31 (mpg123 1.14) - Added mpg123_framedata() and MPG123_IGNORE_INFOFRAME. -30.0.30 +30.0.30 (mpg123 1.14) - Added MPG123_FEEDPOOL and MPG123_FEEDBUFFER. -29.0.29 +29.0.29 (mpg123 1.13) - New decoder: ARM neon. - Added support for 24 bit output (dumb byte-chopping of 32 bit output). -28.0.28 +28.0.28 (mpg123 1.13) - Add mpg123_strlen(). -27.0.27 +27.0.27 (mpg123 1.13) - Implictly disable seeking on streams when client enforced ICY parsing. This helps debugging dumps of http streams. -26.0.26 +26.0.26 (mpg123 1.13) - Added mpg123_encsize(). - Added flag MPG123_SKIP_ID3V2. -25.0.25 +25.0.25 (mpg123 1.12) - Version increase to mark the point where the split between normal and large-file-enabled library vanishes again. The world did not like it. Now Thomas lost some days of recreation and sleep to give it a dual-mode libmpg123 on large-file-sensitive systems. -24.0.24 +24.0.24 (mpg123 1.12) - Introduce mpg123_replace_reader_handle() and mpg123_open_handle() ... this is also in preparation for the next version which will drop the separated large-file library again, due to public display of dismay. - Add the experimental mpg123_framebyframe_decode to the off_t-sensitive functions. -23.0.23 +23.0.23 (mpg123 1.11) - Version increase to mark the point where the explicit split between normal and large-file-enabled library has been introduced. -22.0.22 +22.0.22 (mpg123 1.10) - Experimental framebyframe API added. -21.0.21 +21.0.21 (mpg123 1.10) - Added support of unicode file names under windows via UTF-8 argument to mpg123_open. - Added mpg123_feature(), for example to test for the above behaviour. -20.0.20 +20.0.20 (mpg123 1.9) - New flag: MPG123_PLAIN_ID3TEXT - Corresponding text encoding handling API added: mpg123_enc_from_id3, mpg123_store_utf8 -19.0.19 +19.0.19 (mpg123 1.9) - Hm, what was it exactly now... there are candidates: - runtime dithering - free format - ARM optimizations -18.0.18 +18.0.18 (mpg123 1.8) - new parameter: MPG123_PREFRAMES is now tunable (the number of frames to decode and skip before a seek point), also default value increased -17.0.17 +17.0.17 (mpg123 1.8) - introduction optimized stereo synths -16.0.16 +16.0.16 (mpg123 1.8) - introducing floating point x86-64 SSE synth -15.0.15 +15.0.15 (mpg123 1.8) - first addition of x86-64 SSE optimizations -14.0.14 +14.0.14 (mpg123 1.7) - the first libmpg123 with actually working MPG123_UPSPEED - also important regression fix concerning skipping of frames -13.0.13 +13.0.13 (mpg123 1.7) - The whole set of output formats is generally available (8, 16 and 32 bit integer, signed/unsigned, float) - Many features can be absent from libary as build decision (minimize binary size). -12.0.12 +12.0.12 (mpg123 1.7) - added mpg123_current_decoder - fixed value of MPG123_ENC_FLOAT - float output now is a real runtime option -11.0.11 +11.0.11 (mpg123 1.6) - added mpg123_getstate - run-time tunable frame index - officially configured with largefile support where available -10.0.10 +10.0.10 (mpg123 1.6) - new flag MPG123_FUZZY (along with the fuzzy seek functionality) -9.0.9 +9.0.9 (mpg123 1.6) - added mpg123_tell_stream -8.0.8 +8.0.8 (mpg123 1.6) - added mpg123_get_eq -7.0.7 +7.0.7 (mpg123 1.6) - added mpg123_set_filesize -6.0.6 +6.0.6 (mpg123 1.5) - added mpg123_icy2utf8 -5.0.5 +5.0.5 (mpg123 1.5) - added mpg123_feed - input buffers now const -4.0.4 +4.0.4 (mpg123 1.5) - extended mpg123_string api (mpg123_add_substring, mpg123_grow_string) -3.0.3 +3.0.3 (mpg123 1.5) - Initial floating point support as compile-time option. -2.0.2 +2.0.2 (mpg123 1.3) - New flag MPG123_SEEKBUFFER. -1.0.1 +1.0.1 (mpg123 1.2) - Added MPG123_RESYNC_LIMIT parameter. - Added MPG123_OUT_OF_SYNC and MPG123_RESYNC_FAIL error codes. - Fix for uninitialized framesize value in handle. +0.0.0 (mpg123 1.0) + - Initial library design. diff --git a/NEWS.libout123 b/NEWS.libout123 index 2c861ca..84e89f8 100644 --- a/NEWS.libout123 +++ b/NEWS.libout123 @@ -1,15 +1,22 @@ -4.0.4 +Changes in libout123 libtool interface versions. Next to the version +the mpg123 release where its changes first appeared to the public +is given. + +5.0.5 + - Added out123_distversion() and out123_libversion(). + +4.0.4 (mpg123 1.27) - added enum-less variants out123_param2() and out123_getparam2(), replacing the enum variants unless MPG123_ENUM_API is defined - added out123_devices() - added out123_stringlists_free() - module API version 3 with enumeration and void deinit() -3.0.3 +3.0.3 (mpg123 1.26) - added out123_free() -2.0.2 +2.0.2 (mpg123 1.24) - added OUT123_BINDIR -1.0.1 +1.0.1 (mpg123 1.23) - initial version diff --git a/NEWS.libsyn123 b/NEWS.libsyn123 index c6badb0..b39e0bf 100644 --- a/NEWS.libsyn123 +++ b/NEWS.libsyn123 @@ -1,3 +1,17 @@ -1.0.1 - - initial version +Changes in libsyn23 libtool interface versions. Next to the version +the mpg123 release where its changes first appeared to the public +is given. +2.0.2 (mpg123 1.32) + - Added syn123_distversion() and syn123_libversion(). + - Added switch SYN123_PORTABLE_API to hide off_t and ssize_t + (consistent with libmpg123). + - Added direct int64_t prototypes (syn123_resample_total64() and + syn123_resample_inttotal64(). + - Added syn123_resample_in() and syn123_resample_out() as + replacements for syn123_resample_expect() and syn123_resample_inexpect(). + - Deprecated ill-designed syn123_resample_expect() and + syn123_resample_inexpect() in documentation. + +1.0.1 (mpg123 1.26) + - initial version diff --git a/aclocal.m4 b/aclocal.m4 index 8c993eb..e6adcd9 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,8 +14,8 @@ 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.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. 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'.])]) @@ -930,9 +930,9 @@ AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl @@ -973,7 +973,7 @@ dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -1074,7 +1074,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -1084,11 +1084,11 @@ and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -1105,7 +1105,7 @@ installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -1206,7 +1206,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1221,7 +1221,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' 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.16.1], [], +m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -1237,14 +1237,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # 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.16.1])dnl +[AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1264,7 +1264,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1316,7 +1316,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1347,7 +1347,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1538,7 +1538,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1577,7 +1577,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi @@ -1604,7 +1606,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1632,6 +1634,10 @@ m4_defn([AC_PROG_CC]) # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -1668,7 +1674,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl @@ -1720,6 +1726,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This @@ -1801,7 +1821,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1822,7 +1842,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1843,7 +1863,7 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1886,7 +1906,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1907,12 +1927,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -1925,7 +1940,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1954,7 +1969,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2001,7 +2016,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2020,7 +2035,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2101,7 +2116,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2161,7 +2176,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2189,7 +2204,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2208,7 +2223,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/build/compile b/build/compile index 99e5052..df363c8 100755 --- a/build/compile +++ b/build/compile @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff --git a/build/config.guess b/build/config.guess index f50dcdb..7f76b62 100755 --- a/build/config.guess +++ b/build/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2018-02-24' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,11 +29,19 @@ timestamp='2018-02-24' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2022 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." @@ -84,7 +94,8 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 +# Just in case it came from the environment. +GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -96,73 +107,90 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > "$dummy.c" ; - for c in cc gcc c89 c99 ; do - if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown - eval "$set_cc_for_build" + set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -174,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -188,18 +216,18 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval "$set_cc_for_build" + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -215,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -226,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -237,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -289,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -326,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval "$set_cc_for_build" + set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -446,43 +490,43 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ @@ -508,78 +552,79 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include @@ -593,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -610,57 +655,57 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then - eval "$set_cc_for_build" + if test "$HP_ARCH" = ""; then + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE @@ -698,9 +743,9 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then - eval "$set_cc_for_build" + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -719,14 +764,14 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int @@ -754,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -791,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -809,103 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; - i*86:Minix:*:*) - echo "$UNAME_MACHINE"-pc-minix - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -916,187 +988,225 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" - test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - if objdump -f /bin/sh | grep -q elf32-x86-64; then - echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 - else - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + set_cc_for_build + 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 fi - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1104,12 +1214,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1119,11 +1229,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1131,31 +1241,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1180,249 +1290,404 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval "$set_cc_for_build" - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 exit 1 ;; *local*) @@ -110,1223 +119,1186 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo "$1" | sed 's/-[^-]*$//'` - if [ "$basic_machine" != "$1" ] - then os=`echo "$1" | sed 's/.*-/-/'` - else os=; fi - ;; -esac +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 ;; - -bluegene*) - os=-cnk + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # 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*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + 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) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + 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 + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia16 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pru \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | wasm32 \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - c54x) - basic_machine=tic54x-unknown + op50n) + cpu=hppa1.1 + vendor=oki ;; - c55x) - basic_machine=tic55x-unknown + op60c) + cpu=hppa1.1 + vendor=oki ;; - c6x) - basic_machine=tic6x-unknown + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none ;; leon|leon[3-9]) - basic_machine=sparc-$basic_machine + cpu=sparc + vendor=$basic_machine ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) - ;; - ms1) - basic_machine=mt-unknown + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - strongarm | thumb | xscale) - basic_machine=arm-unknown + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pru-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | wasm32-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-pc - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2*) - basic_machine=m68k-bull - os=-sysv3 - ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=$os"spe" - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - nsv-tandem) - basic_machine=nsv-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 + cpu=$basic_machine + vendor=pc ;; + # These rules are duplicated from below for sake of the special case above; + # i.e. things that normalized to x86 arches should also default to "pc" pc98) - basic_machine=i386-pc + cpu=i386 + vendor=pc ;; - pc98-*) - basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + x64 | amd64) + cpu=x86_64 + vendor=pc ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc + # Recognize the basic CPU types without company name. + *) + cpu=$basic_machine + vendor=unknown ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc +esac + +unset -v basic_machine + +# Decode basic machines in the full and proper CPU-Company form. +case $cpu-$vendor in + # Here we handle the default manufacturer of certain CPU types in canonical form. It is in + # some cases the only manufacturer, in others, it is the most popular. + craynv-unknown) + vendor=cray + basic_os=${basic_os:-unicosmp} ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc + c90-unknown | c90-cray) + vendor=cray + basic_os=${Basic_os:-unicos} ;; - pentium4) - basic_machine=i786-pc + fx80-unknown) + vendor=alliant ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + romp-unknown) + vendor=ibm ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + mmix-unknown) + vendor=knuth ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + microblaze-unknown | microblazeel-unknown) + vendor=xilinx ;; - pentium4-*) - basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + rs6000-unknown) + vendor=ibm ;; - pn) - basic_machine=pn-gould + vax-unknown) + vendor=dec ;; - power) basic_machine=power-ibm + pdp11-unknown) + vendor=dec ;; - ppc | ppcbe) basic_machine=powerpc-unknown + we32k-unknown) + vendor=att ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + cydra-unknown) + vendor=cydrome ;; - ppcle | powerpclittle) - basic_machine=powerpcle-unknown + i370-ibm*) + vendor=ibm ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + orion-unknown) + vendor=highlevel ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - x64) - basic_machine=x86_64-pc - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - none) - basic_machine=none-none - os=-none + xps-unknown | xps100-unknown) + cpu=xps100 + vendor=honeywell ;; -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond + # Here we normalize CPU types with a missing or matching vendor + armh-unknown | armh-alt) + cpu=armv7l + vendor=alt + basic_os=${basic_os:-linux-gnueabihf} ;; - op50n) - basic_machine=hppa1.1-oki + dpx20-unknown | dpx20-bull) + cpu=rs6000 + vendor=bull + basic_os=${basic_os:-bosx} ;; - op60c) - basic_machine=hppa1.1-oki + + # Here we normalize CPU types irrespective of the vendor + amd64-*) + cpu=x86_64 ;; - romp) - basic_machine=romp-ibm + blackfin-*) + cpu=bfin + basic_os=linux ;; - mmix) - basic_machine=mmix-knuth + c54x-*) + cpu=tic54x ;; - rs6000) - basic_machine=rs6000-ibm + c55x-*) + cpu=tic55x ;; - vax) - basic_machine=vax-dec + c6x-*) + cpu=tic6x ;; - pdp11) - basic_machine=pdp11-dec + e500v[12]-*) + cpu=powerpc + basic_os=${basic_os}"spe" ;; - we32k) - basic_machine=we32k-att + mips3*-*) + cpu=mips64 ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown + ms1-*) + cpu=mt ;; - cydra) - basic_machine=cydra-cydrome + m68knommu-*) + cpu=m68k + basic_os=linux ;; - orion) - basic_machine=orion-highlevel + m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) + cpu=s12z ;; - orion105) - basic_machine=clipper-highlevel + openrisc-*) + cpu=or32 ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple + parisc-*) + cpu=hppa + basic_os=linux ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + cpu=i586 ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. + pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + cpu=i686 ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + cpu=i686 + ;; + pentium4-*) + cpu=i786 + ;; + pc98-*) + cpu=i386 + ;; + ppc-* | ppcbe-*) + cpu=powerpc + ;; + ppcle-* | powerpclittle-*) + cpu=powerpcle + ;; + ppc64-*) + cpu=powerpc64 + ;; + ppc64le-* | powerpc64little-*) + cpu=powerpc64le + ;; + sb1-*) + cpu=mipsisa64sb1 + ;; + sb1el-*) + cpu=mipsisa64sb1el + ;; + sh5e[lb]-*) + cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` + ;; + spur-*) + cpu=spur + ;; + strongarm-* | thumb-*) + cpu=arm + ;; + tx39-*) + cpu=mipstx39 + ;; + tx39el-*) + cpu=mipstx39el + ;; + x64-*) + cpu=x86_64 + ;; + xscale-* | xscalee[bl]-*) + cpu=`echo "$cpu" | sed 's/^xscale/arm/'` + ;; + arm64-* | aarch64le-*) + cpu=aarch64 + ;; + + # Recognize the canonical CPU Types that limit and/or modify the + # company names they are paired with. + cr16-*) + basic_os=${basic_os:-elf} + ;; + crisv32-* | etraxfs*-*) + cpu=crisv32 + vendor=axis + ;; + cris-* | etrax*-*) + cpu=cris + vendor=axis + ;; + crx-*) + basic_os=${basic_os:-elf} + ;; + neo-tandem) + cpu=neo + vendor=tandem + ;; + nse-tandem) + cpu=nse + vendor=tandem + ;; + nsr-tandem) + cpu=nsr + vendor=tandem + ;; + nsv-tandem) + cpu=nsv + vendor=tandem + ;; + nsx-tandem) + cpu=nsx + vendor=tandem + ;; + mipsallegrexel-sony) + cpu=mipsallegrexel + vendor=sony + ;; + tile*-*) + basic_os=${basic_os:-linux-gnu} + ;; + *) - echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | amdgcn \ + | arc | arceb | arc32 | arc64 \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bpf | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | loongarch32 | loongarch64 | loongarchx32 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64eb | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r3 | mipsisa32r3el \ + | mipsisa32r5 | mipsisa32r5el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r3 | mipsisa64r3el \ + | mipsisa64r5 | mipsisa64r5el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k | nvptx \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | picochip \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ + | rl78 | romp | rs6000 | rx \ + | s390 | s390x \ + | score \ + | sh | shl \ + | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | thumbv7* \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | w65 \ + | wasm32 | wasm64 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1334,203 +1306,215 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$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. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1543,258 +1527,363 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +kernel= +case $cpu-$vendor in score-*) - os=-elf + os=elf ;; spu-*) - os=-elf + os=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + kernel=linux + os=gnu ;; arm*-semi) - os=-aout + os=aout ;; c4x-* | tic4x-*) - os=-coff + os=coff ;; c8051-*) - os=-elf + os=elf + ;; + clipper-intergraph) + os=clix ;; hexagon-*) - os=-elf + os=elf ;; tic54x-*) - os=-coff + os=coff ;; tic55x-*) - os=-coff + os=coff ;; tic6x-*) - os=-coff + os=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 + os=sunos3 ;; m68*-cisco) - os=-aout + os=aout ;; mep-*) - os=-elf + os=elf ;; mips*-cisco) - os=-elf + os=elf ;; mips*-*) - os=-elf + os=elf ;; or32-*) - os=-coff + os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 ;; pru-*) - os=-elf + os=elf ;; *-be) - os=-beos + os=beos ;; *-ibm) - os=-aix + os=aix ;; *-knuth) - os=-mmixware + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna + os=luna ;; *-next) - os=-nextstep + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os=coff ;; *-*bug) - os=-coff + os=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 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* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -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 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - -sunos*) + *-sunos*) vendor=sun ;; - -cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - -beos*) + *-beos*) vendor=be ;; - -hpux*) + *-hpux*) vendor=hp ;; - -mpeix*) + *-mpeix*) vendor=hp ;; - -hiux*) + *-hiux*) vendor=hitachi ;; - -unos*) + *-unos*) vendor=crds ;; - -dgux*) + *-dgux*) vendor=dg ;; - -luna*) + *-luna*) vendor=omron ;; - -genix*) + *-genix*) vendor=ns ;; - -mvs* | -opened*) + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) vendor=ibm ;; - -os400*) + *-os400*) vendor=ibm ;; - -ptx*) + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) vendor=sequent ;; - -tpf*) + *-tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - -aux*) + *-aux*) vendor=apple ;; - -hms*) + *-hms*) vendor=hitachi ;; - -mpw* | -macos*) + *-mpw* | *-macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - -vos*) + *-vos*) vendor=stratus ;; esac - basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo "$basic_machine$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: -# eval: (add-hook 'write-file-functions 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/build/depcomp b/build/depcomp index 65cbf70..715e343 100755 --- a/build/depcomp +++ b/build/depcomp @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 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 diff --git a/build/install-sh b/build/install-sh index 8175c64..ec298b5 100755 --- a/build/install-sh +++ b/build/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -69,6 +69,11 @@ posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -99,18 +104,28 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,8 +152,13 @@ while test $# -ne 0; do -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -255,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -301,22 +325,6 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -326,52 +334,49 @@ do fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -382,7 +387,7 @@ do then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -411,7 +416,7 @@ do prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -451,7 +456,18 @@ do trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -477,6 +493,13 @@ do then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -491,9 +514,9 @@ do # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 diff --git a/build/ltmain.sh b/build/ltmain.sh old mode 100644 new mode 100755 index 0cb7f90..540a92a --- a/build/ltmain.sh +++ b/build/ltmain.sh @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-14" +VERSION="2.4.6 Debian-2.4.6-15build2" package_revision=2.4.6 @@ -2141,7 +2141,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-14 + version: $progname $scriptversion Debian-2.4.6-15build2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` diff --git a/build/missing b/build/missing index 625aeb1..1fe1611 100755 --- a/build/missing +++ b/build/missing @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/build/test-driver b/build/test-driver index b8521a4..be73b80 100755 --- a/build/test-driver +++ b/build/test-driver @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2021 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 @@ -42,11 +42,13 @@ print_usage () { cat <$log_file 2>&1 +# Test script is run here. We create the file first, then append to it, +# to ameliorate tests themselves also writing to the log file. Our tests +# don't, but others can (automake bug#35762). +: >"$log_file" +"$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then @@ -126,7 +131,7 @@ esac # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file +echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" diff --git a/configure b/configure index ba131b5..7b30741 100755 --- a/configure +++ b/configure @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for mpg123 1.31.3. +# Generated by GNU Autoconf 2.71 for mpg123 1.32.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$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 -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +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. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,12 +169,15 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO @@ -207,30 +192,38 @@ test \$(( 1 + 1 )) = 2 || exit 1 PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -238,14 +231,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -263,18 +263,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$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 : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + 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." + 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." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: maintainer@mpg123.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a @@ -302,6 +303,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -319,6 +321,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -333,7 +343,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$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" @@ -342,7 +352,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -381,12 +391,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -398,18 +409,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -421,9 +441,9 @@ as_fn_error () 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 - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -450,7 +470,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -494,7 +514,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$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 @@ -508,6 +528,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits 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*) @@ -521,6 +545,13 @@ case `echo -n x` in #((((( 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 @@ -590,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='mpg123' PACKAGE_TARNAME='mpg123' -PACKAGE_VERSION='1.31.3' -PACKAGE_STRING='mpg123 1.31.3' +PACKAGE_VERSION='1.32.0' +PACKAGE_STRING='mpg123 1.32.0' PACKAGE_BUGREPORT='maintainer@mpg123.org' PACKAGE_URL='' @@ -599,40 +630,36 @@ ac_unique_file="src/mpg123.c" ac_unique_file="doc" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS @@ -641,6 +668,24 @@ LIBOUT123_LIBS LIBSYN123_LIBS LIBMPG123_LIBS PROG_LIBS +NEED_MAN_FALSE +NEED_MAN_TRUE +NEED_MAINLIB_FALSE +NEED_MAINLIB_TRUE +NEED_LIB_FALSE +NEED_LIB_TRUE +NEED_FMT123_FALSE +NEED_FMT123_TRUE +BUILD_LIBSYN123_FALSE +BUILD_LIBSYN123_TRUE +BUILD_LIBOUT123_MODULES_FALSE +BUILD_LIBOUT123_MODULES_TRUE +BUILD_LIBOUT123_FALSE +BUILD_LIBOUT123_TRUE +BUILD_LIBMPG123_FALSE +BUILD_LIBMPG123_TRUE +BUILD_PROGRAMS_FALSE +BUILD_PROGRAMS_TRUE TERM_WIN32_FALSE TERM_WIN32_TRUE TERM_NONE_FALSE @@ -887,13 +932,6 @@ USE_YASM_FOR_AVX_FALSE USE_YASM_FOR_AVX_TRUE HAVE_FLOATDCT_FALSE HAVE_FLOATDCT_TRUE -INCLUDE_SYS_TYPE_H -INCLUDE_STDLIB_H -INCLUDE_STDIO_H -HAVE_LFS_ALIAS_FALSE -HAVE_LFS_ALIAS_TRUE -LFS_ALIAS_BITS -BUILD_NO_LARGENAME HAVE_LFS_WRAP_FALSE HAVE_LFS_WRAP_TRUE YASMFLAGS @@ -980,6 +1018,9 @@ AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -1011,11 +1052,8 @@ build_os build_vendor build_cpu build -SYNAPI_VERSION LIBSYN123_VERSION -OUTAPI_VERSION LIBOUT123_VERSION -API_VERSION LIBMPG123_VERSION target_alias host_alias @@ -1105,12 +1143,17 @@ with_audio with_default_audio with_optimization with_seektable +enable_portable enable_largefile -enable_lfs_alias enable_feature_report enable_ipv6 enable_network with_network +enable_components +enable_libmpg123 +enable_libout123 +enable_libout123_modules +enable_libsyn123 ' ac_precious_vars='build_alias host_alias @@ -1205,8 +1248,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -1247,9 +1288,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1273,9 +1314,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1486,9 +1527,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1502,9 +1543,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1548,9 +1589,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$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 && - $as_echo "$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}" ;; @@ -1566,7 +1607,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1630,7 +1671,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1687,7 +1728,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures mpg123 1.31.3 to adapt to many kinds of systems. +\`configure' configures mpg123 1.32.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1758,7 +1799,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of mpg123 1.31.3:";; + short | recursive ) echo "Configuration of mpg123 1.32.0:";; esac cat <<\_ACEOF @@ -1772,46 +1813,77 @@ Optional Features: do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build - --enable-modules=no/yes dynamically loadable output modules + --disable-modules dynamically loadable output module support (default + enabled in shared library builds) --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) - --enable-debug=no/yes turn on debugging - --enable-xdebug=no/yes turn on extreme debugging - --enable-nagging=no/yes turn on GCC's pedantic nagging with error on warnings, does not include --enable-debug anymore - --enable-gapless=no/yes turn on gapless (enabled per default) - --enable-fifo=no/yes FIFO support for control interface (auto-enabled on linux) - --disable-id3v2=no/yes no ID3v2 parsing - --disable-string=no/yes no string API (this will disable ID3v2; main mpg123 won't build anymore) - --disable-icy=no/yes no ICY metainfo parsing/conversion (main mpg123 won't build!) - --disable-ntom=no/yes no flexible resampling - --disable-downsample=no/yes no downsampled decoding - --disable-feeder=no/yes no feeder decoding, no buffered readers - --disable-moreinfo=no/yes no extra information for frame analyzers - --disable-messages=no/yes no error/warning messages on the console - --enable-runtime-tables=yes/no calculate tables at runtime saving size at the expense of additional computation at load time - --enable-new-huffman=yes/no use new huffman decoding scheme by Taihei (faster on modern CPUs at least, so on by default) - --enable-int-quality=yes/no use rounding instead of fast truncation for integer output, where possible - --disable-16bit=no/yes no 16 bit integer output - --disable-8bit=no/yes no 8 bit integer output - --disable-32bit=no/yes no 32 bit integer output (also 24 bit) - --disable-real=no/yes no real (floating point) output - --disable-equalizer=no/yes no equalizer support - --enable-yasm=no/yes enforce yasm instad of default assembler for some optimizations (AVX, currently) - --enable-ieeefloat=yes/no use special hackery relying on IEEE 754 floating point storage format (to accurately round to 16 bit integer at bit more efficiently in generic decoder, enabled by default, disable in case you have a very special computer) - --enable-cases=yes/no include special cases for likely parameter values (channel count, encoding sizes in libsyn123 routines) in the hope of better optimization at the expense of some code bloat (default enabled) - --enable-buffer=yes/no disable audio buffer code (default uses system whitelist... proper checks later) - --enable-newoldwritesample=no/yes enable new/old WRITE_SAMPLE macro for non-accurate 16 bit output, faster on certain CPUs (default on on x86-32) - --disable-layer1=no/yes no layer I decoding - --disable-layer2=no/yes no layer II decoding - --disable-layer3=no/yes no layer III decoding - --disable-largefile omit support for large files - --disable-lfs-alias disable alias wrappers for largefile bitness (mpg123_seek_32 or mpg123_seek_64 in addition to mpg123_seek, or the other way around; It is a mess, do not play with this!) - --disable-feature_report Disable feature report function - --enable-ipv6=no/yes IPv6 support in internal network stack - --enable-network=no/yes network support (http streams / webradio), if available (overruled by --with-network!) + --enable-debug turn on (lots of) debugging printouts + --enable-xdebug turn on (yet more) extreme debugging printouts + --enable-nagging turn on GCC's pedantic nagging with error on + warnings + --disable-gapless turn off gapless decoding (please don't) + --enable-fifo FIFO support for control interface (auto-enabled on + linux) + --disable-id3v2 no ID3v2 parsing + --disable-string no string API (this will disable ID3v2; main mpg123 + won't build anymore) + --disable-icy no ICY metainfo parsing/conversion (main mpg123 + won't build!) + --disable-ntom no flexible resampling + --disable-downsample no downsampled decoding + --disable-feeder no feeder decoding, no buffered readers + --disable-moreinfo no extra information for frame analyzers + --disable-messages no error/warning messages on the console + --enable-runtime-tables calculate tables at runtime saving size at the + expense of additional computation at load time + --disable-new-huffman new huffman decoding scheme by Taihei (faster on + modern CPUs at least, so on by default) + --disable-int-quality use rounding instead of fast truncation for integer + output, where possible + --disable-16bit no 16 bit integer output + --disable-8bit no 8 bit integer output + --disable-32bit no 32 bit integer output (also 24 bit) + --disable-real no real (floating point) output + --disable-equalizer no equalizer support + --enable-yasm enforce yasm instad of default assembler for some + optimizations (AVX, currently) + --disable-ieeefloat use special hackery relying on IEEE 754 floating + point storage format (to accurately round to 16 bit + integer at bit more efficiently in generic decoder, + enabled by default, disable in case you have a very + special computer) + --disable-cases include special cases for likely parameter values + (channel count, encoding sizes in libsyn123 + routines) in the hope of better optimization at the + expense of some code bloat + --disable-buffer disable audio buffer code (default enabled by some + heuristics) + --enable-newoldwritesample + new/old WRITE_SAMPLE macro for non-accurate 16 bit + output, faster on certain CPUs (default on on 32 bit + x86) + --disable-layer1 no layer I decoding + --disable-layer2 no layer II decoding + --disable-layer3 no layer III decoding + --enable-portable only build portable API (no off_t, no internal I/O) + --disable-largefile to not attempt to use 64 bit file offsets internally + --disable-feature_report + Disable feature report function + --enable-ipv6 IPv6 support in internal network stack + --enable-network network support (http streams / webradio), if + available (overruled by --with-network!) + --disable-components (not) build end-user programs with default + components, select individual components via + --enable-libmpg123 etc. + --enable-libmpg123 build (only) libmpg123 (with --disable-components) + --enable-libout123 build (only) libout123 (with --disable-components) + --enable-libout123-modules + build (only) libout123 modules (with + --disable-components) + --enable-libsyn123 build (only) libsyn123 (with --disable-components) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1824,39 +1896,43 @@ Optional Packages: --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). + --with-cpu= select CPU optimization. Choices are: - --with-cpu=generic[_fpu] Use generic processor code with floating point arithmetic - --with-cpu=generic_float Plain alias to generic_fpu now... float output is a normal runtime option! - --with-cpu=generic_nofpu Use generic processor code with fixed point arithmetic (p.ex. ARM) - --with-cpu=generic_dither Use generic processor code with floating point arithmetic and dithering for 1to1 16bit decoding. - --with-cpu=i386[_fpu] Use code optimized for i386 processors with floating point arithmetic - --with-cpu=i386_nofpu Use code optimized for i386 processors with fixed point arithmetic - --with-cpu=i486 Use code optimized for i486 processors (only usable alone!) - --with-cpu=i586 Use code optimized for i586 processors - --with-cpu=i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size - --with-cpu=3dnow Use code optimized for 3DNow processors - --with-cpu=3dnow_vintage Use code optimized for older 3DNow processors (K6 family) - --with-cpu=3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon) - --with-cpu=3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate - --with-cpu=3dnow_vintage Use code optimized for older extended 3DNow processors (like K6-III+) - --with-cpu=mmx Use code optimized for MMX processors - --with-cpu=mmx_alone Really only MMX decoder, without i586 fallback for flexible rate - --with-cpu=sse Use code optimized for SSE processors - --with-cpu=sse_vintage Use code optimized for older SSE processors (plain C DCT36) - --with-cpu=sse_alone Really only SSE decoder, without i586 fallback for flexible rate - --with-cpu=avx Use code optimized for x86-64 with AVX processors - --with-cpu=x86 Pack all x86 opts into one binary (excluding i486, including dither) - --with-cpu=x86-64 Use code optimized for x86-64 processors (AMD64 and Intel64, including AVX and dithered generic) - --with-cpu=altivec Use code optimized for Altivec processors (PowerPC G4 and G5) - --with-cpu=ppc_nofpu Use code optimized for PowerPC processors with fixed point arithmetic - --with-cpu=neon Use code optimized for ARM NEON SIMD engine (Cortex-A series) - --with-cpu=arm_fpu Pack neon and generic[_dither] decoders, for ARM processors with FPU and/or NEON - --with-cpu=arm_nofpu Use code optimized for ARM processors with fixed point arithmetic - --with-cpu=neon64 Use code optimized for AArch64 NEON SIMD engine - --with-cpu=aarch64 Pack neon64 and generic[_dither] decoders, for 64bit ARM processors + generic[_fpu] Use generic processor code with floating point arithmetic + generic_float Plain alias to generic_fpu now... float output is a normal runtime option! + generic_nofpu Use generic processor code with fixed point arithmetic (p.ex. ARM) + generic_dither Use generic processor code with floating point arithmetic and dithering for 1to1 16bit decoding. + i386[_fpu] Use code optimized for i386 processors with floating point arithmetic + i386_nofpu Use code optimized for i386 processors with fixed point arithmetic + i486 Use code optimized for i486 processors (only usable alone!) + i586 Use code optimized for i586 processors + i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size + 3dnow Use code optimized for 3DNow processors + 3dnow_vintage Use code optimized for older 3DNow processors (K6 family) + 3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon) + 3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate + 3dnow_vintage Use code optimized for older extended 3DNow processors (like K6-III+) + mmx Use code optimized for MMX processors + mmx_alone Really only MMX decoder, without i586 fallback for flexible rate + sse Use code optimized for SSE processors + sse_vintage Use code optimized for older SSE processors (plain C DCT36) + sse_alone Really only SSE decoder, without i586 fallback for flexible rate + avx Use code optimized for x86-64 with AVX processors + x86 Pack all x86 opts into one binary (excluding i486, including dither) + x86-64 Use code optimized for x86-64 processors (AMD64 and Intel64, including AVX and dithered generic) + altivec Use code optimized for Altivec processors (PowerPC G4 and G5) + ppc_nofpu Use code optimized for PowerPC processors with fixed point arithmetic + neon Use code optimized for ARM NEON SIMD engine (Cortex-A series) + arm_fpu Pack neon and generic[_dither] decoders, for ARM processors with FPU and/or NEON + arm_nofpu Use code optimized for ARM processors with fixed point arithmetic + neon64 Use code optimized for AArch64 NEON SIMD engine + aarch64 Pack neon64 and generic[_dither] decoders, for 64bit ARM processors - --with-audio= Select a list (or only one) of audio output modules (comma or space separated list). Choices are: + --with-audio= + Select a list (or only one) of audio output modules + (comma or space separated list). Choices are: + aix Use AIX as default audio output sub-system alib Use Alib as default audio output sub-system (for HPUX) alsa Use ALSA as default audio output sub-system (libasound) @@ -1952,9 +2028,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$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=`$as_echo "$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/ ;; @@ -1982,7 +2058,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1990,7 +2067,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$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 @@ -1999,10 +2076,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -mpg123 configure 1.31.3 -generated by GNU Autoconf 2.69 +mpg123 configure 1.32.0 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -2019,14 +2096,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" 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\"" -$as_echo "$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 @@ -2034,14 +2111,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$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 - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2063,7 +2141,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$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 @@ -2071,14 +2149,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$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 - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2094,14 +2173,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" 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\"" -$as_echo "$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 @@ -2109,17 +2188,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$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 } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2134,181 +2214,18 @@ fi } # ac_fn_c_try_link -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -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\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$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\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------ ## -## Report this to maintainer@mpg123.org ## -## ------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2316,16 +2233,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2343,28 +2253,105 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$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 +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +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 + (eval "$ac_link") 2>&5 + ac_status=$? + 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 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + 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 +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +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 "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { 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 + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2372,17 +2359,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -2390,12 +2378,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2403,18 +2392,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$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_type @@ -2433,7 +2423,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -2443,14 +2433,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2460,9 +2451,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -2470,14 +2462,14 @@ else fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -2487,14 +2479,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -2504,9 +2497,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -2514,14 +2508,14 @@ else fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -2529,7 +2523,7 @@ while test "x$ac_lo" != "x$ac_hi"; do /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2539,12 +2533,13 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2554,12 +2549,12 @@ esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2587,9 +2582,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 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 mpg123 $as_me 1.31.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by mpg123 $as_me 1.32.0, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2641,8 +2657,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2677,7 +2697,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$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'" ;; @@ -2712,11 +2732,13 @@ done # 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 - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2727,8 +2749,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$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) ;; #( @@ -2752,7 +2774,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2760,14 +2782,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2775,15 +2797,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2791,8 +2813,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2806,63 +2828,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + 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;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 @@ -2872,19 +2879,434 @@ if test -r "$cache_file"; then # 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$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 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 + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// 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. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + 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)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_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" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" + +# Auxiliary files required by this configure script. +ac_aux_files="ltmain.sh compile missing install-sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $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 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + 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 + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + 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 + 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 + 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 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + 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 + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2895,12 +3317,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$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) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$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=: ;; ,);; *) @@ -2909,24 +3331,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$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=`$as_echo "$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 @@ -2936,11 +3358,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 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: 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 ## -------------------- ## ## Main body of script. ## @@ -2954,18 +3377,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -API_VERSION=47 -LIB_PATCHLEVEL=0 - -OUTAPI_VERSION=4 -OUTLIB_PATCHLEVEL=7 - -SYNAPI_VERSION=1 -SYNLIB_PATCHLEVEL=5 - -LIBMPG123_VERSION=$API_VERSION:$LIB_PATCHLEVEL:$API_VERSION -LIBOUT123_VERSION=$OUTAPI_VERSION:$OUTLIB_PATCHLEVEL:$OUTAPI_VERSION -LIBSYN123_VERSION=$SYNAPI_VERSION:$SYNLIB_PATCHLEVEL:$SYNAPI_VERSION @@ -2975,57 +3386,45 @@ LIBSYN123_VERSION=$SYNAPI_VERSION:$SYNLIB_PATCHLEVEL:$SYNAPI_VERSION -ac_aux_dir= -for ac_dir in build "$srcdir"/build; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 +LIBMPG123_VERSION=48:0:48 +LIBOUT123_VERSION=5:0:5 +LIBSYN123_VERSION=2:1:2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + + + + + + + + + # Make sure we can run config.sub. +$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 "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$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;; @@ -3044,21 +3443,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$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;; @@ -3080,7 +3480,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.16' -# Find a good install program. We prefer a C program (faster), + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -3094,20 +3495,25 @@ am__api_version='1.16' # 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ 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 ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -3117,13 +3523,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -3131,12 +3537,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -3152,7 +3558,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -3162,8 +3568,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$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. @@ -3173,8 +3579,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ 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. am_lf=' @@ -3228,8 +3634,8 @@ else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -3248,26 +3654,23 @@ test "$program_suffix" != NONE && # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$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. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$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 @@ -3287,11 +3690,12 @@ if test "$cross_compiling" != no; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -3299,11 +3703,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$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 @@ -3314,11 +3722,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3327,11 +3735,12 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -3339,11 +3748,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$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 @@ -3354,11 +3767,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -3366,8 +3779,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -3379,25 +3792,31 @@ fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { 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 ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -3408,7 +3827,7 @@ IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -3418,18 +3837,19 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$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 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -3437,11 +3857,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$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 @@ -3452,24 +3876,25 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ 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=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +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 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -3485,12 +3910,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -3504,7 +3929,8 @@ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3514,12 +3940,13 @@ case $enable_silent_rules in # ((( *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ 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 $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3531,8 +3958,8 @@ else am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$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; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3564,17 +3991,13 @@ fi # Define the identity of the package. PACKAGE='mpg123' - VERSION='1.31.3' + VERSION='1.32.0' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3614,6 +4037,20 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile @@ -3664,24 +4101,24 @@ ac_config_headers="$ac_config_headers src/config.h" # You get strange symptoms like jack module build failing because the AC_C_CONST failed to detect the working const support. # In that case, the test failed because -Werror, not because no const there... # After looking again, there are possibly more tests being obscured by false failures. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Werror in CFLAGS (It breaks tests)" >&5 -$as_echo_n "checking for -Werror in CFLAGS (It breaks tests)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Werror in CFLAGS (It breaks tests)" >&5 +printf %s "checking for -Werror in CFLAGS (It breaks tests)... " >&6; } if echo "$CFLAGS" | grep Werror; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have -Werror in CFLAGS. That may break some tests and make this configure bogus. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You have -Werror in CFLAGS. That may break some tests and make this configure bogus. If you want paranoid compilation, use --enable-nagging option, which adds -Werror for gcc. Also note that you shall not run make distcheck after configuring with --enable-nagging. distcheck uses the generated CFLAGS... Anyhow, continuing at your own risk." >&5 -$as_echo "$as_me: WARNING: You have -Werror in CFLAGS. That may break some tests and make this configure bogus. +printf "%s\n" "$as_me: WARNING: You have -Werror in CFLAGS. That may break some tests and make this configure bogus. If you want paranoid compilation, use --enable-nagging option, which adds -Werror for gcc. Also note that you shall not run make distcheck after configuring with --enable-nagging. distcheck uses the generated CFLAGS... Anyhow, continuing at your own risk." >&2;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi buffer=enabled # try to build with buffer by default @@ -3692,8 +4129,8 @@ EXEC_LT_LDFLAGS= be_static=no all_static=no lib_static=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if you are up to something totally static with LDFLAGS/CFLAGS" >&5 -$as_echo_n "checking if you are up to something totally static with LDFLAGS/CFLAGS... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if you are up to something totally static with LDFLAGS/CFLAGS" >&5 +printf %s "checking if you are up to something totally static with LDFLAGS/CFLAGS... " >&6; } for f in $LDFLAGS $CFLAGS do case "$f" in @@ -3712,25 +4149,34 @@ do esac done if test "x$be_static" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } LT_LDFLAGS=-all-static EXEC_LT_LDFLAGS="$LT_LDFLAGS" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$all_static" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use -static in LDFLAGS for all-static linking! Your compiler may blow up on that -all-static. " >&5 -$as_echo "$as_me: WARNING: Use -static in LDFLAGS for all-static linking! Your compiler may blow up on that -all-static. " >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Use -static in LDFLAGS for all-static linking! Your compiler may blow up on that -all-static. " >&5 +printf "%s\n" "$as_me: WARNING: Use -static in LDFLAGS for all-static linking! Your compiler may blow up on that -all-static. " >&2;} fi + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ 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: @echo this is the am__doit target >confinc.out @@ -3766,11 +4212,12 @@ esac fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_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+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3796,11 +4243,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3808,11 +4256,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$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 @@ -3823,11 +4275,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3836,11 +4288,12 @@ if test -z "$ac_cv_prog_CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3848,11 +4301,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$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 @@ -3863,11 +4320,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -3875,8 +4332,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -3889,11 +4346,12 @@ if test -z "$CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3901,11 +4359,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$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 @@ -3916,11 +4378,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3929,11 +4391,12 @@ fi 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3942,15 +4405,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$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 @@ -3966,18 +4433,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3988,11 +4455,12 @@ if test -z "$CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4000,11 +4468,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$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 @@ -4015,11 +4487,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4032,11 +4504,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -4044,11 +4517,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$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 @@ -4059,11 +4536,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4075,8 +4552,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -4084,25 +4561,129 @@ esac fi fi +if test -z "$CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { 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 + CC="" + 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;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +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;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$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 +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" 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\"" -$as_echo "$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 @@ -4112,7 +4693,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -4120,7 +4701,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4132,9 +4713,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ 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[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -4155,11 +4736,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -4176,7 +4758,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -4192,44 +4774,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +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 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +{ 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; } 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ 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 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -4243,15 +4827,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { 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; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$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 @@ -4260,7 +4844,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -4272,8 +4856,8 @@ _ACEOF 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ 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" case "(($ac_try" in @@ -4281,10 +4865,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$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 @@ -4292,39 +4876,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$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 - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$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.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4338,11 +4923,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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 test -f "$ac_file" || continue; case $ac_file in @@ -4351,31 +4937,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4385,29 +4972,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$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 GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4416,57 +5007,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ 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 if test "$GCC" = yes; then @@ -4481,94 +5075,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else +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 "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +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 C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +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 C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4577,21 +5221,23 @@ 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 -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4619,8 +5265,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$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. @@ -4638,11 +5284,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4749,8 +5396,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$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 @@ -4773,11 +5420,12 @@ test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_CCAS_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4882,8 +5530,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if @@ -4897,182 +5545,925 @@ else fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { 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 + CC="" + 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;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + 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;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + 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 "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +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; } +else + { 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 + CC="" + 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;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +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;} +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 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +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 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + 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 "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} int -main () +main (void) { - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); +#ifndef __GNUC__ + choke me +#endif ; return 0; } _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +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; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +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 "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +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; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +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 "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +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 C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c99=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - fi +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +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 C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +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; } +else $as_nop + 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; } +else $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ 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 : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +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; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ 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 : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +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; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi ac_ext=c @@ -5080,40 +6471,36 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ 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 CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -5125,10 +6512,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -5138,7 +6526,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -5150,29 +6539,24 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$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 # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -5184,10 +6568,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -5197,11 +6582,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { 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; } fi @@ -5222,11 +6608,12 @@ case $host in # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 -$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } -if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 +printf %s "checking for _mwvalidcheckl in -lmw... " >&6; } +if test ${ac_cv_lib_mw__mwvalidcheckl+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5235,38 +6622,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char _mwvalidcheckl (); int -main () +main (void) { return _mwvalidcheckl (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_mw__mwvalidcheckl=yes -else +else $as_nop ac_cv_lib_mw__mwvalidcheckl=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 -$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } -if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 +printf "%s\n" "$ac_cv_lib_mw__mwvalidcheckl" >&6; } +if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes +then : LIBM=-lmw fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +printf %s "checking for cos in -lm... " >&6; } +if test ${ac_cv_lib_m_cos+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5275,40 +6662,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char cos (); int -main () +main (void) { return cos (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_m_cos=yes -else +else $as_nop ac_cv_lib_m_cos=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +printf "%s\n" "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes +then : LIBM="$LIBM -lm" fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +printf %s "checking for cos in -lm... " >&6; } +if test ${ac_cv_lib_m_cos+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5317,30 +6704,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char cos (); int -main () +main (void) { return cos (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_m_cos=yes -else +else $as_nop ac_cv_lib_m_cos=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +printf "%s\n" "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes +then : LIBM=-lm fi @@ -5348,13 +6734,84 @@ fi esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else $as_nop + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +if echo " $LIBS" | grep -q -w -- -lrt; then + LIBRT=-lrt +fi +# Could actually be missing. +ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + +fi + LIBS=$oldLIBS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST @@ -5362,10 +6819,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP @@ -5374,13 +6836,13 @@ case `"$ac_path_GREP" --version 2>&1` in ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5408,16 +6870,17 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else @@ -5428,10 +6891,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP @@ -5440,13 +6908,13 @@ case `"$ac_path_EGREP" --version 2>&1` in ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5475,21 +6943,22 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __cplusplus @@ -5502,7 +6971,7 @@ main () /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. + /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ @@ -5530,7 +6999,7 @@ main () iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; @@ -5546,47 +7015,50 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_const=yes -else +else $as_nop ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -$as_echo "#define const /**/" >>confdefs.h +printf "%s\n" "#define const /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -5603,141 +7075,41 @@ _ACEOF ;; esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + 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 + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + + + + +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 + +fi + { 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 : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5748,7 +7120,8 @@ else typedef int dummy; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. @@ -5772,7 +7145,7 @@ if ac_fn_c_try_compile "$LINENO"; then : fi done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5781,7 +7154,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -5793,7 +7166,8 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5801,7 +7175,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -5811,14 +7185,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). @@ -5827,7 +7202,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros @@ -5837,14 +7212,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { #ifndef _BIG_ENDIAN not big endian @@ -5854,31 +7230,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -short int ascii_mm[] = +unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = + unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } - short int ebcdic_ii[] = + unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = + unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; @@ -5886,14 +7264,15 @@ short int ascii_mm[] = extern int foo; int -main () +main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -5906,13 +7285,13 @@ if ac_fn_c_try_compile "$LINENO"; then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* Are we little or big endian? From Harbison&Steele. */ @@ -5928,9 +7307,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_bigendian=no -else +else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -5939,17 +7319,17 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$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) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) @@ -5967,7 +7347,8 @@ fi modules=auto # Check whether --enable-modules was given. -if test "${enable_modules+set}" = set; then : +if test ${enable_modules+y} +then : enableval=$enable_modules; if test "x$enableval" = xyes then @@ -5976,7 +7357,7 @@ if test "${enable_modules+set}" = set; then : modules=disabled fi -else +else $as_nop if test "x$be_static" = "xyes"; then modules=disabled @@ -5992,30 +7373,30 @@ if test x"$enable_shared" = xno; then LT_LDFLAGS= else -$as_echo "#define DYNAMIC_BUILD 1" >>confdefs.h +printf "%s\n" "#define DYNAMIC_BUILD 1" >>confdefs.h fi -for ac_header in windows.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" -if test "x$ac_cv_header_windows_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WINDOWS_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" +if test "x$ac_cv_header_windows_h" = xyes +then : + printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h fi -done - +# enable win32 code +if test "x$ac_cv_header_windows_h" = xyes -a "x$host_os" != xcygwin -a "x$host_os" != xmidipix; then + win32_specific_codes=enabled +fi android_build=no case "$host" in *-*-mingw*) win32=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if this is a UWP build" >&5 -$as_echo_n "checking if this is a UWP build... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if this is a UWP build" >&5 +printf %s "checking if this is a UWP build... " >&6; } + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) @@ -6023,7 +7404,7 @@ $as_echo_n "checking if this is a UWP build... " >&6; } #endif int -main () +main (void) { ; ; @@ -6031,29 +7412,30 @@ main () } _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : uwp_build=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop uwp_build=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.err conftest.i conftest.$ac_ext if test x"$uwp_build" = xyes; then -$as_echo "#define WINDOWS_UWP 1" >>confdefs.h +printf "%s\n" "#define WINDOWS_UWP 1" >>confdefs.h fi ;; linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an Android system" >&5 -$as_echo_n "checking for an Android system... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an Android system" >&5 +printf %s "checking for an Android system... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __ANDROID__ @@ -6061,7 +7443,7 @@ $as_echo_n "checking for an Android system... " >&6; } #endif int -main () +main (void) { ; ; @@ -6069,16 +7451,17 @@ main () } _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : android_build=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -6088,6 +7471,67 @@ rm -f conftest.err conftest.i conftest.$ac_ext ;; esac + +if test x$win32_specific_codes = xenabled; then + # Check GetThreadErrorMode + if test x"$modules" != xdisabled; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have GetThreadErrorMode" >&5 +printf %s "checking if we have GetThreadErrorMode... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + int main(){ + return GetThreadErrorMode(); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + win32_thread_error=yes +else $as_nop + win32_winver_bump=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "x$win32_thread_error" != "xyes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have GetThreadErrorMode" >&5 +printf %s "checking if we have GetThreadErrorMode... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define WINVER 0x600 + #define _WIN32_WINNT 0x600 + #include + int main(){ + return GetThreadErrorMode(); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + win32_thread_error=yes +else $as_nop + win32_thread_error=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + if test "x$win32_thread_error" = "xyes"; 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; } + if test "x$modules" = xenabled; then + as_fn_error $? "GetThreadErrorMode is required for modules but not found." "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Disabling modules because of missing GetThreadErrorMode()" >&5 +printf "%s\n" "$as_me: WARNING: Disabling modules because of missing GetThreadErrorMode()" >&2;} + modules=disabled + fi + fi + fi +fi + LIBDL= if test x"$modules" = xdisabled @@ -6099,8 +7543,8 @@ else # The dlopen() API is either in libc or in libdl. if test "x$ac_cv_header_windows_h" = xyes && test "x$win32" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LoadLibrary should be used" >&5 -$as_echo_n "checking if LoadLibrary should be used... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if LoadLibrary should be used" >&5 +printf %s "checking if LoadLibrary should be used... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6114,27 +7558,29 @@ int main() { } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : have_dl=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using LoadLibrary" >&5 -$as_echo "Using LoadLibrary" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using LoadLibrary" >&5 +printf "%s\n" "Using LoadLibrary" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else # Check for libdl functions, but only apply them for libcompat_dl. # This looks too messy. Can I avoid messing with LIBS here? oldLIBS=$LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6142,55 +7588,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' dl; do +for ac_lib in '' dl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else +else $as_nop ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 -$as_echo_n "checking for library containing dlsym... " >&6; } -if ${ac_cv_search_dlsym+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +printf %s "checking for library containing dlsym... " >&6; } +if test ${ac_cv_search_dlsym+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6198,55 +7647,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlsym (); int -main () +main (void) { return dlsym (); ; return 0; } _ACEOF -for ac_lib in '' dl; do +for ac_lib in '' dl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlsym=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlsym+:} false; then : + if test ${ac_cv_search_dlsym+y} +then : break fi done -if ${ac_cv_search_dlsym+:} false; then : +if test ${ac_cv_search_dlsym+y} +then : -else +else $as_nop ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 -$as_echo "$ac_cv_search_dlsym" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +printf "%s\n" "$ac_cv_search_dlsym" >&6; } ac_res=$ac_cv_search_dlsym -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlclose" >&5 -$as_echo_n "checking for library containing dlclose... " >&6; } -if ${ac_cv_search_dlclose+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlclose" >&5 +printf %s "checking for library containing dlclose... " >&6; } +if test ${ac_cv_search_dlclose+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6254,70 +7706,74 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlclose (); int -main () +main (void) { return dlclose (); ; return 0; } _ACEOF -for ac_lib in '' dl; do +for ac_lib in '' dl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlclose=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlclose+:} false; then : + if test ${ac_cv_search_dlclose+y} +then : break fi done -if ${ac_cv_search_dlclose+:} false; then : +if test ${ac_cv_search_dlclose+y} +then : -else +else $as_nop ac_cv_search_dlclose=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlclose" >&5 -$as_echo "$ac_cv_search_dlclose" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlclose" >&5 +printf "%s\n" "$ac_cv_search_dlclose" >&6; } ac_res=$ac_cv_search_dlclose -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi - ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : fi - for ac_func in dlopen dlsym dlclose + for ac_func in dlopen dlsym dlclose do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF have_dl=yes -else +else $as_nop dl_missing=yes fi -done +done LIBS=$oldLIBS # A better way to check if the library was really needed? if test "x$ac_cv_search_dlopen" = x-ldl || @@ -6328,8 +7784,8 @@ done fi fi if test x"$dl_missing" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Some dynamic loading functions missing." >&5 -$as_echo "$as_me: WARNING: Some dynamic loading functions missing." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Some dynamic loading functions missing." >&5 +printf "%s\n" "$as_me: WARNING: Some dynamic loading functions missing." >&2;} have_dl=no fi if test x"$modules" = xenabled -a x"$have_dl" = xno; then @@ -6351,8 +7807,8 @@ fi case `pwd` in *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac @@ -6372,6 +7828,7 @@ macro_revision='2.4.6' + ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within @@ -6395,8 +7852,8 @@ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then @@ -6422,12 +7879,12 @@ func_echo_all () } case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; esac @@ -6443,11 +7900,12 @@ esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -6461,10 +7919,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -6473,13 +7936,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6507,8 +7970,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -6525,11 +7988,12 @@ Xsed="$SED -e 1s/^X//" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else @@ -6540,10 +8004,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP @@ -6552,13 +8021,13 @@ case `"$ac_path_FGREP" --version 2>&1` in ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6587,8 +8056,8 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -6613,17 +8082,18 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw @@ -6652,15 +8122,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; } ;; esac elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do @@ -6689,18 +8160,19 @@ fi LD=$lt_cv_path_LD if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -6723,11 +8195,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM @@ -6777,8 +8250,8 @@ else : ${lt_cv_path_NM=no} fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else @@ -6791,11 +8264,12 @@ else 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else @@ -6803,11 +8277,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$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 @@ -6818,11 +8296,11 @@ fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6835,11 +8313,12 @@ if test -z "$DUMPBIN"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else @@ -6847,11 +8326,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$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 @@ -6862,11 +8345,11 @@ fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6878,8 +8361,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 DUMPBIN=$ac_ct_DUMPBIN @@ -6907,11 +8390,12 @@ test -z "$NM" && NM=nm -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) @@ -6927,26 +8411,27 @@ else fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop i=0 teststring=ABCD @@ -7073,11 +8558,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -7121,11 +8606,12 @@ esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $host in *-*-mingw* ) case $build in @@ -7161,18 +8647,19 @@ esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in @@ -7188,22 +8675,23 @@ esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_reload_flag='-r' fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -7236,11 +8724,12 @@ esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -7248,11 +8737,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$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 @@ -7263,11 +8756,11 @@ fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7276,11 +8769,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -7288,11 +8782,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$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 @@ -7303,11 +8801,11 @@ fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -7315,8 +8813,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 OBJDUMP=$ac_ct_OBJDUMP @@ -7332,11 +8830,12 @@ test -z "$OBJDUMP" && OBJDUMP=objdump -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' @@ -7532,8 +9031,8 @@ os2*) esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no @@ -7577,11 +9076,12 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -7589,11 +9089,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$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 @@ -7604,11 +9108,11 @@ fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7617,11 +9121,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -7629,11 +9134,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$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 @@ -7644,11 +9153,11 @@ fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -7656,8 +9165,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 DLLTOOL=$ac_ct_DLLTOOL @@ -7674,11 +9183,12 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in @@ -7701,8 +9211,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO @@ -7717,11 +9227,12 @@ if test -n "$ac_tool_prefix"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -7729,11 +9240,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$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 @@ -7744,11 +9259,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7761,11 +9276,12 @@ if test -z "$AR"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -7773,11 +9289,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$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 @@ -7788,11 +9308,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7804,8 +9324,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 AR=$ac_ct_AR @@ -7825,30 +9345,32 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. @@ -7856,7 +9378,7 @@ if ac_fn_c_try_compile "$LINENO"; then : { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ @@ -7865,11 +9387,11 @@ if ac_fn_c_try_compile "$LINENO"; then : rm -f conftest.* libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= @@ -7886,11 +9408,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -7898,11 +9421,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$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 @@ -7913,11 +9440,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7926,11 +9453,12 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -7938,11 +9466,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$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 @@ -7953,11 +9485,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -7965,8 +9497,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -7985,11 +9517,12 @@ test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -7997,11 +9530,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$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 @@ -8012,11 +9549,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8025,11 +9562,12 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -8037,11 +9575,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$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 @@ -8052,11 +9594,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -8064,8 +9606,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 RANLIB=$ac_ct_RANLIB @@ -8154,11 +9696,12 @@ compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] @@ -8310,7 +9853,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm @@ -8383,7 +9926,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi @@ -8418,11 +9961,11 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } fi # Response file support. @@ -8468,13 +10011,14 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : +if test ${with_sysroot+y} +then : withval=$with_sysroot; -else +else $as_nop with_sysroot=no fi @@ -8492,24 +10036,25 @@ case $with_sysroot in #( no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} @@ -8520,10 +10065,15 @@ if test -z "$lt_DD"; then for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ @@ -8543,15 +10093,16 @@ fi rm -f conftest.i conftest2.i conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= @@ -8562,8 +10113,8 @@ fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } @@ -8586,7 +10137,8 @@ func_cc_basename () } # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : +if test ${enable_libtool_lock+y} +then : enableval=$enable_libtool_lock; fi @@ -8602,7 +10154,7 @@ ia64-*-hpux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -8622,7 +10174,7 @@ ia64-*-hpux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$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 test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in @@ -8660,7 +10212,7 @@ mips64*-*linux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in @@ -8701,7 +10253,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -8764,11 +10316,12 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8779,19 +10332,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_cc_needs_belf=yes -else +else $as_nop lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -8800,8 +10354,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS @@ -8814,7 +10368,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -8851,11 +10405,12 @@ need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else @@ -8863,11 +10418,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$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 @@ -8878,11 +10437,11 @@ fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8891,11 +10450,12 @@ if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else @@ -8903,11 +10463,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$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 @@ -8918,11 +10482,11 @@ fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then @@ -8930,8 +10494,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL @@ -8941,11 +10505,12 @@ else fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out @@ -8955,8 +10520,8 @@ else fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -8971,11 +10536,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else @@ -8983,11 +10549,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$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 @@ -8998,11 +10568,11 @@ fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9011,11 +10581,12 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else @@ -9023,11 +10594,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$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 @@ -9038,11 +10613,11 @@ fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -9050,8 +10625,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 DSYMUTIL=$ac_ct_DSYMUTIL @@ -9063,11 +10638,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else @@ -9075,11 +10651,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$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 @@ -9090,11 +10670,11 @@ fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9103,11 +10683,12 @@ if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else @@ -9115,11 +10696,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$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 @@ -9130,11 +10715,11 @@ fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -9142,8 +10727,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 NMEDIT=$ac_ct_NMEDIT @@ -9155,11 +10740,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else @@ -9167,11 +10753,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$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 @@ -9182,11 +10772,11 @@ fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9195,11 +10785,12 @@ if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else @@ -9207,11 +10798,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$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 @@ -9222,11 +10817,11 @@ fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then @@ -9234,8 +10829,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 LIPO=$ac_ct_LIPO @@ -9247,11 +10842,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else @@ -9259,11 +10855,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$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 @@ -9274,11 +10874,11 @@ fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9287,11 +10887,12 @@ if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else @@ -9299,11 +10900,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$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 @@ -9314,11 +10919,11 @@ fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then @@ -9326,8 +10931,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 OTOOL=$ac_ct_OTOOL @@ -9339,11 +10944,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else @@ -9351,11 +10957,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$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 @@ -9366,11 +10976,11 @@ fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9379,11 +10989,12 @@ if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else @@ -9391,11 +11002,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$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 @@ -9406,11 +11021,11 @@ fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then @@ -9418,8 +11033,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 OTOOL64=$ac_ct_OTOOL64 @@ -9454,11 +11069,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override @@ -9487,14 +11103,15 @@ else rm -f conftest.* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym @@ -9503,31 +11120,33 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_ld_exported_symbols_list=yes -else +else $as_nop lt_cv_ld_exported_symbols_list=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} @@ -9555,8 +11174,8 @@ _LT_EOF rm -rf conftest.dSYM fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; @@ -9567,11 +11186,11 @@ $as_echo "$lt_cv_ld_force_load" >&6; } # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + 10.0,*86*-darwin8*|10.0,*-darwin[912]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) + 10.*|11.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; @@ -9627,19 +11246,14 @@ func_munge_path_list () esac } -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi -done - @@ -9652,11 +11266,12 @@ case $host in if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_AS+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else @@ -9664,11 +11279,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$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 @@ -9679,11 +11298,11 @@ fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +printf "%s\n" "$AS" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9692,11 +11311,12 @@ if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_AS+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else @@ -9704,11 +11324,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" - $as_echo "$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 @@ -9719,11 +11343,11 @@ fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +printf "%s\n" "$ac_ct_AS" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AS" = x; then @@ -9731,8 +11355,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 AS=$ac_ct_AS @@ -9744,11 +11368,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -9756,11 +11381,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$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 @@ -9771,11 +11400,11 @@ fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9784,11 +11413,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -9796,11 +11426,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$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 @@ -9811,11 +11445,11 @@ fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -9823,8 +11457,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 DLLTOOL=$ac_ct_DLLTOOL @@ -9836,11 +11470,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -9848,11 +11483,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$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 @@ -9863,11 +11502,11 @@ fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9876,11 +11515,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -9888,11 +11528,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$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 @@ -9903,11 +11547,11 @@ fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -9915,8 +11559,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 OBJDUMP=$ac_ct_OBJDUMP @@ -9946,7 +11590,8 @@ test -z "$OBJDUMP" && OBJDUMP=objdump # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : +if test ${enable_static+y} +then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -9964,7 +11609,7 @@ if test "${enable_static+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_static=no fi @@ -9982,7 +11627,8 @@ fi # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -10000,7 +11646,7 @@ if test "${enable_shared+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_shared=yes fi @@ -10015,7 +11661,8 @@ fi # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : +if test ${with_pic+y} +then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; @@ -10032,7 +11679,7 @@ if test "${with_pic+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop pic_mode=default fi @@ -10044,7 +11691,8 @@ fi # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : +if test ${enable_fast_install+y} +then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -10062,7 +11710,7 @@ if test "${enable_fast_install+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_fast_install=yes fi @@ -10076,11 +11724,12 @@ fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : +if test ${with_aix_soname+y} +then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; @@ -10089,18 +11738,19 @@ if test "${with_aix_soname+set}" = set; then : ;; esac lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', @@ -10182,11 +11832,12 @@ if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -10197,17 +11848,15 @@ else fi rmdir .libs 2>/dev/null fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h @@ -10253,11 +11902,12 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -10306,11 +11956,11 @@ fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10319,11 +11969,12 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -10372,11 +12023,11 @@ fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10461,11 +12112,12 @@ if test yes = "$GCC"; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -10496,8 +12148,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -10860,26 +12512,28 @@ case $host_os in ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -10910,8 +12564,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in @@ -10939,11 +12593,12 @@ fi # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" @@ -10967,8 +12622,8 @@ else LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : @@ -10982,11 +12637,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -11029,19 +12685,20 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -11084,8 +12741,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -11093,19 +12750,19 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -11117,8 +12774,8 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -11676,21 +13333,23 @@ _LT_EOF if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11705,7 +13364,7 @@ if ac_fn_c_try_link "$LINENO"; then : lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -11729,21 +13388,23 @@ fi if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11758,7 +13419,7 @@ if ac_fn_c_try_link "$LINENO"; then : lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -12009,11 +13670,12 @@ fi # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" @@ -12037,8 +13699,8 @@ else LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -12078,28 +13740,30 @@ fi # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_irix_exported_symbol=yes -else +else $as_nop lt_cv_irix_exported_symbol=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi @@ -12380,8 +14044,8 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -12417,18 +14081,19 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -12446,7 +14111,7 @@ else if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no @@ -12460,8 +14125,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac @@ -12620,8 +14285,8 @@ esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in @@ -13182,9 +14847,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir @@ -13194,19 +14860,21 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : lt_cv_shlibpath_overrides_runpath=yes fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir @@ -13450,8 +15118,8 @@ uts4*) dynamic_linker=no ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -13572,8 +15240,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -13597,8 +15265,8 @@ else # directories. hardcode_action=unsupported fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then @@ -13642,11 +15310,12 @@ else darwin*) # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13655,32 +15324,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else +else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= @@ -13700,14 +15368,16 @@ fi *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : +if test "x$ac_cv_func_shl_load" = xyes +then : lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13716,41 +15386,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char shl_load (); int -main () +main (void) { return shl_load (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_shl_load=yes -else +else $as_nop ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else +else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : +if test "x$ac_cv_func_dlopen" = xyes +then : lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13759,37 +15430,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13798,37 +15469,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_svld_dlopen=yes -else +else $as_nop ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13837,30 +15508,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dld_link (); int -main () +main (void) { return dld_link (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_dld_link=yes -else +else $as_nop ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -13899,11 +15569,12 @@ fi save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else @@ -13982,7 +15653,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -14000,16 +15671,17 @@ rm -fr conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else @@ -14088,7 +15760,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -14106,8 +15778,8 @@ rm -fr conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS @@ -14145,13 +15817,13 @@ fi striplib= old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -14159,16 +15831,16 @@ else if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; esac fi @@ -14185,13 +15857,13 @@ fi # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -14215,15 +15887,15 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } fi ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } @@ -14266,14 +15938,15 @@ then else # Enable module support in source code -$as_echo "#define USE_MODULES 1" >>confdefs.h +printf "%s\n" "#define USE_MODULES 1" >>confdefs.h # Export the module file suffix as LT_MODULE_EXT - { $as_echo "$as_me:${as_lineno-$LINENO}: checking what extension is used for runtime loadable modules" >&5 -$as_echo_n "checking what extension is used for runtime loadable modules... " >&6; } -if ${libltdl_cv_shlibext+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking what extension is used for runtime loadable modules" >&5 +printf %s "checking what extension is used for runtime loadable modules... " >&6; } +if test ${libltdl_cv_shlibext+y} +then : + printf %s "(cached) " >&6 +else $as_nop module=yes eval libltdl_cv_shlibext=$shrext_cmds @@ -14281,27 +15954,21 @@ module=no eval libltdl_cv_shrext=$shrext_cmds fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libltdl_cv_shlibext" >&5 -$as_echo "$libltdl_cv_shlibext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libltdl_cv_shlibext" >&5 +printf "%s\n" "$libltdl_cv_shlibext" >&6; } if test -n "$libltdl_cv_shlibext"; then -cat >>confdefs.h <<_ACEOF -#define LT_MODULE_EXT "$libltdl_cv_shlibext" -_ACEOF +printf "%s\n" "#define LT_MODULE_EXT \"$libltdl_cv_shlibext\"" >>confdefs.h fi if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then -cat >>confdefs.h <<_ACEOF -#define LT_SHARED_EXT "$libltdl_cv_shrext" -_ACEOF +printf "%s\n" "#define LT_SHARED_EXT \"$libltdl_cv_shrext\"" >>confdefs.h fi if test -n "$shared_archive_member_spec"; then -cat >>confdefs.h <<_ACEOF -#define LT_SHARED_LIB_MEMBER "($shared_archive_member_spec.o)" -_ACEOF +printf "%s\n" "#define LT_SHARED_LIB_MEMBER \"($shared_archive_member_spec.o)\"" >>confdefs.h fi @@ -14328,7 +15995,8 @@ fi # Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : +if test ${enable_debug+y} +then : enableval=$enable_debug; if test "x$enableval" = xyes then @@ -14337,14 +16005,15 @@ if test "${enable_debug+set}" = set; then : debugging="disabled" fi -else +else $as_nop debugging="disabled" fi # Check whether --enable-xdebug was given. -if test "${enable_xdebug+set}" = set; then : +if test ${enable_xdebug+y} +then : enableval=$enable_xdebug; if test "x$enableval" = xyes then @@ -14353,7 +16022,7 @@ if test "${enable_xdebug+set}" = set; then : xdebugging="disabled" fi -else +else $as_nop xdebugging="disabled" fi @@ -14362,12 +16031,13 @@ fi if test x"$xdebugging" = xenabled; then debugging=enabled -$as_echo "#define XDEBUG 1" >>confdefs.h +printf "%s\n" "#define XDEBUG 1" >>confdefs.h fi # Check whether --enable-nagging was given. -if test "${enable_nagging+set}" = set; then : +if test ${enable_nagging+y} +then : enableval=$enable_nagging; if test "x$enableval" = xyes then @@ -14376,7 +16046,7 @@ if test "${enable_nagging+set}" = set; then : nagging="disabled" fi -else +else $as_nop nagging="disabled" fi @@ -14384,36 +16054,35 @@ fi if test x"$debugging" = xenabled; then -$as_echo "#define DEBUG 1" >>confdefs.h +printf "%s\n" "#define DEBUG 1" >>confdefs.h fi # Check whether --enable-gapless was given. -if test "${enable_gapless+set}" = set; then : +if test ${enable_gapless+y} +then : enableval=$enable_gapless; if test "x$enableval" = xyes then gapless="enabled" - -$as_echo "#define GAPLESS 1" >>confdefs.h - else gapless="disabled" fi -else - - gapless="enabled" - -$as_echo "#define GAPLESS 1" >>confdefs.h - - +else $as_nop + gapless="enabled" fi +if test "x$gapless" = xenabled; then + +printf "%s\n" "#define GAPLESS 1" >>confdefs.h + +fi # Check whether --enable-fifo was given. -if test "${enable_fifo+set}" = set; then : +if test ${enable_fifo+y} +then : enableval=$enable_fifo; if test "x$enableval" = xyes then @@ -14422,7 +16091,7 @@ if test "${enable_fifo+set}" = set; then : fifo="disabled" fi -else +else $as_nop fifo="auto" @@ -14434,7 +16103,8 @@ fi id3v2=enabled # Check whether --enable-id3v2 was given. -if test "${enable_id3v2+set}" = set; then : +if test ${enable_id3v2+y} +then : enableval=$enable_id3v2; if test "x$enableval" = xno; then id3v2="disabled" @@ -14446,7 +16116,8 @@ fi # id3v2 depends on strings... so check that in between. string=enabled # Check whether --enable-string was given. -if test "${enable_string+set}" = set; then : +if test ${enable_string+y} +then : enableval=$enable_string; if test "x$enableval" = xno; then string="disabled" @@ -14457,11 +16128,11 @@ fi if test "x$string" = "xdisabled"; then -$as_echo "#define NO_STRING 1" >>confdefs.h +printf "%s\n" "#define NO_STRING 1" >>confdefs.h id3v2=disabled - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ID3v2 support disabled because of string API being disabled." >&5 -$as_echo "$as_me: WARNING: ID3v2 support disabled because of string API being disabled." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ID3v2 support disabled because of string API being disabled." >&5 +printf "%s\n" "$as_me: WARNING: ID3v2 support disabled because of string API being disabled." >&2;} fi if test "x$string" = xenabled; then HAVE_STRING_TRUE= @@ -14474,13 +16145,14 @@ fi if test "x$id3v2" = "xdisabled"; then -$as_echo "#define NO_ID3V2 1" >>confdefs.h +printf "%s\n" "#define NO_ID3V2 1" >>confdefs.h fi icy=enabled # Check whether --enable-icy was given. -if test "${enable_icy+set}" = set; then : +if test ${enable_icy+y} +then : enableval=$enable_icy; if test "x$enableval" = xno; then icy="disabled" @@ -14491,7 +16163,7 @@ fi if test "x$icy" = "xdisabled"; then -$as_echo "#define NO_ICY 1" >>confdefs.h +printf "%s\n" "#define NO_ICY 1" >>confdefs.h fi if test "x$icy" = xenabled; then @@ -14505,7 +16177,8 @@ fi ntom=enabled # Check whether --enable-ntom was given. -if test "${enable_ntom+set}" = set; then : +if test ${enable_ntom+y} +then : enableval=$enable_ntom; if test "x$enableval" = xno; then ntom="disabled" @@ -14516,7 +16189,7 @@ fi if test "x$ntom" = "xdisabled"; then -$as_echo "#define NO_NTOM 1" >>confdefs.h +printf "%s\n" "#define NO_NTOM 1" >>confdefs.h fi if test "x$ntom" = xenabled; then @@ -14530,7 +16203,8 @@ fi downsample=enabled # Check whether --enable-downsample was given. -if test "${enable_downsample+set}" = set; then : +if test ${enable_downsample+y} +then : enableval=$enable_downsample; if test "x$enableval" = xno; then downsample="disabled" @@ -14541,13 +16215,14 @@ fi if test "x$downsample" = "xdisabled"; then -$as_echo "#define NO_DOWNSAMPLE 1" >>confdefs.h +printf "%s\n" "#define NO_DOWNSAMPLE 1" >>confdefs.h fi feeder=enabled # Check whether --enable-feeder was given. -if test "${enable_feeder+set}" = set; then : +if test ${enable_feeder+y} +then : enableval=$enable_feeder; if test "x$enableval" = xno; then feeder="disabled" @@ -14558,13 +16233,14 @@ fi if test "x$feeder" = "xdisabled"; then -$as_echo "#define NO_FEEDER 1" >>confdefs.h +printf "%s\n" "#define NO_FEEDER 1" >>confdefs.h fi moreinfo=enabled # Check whether --enable-moreinfo was given. -if test "${enable_moreinfo+set}" = set; then : +if test ${enable_moreinfo+y} +then : enableval=$enable_moreinfo; if test "x$enableval" = xno; then moreinfo="disabled" @@ -14575,13 +16251,14 @@ fi if test "x$moreinfo" = "xdisabled"; then -$as_echo "#define NO_MOREINFO 1" >>confdefs.h +printf "%s\n" "#define NO_MOREINFO 1" >>confdefs.h fi messages=enabled # Check whether --enable-messages was given. -if test "${enable_messages+set}" = set; then : +if test ${enable_messages+y} +then : enableval=$enable_messages; if test "x$enableval" = xno; then messages="disabled" @@ -14592,19 +16269,20 @@ fi if test "x$messages" = "xdisabled"; then -$as_echo "#define NO_WARNING 1" >>confdefs.h +printf "%s\n" "#define NO_WARNING 1" >>confdefs.h -$as_echo "#define NO_ERRORMSG 1" >>confdefs.h +printf "%s\n" "#define NO_ERRORMSG 1" >>confdefs.h -$as_echo "#define NO_ERETURN 1" >>confdefs.h +printf "%s\n" "#define NO_ERETURN 1" >>confdefs.h fi runtimetables=disabled # Check whether --enable-runtime-tables was given. -if test "${enable_runtime_tables+set}" = set; then : +if test ${enable_runtime_tables+y} +then : enableval=$enable_runtime_tables; if test "x$enableval" = xyes; then runtimetables=enabled @@ -14616,7 +16294,7 @@ fi if test "x$runtimetables" = "xenabled"; then -$as_echo "#define RUNTIME_TABLES 1" >>confdefs.h +printf "%s\n" "#define RUNTIME_TABLES 1" >>confdefs.h fi @@ -14631,7 +16309,8 @@ fi newhuff=enabled # Check whether --enable-new-huffman was given. -if test "${enable_new_huffman+set}" = set; then : +if test ${enable_new_huffman+y} +then : enableval=$enable_new_huffman; if test "x$enableval" = xno; then newhuff=disabled @@ -14643,13 +16322,14 @@ fi if test "x$newhuff" = "xenabled"; then -$as_echo "#define USE_NEW_HUFFTABLE 1" >>confdefs.h +printf "%s\n" "#define USE_NEW_HUFFTABLE 1" >>confdefs.h fi integers=quality # Check whether --enable-int-quality was given. -if test "${enable_int_quality+set}" = set; then : +if test ${enable_int_quality+y} +then : enableval=$enable_int_quality; if test "x$enableval" = xno; then integers=fast @@ -14660,7 +16340,7 @@ fi if test $integers = quality; then -$as_echo "#define ACCURATE_ROUNDING 1" >>confdefs.h +printf "%s\n" "#define ACCURATE_ROUNDING 1" >>confdefs.h fi if test x"$integers" = xquality ; then @@ -14674,7 +16354,8 @@ fi int16=enabled # Check whether --enable-16bit was given. -if test "${enable_16bit+set}" = set; then : +if test ${enable_16bit+y} +then : enableval=$enable_16bit; if test "x$enableval" = xno; then int16="disabled" @@ -14685,7 +16366,8 @@ fi int8=enabled # Check whether --enable-8bit was given. -if test "${enable_8bit+set}" = set; then : +if test ${enable_8bit+y} +then : enableval=$enable_8bit; if test "x$enableval" = xno; then int8="disabled" @@ -14696,7 +16378,8 @@ fi int32=enabled # Check whether --enable-32bit was given. -if test "${enable_32bit+set}" = set; then : +if test ${enable_32bit+y} +then : enableval=$enable_32bit; if test "x$enableval" = xno; then int32="disabled" @@ -14707,7 +16390,8 @@ fi real=enabled # Check whether --enable-real was given. -if test "${enable_real+set}" = set; then : +if test ${enable_real+y} +then : enableval=$enable_real; if test "x$enableval" = xno; then real="disabled" @@ -14718,7 +16402,8 @@ fi equalizer=enabled # Check whether --enable-equalizer was given. -if test "${enable_equalizer+set}" = set; then : +if test ${enable_equalizer+y} +then : enableval=$enable_equalizer; if test "x$enableval" = xno; then equalizer="disabled" @@ -14729,14 +16414,16 @@ fi # Check whether --with-cpu was given. -if test "${with_cpu+set}" = set; then : +if test ${with_cpu+y} +then : withval=$with_cpu; fi use_yasm=auto # Check whether --enable-yasm was given. -if test "${enable_yasm+set}" = set; then : +if test ${enable_yasm+y} +then : enableval=$enable_yasm; if test "x$enableval" = xyes; then use_yasm="enabled" @@ -14751,7 +16438,8 @@ if test x"$use_yasm" = xenabled; then fi # Check whether --enable-ieeefloat was given. -if test "${enable_ieeefloat+set}" = set; then : +if test ${enable_ieeefloat+y} +then : enableval=$enable_ieeefloat; if test "x$enableval" = xyes; then ieee=enabled @@ -14759,7 +16447,7 @@ if test "${enable_ieeefloat+set}" = set; then : ieee=disabled fi -else +else $as_nop ieee=enabled fi @@ -14767,12 +16455,13 @@ fi if test "x$ieee" = xenabled; then echo "We assume IEEE754 floating point format." -$as_echo "#define IEEE_FLOAT 1" >>confdefs.h +printf "%s\n" "#define IEEE_FLOAT 1" >>confdefs.h fi # Check whether --enable-cases was given. -if test "${enable_cases+set}" = set; then : +if test ${enable_cases+y} +then : enableval=$enable_cases; if test "x$enableval" = xyes; then specialcases=enabled @@ -14780,14 +16469,14 @@ if test "${enable_cases+set}" = set; then : specialcases=disabled fi -else +else $as_nop specialcases=enabled fi if test "x$specialcases" = xdisabled; then -$as_echo "#define SYN123_NO_CASES 1" >>confdefs.h +printf "%s\n" "#define SYN123_NO_CASES 1" >>confdefs.h fi @@ -14830,17 +16519,17 @@ case $host in cpu_type="generic_fpu" ;; i?86-apple-darwin10*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CPU type supports x86-64" >&5 -$as_echo_n "checking if CPU type supports x86-64... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CPU type supports x86-64" >&5 +printf %s "checking if CPU type supports x86-64... " >&6; } case `sysctl -n hw.optional.x86_64` in 1) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } cpu_type="x86-64" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } cpu_type="x86" newoldwritesample=enabled ;; @@ -14854,17 +16543,17 @@ $as_echo "no" >&6; } cpu_type="x86-64" ;; *-apple-darwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CPU type supports AltiVec" >&5 -$as_echo_n "checking if CPU type supports AltiVec... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CPU type supports AltiVec" >&5 +printf %s "checking if CPU type supports AltiVec... " >&6; } case `machine` in ppc7400 | ppc7450 | ppc970) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } cpu_type="altivec" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } cpu_type="generic_fpu" ;; esac @@ -14943,55 +16632,55 @@ $as_echo "no" >&6; } newoldwritesample=enabled ;; *-ibm-aix*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: AIX system detected. You might want to --disable-largefile when trouble about conflicting types for lseek64 and friends occurs." >&5 -$as_echo "$as_me: WARNING: AIX system detected. You might want to --disable-largefile when trouble about conflicting types for lseek64 and friends occurs." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: AIX system detected. You might want to --disable-largefile when trouble about conflicting types for lseek64 and friends occurs." >&5 +printf "%s\n" "$as_me: WARNING: AIX system detected. You might want to --disable-largefile when trouble about conflicting types for lseek64 and friends occurs." >&2;} # Altivec instead? It is developed for MacOS ... cpu_type=generic_fpu # no struct winsize without _ALL_SOURCE sys_cppflags=-D_ALL_SOURCE ;; i386-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="i386" buffer=disabled sys_cppflags=-DGENERIC newoldwritesample=enabled ;; i486-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="i486" buffer=disabled sys_cppflags=-DGENERIC newoldwritesample=enabled ;; i586-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="x86" buffer=disabled sys_cppflags=-DGENERIC newoldwritesample=enabled ;; i686-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="x86" buffer=disabled sys_cppflags=-DGENERIC newoldwritesample=enabled ;; x86_64-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="x86-64" buffer=disabled sys_cppflags=-DGENERIC ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 -$as_echo "$as_me: WARNING: Unknown host operating system" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown host operating system" >&5 +printf "%s\n" "$as_me: WARNING: Unknown host operating system" >&2;} cpu_type="generic_fpu" buffer=disabled sys_cppflags=-DGENERIC @@ -14999,7 +16688,8 @@ $as_echo "$as_me: WARNING: Unknown host operating system" >&2;} esac # Check whether --enable-buffer was given. -if test "${enable_buffer+set}" = set; then : +if test ${enable_buffer+y} +then : enableval=$enable_buffer; if test "x$enableval" = xyes then @@ -15015,7 +16705,8 @@ fi # Check whether --enable-newoldwritesample was given. -if test "${enable_newoldwritesample+set}" = set; then : +if test ${enable_newoldwritesample+y} +then : enableval=$enable_newoldwritesample; if test "x$enableval" = xyes then @@ -15036,7 +16727,7 @@ case "$cpu_type" in *_nofpu) synth32=false -$as_echo "#define NO_SYNTH32 1" >>confdefs.h +printf "%s\n" "#define NO_SYNTH32 1" >>confdefs.h ;; *) @@ -15046,7 +16737,7 @@ esac if test "x$int16" = "xdisabled"; then -$as_echo "#define NO_16BIT 1" >>confdefs.h +printf "%s\n" "#define NO_16BIT 1" >>confdefs.h fi @@ -15065,7 +16756,7 @@ if test "x$int16" = "xdisabled"; then fi if test "x$int8" = "xdisabled"; then -$as_echo "#define NO_8BIT 1" >>confdefs.h +printf "%s\n" "#define NO_8BIT 1" >>confdefs.h fi @@ -15080,7 +16771,7 @@ fi if test "x$int32" = "xdisabled"; then -$as_echo "#define NO_32BIT 1" >>confdefs.h +printf "%s\n" "#define NO_32BIT 1" >>confdefs.h fi if $synth32 && test x"$int32" = xenabled ; then @@ -15094,7 +16785,7 @@ fi if test "x$real" = "xdisabled"; then -$as_echo "#define NO_REAL 1" >>confdefs.h +printf "%s\n" "#define NO_REAL 1" >>confdefs.h fi if $synth32 && test x"$real" = xenabled ; then @@ -15108,7 +16799,7 @@ fi if test "x$equalizer" = "xdisabled"; then -$as_echo "#define NO_EQUALIZER 1" >>confdefs.h +printf "%s\n" "#define NO_EQUALIZER 1" >>confdefs.h fi if test x"$equalizer" = xenabled ; then @@ -15122,12 +16813,13 @@ fi layer1=enabled # Check whether --enable-layer1 was given. -if test "${enable_layer1+set}" = set; then : +if test ${enable_layer1+y} +then : enableval=$enable_layer1; if test "x$enableval" = xno; then layer1="disabled" -$as_echo "#define NO_LAYER1 1" >>confdefs.h +printf "%s\n" "#define NO_LAYER1 1" >>confdefs.h fi @@ -15145,12 +16837,13 @@ fi layer2=enabled # Check whether --enable-layer2 was given. -if test "${enable_layer2+set}" = set; then : +if test ${enable_layer2+y} +then : enableval=$enable_layer2; if test "x$enableval" = xno; then layer2="disabled" -$as_echo "#define NO_LAYER2 1" >>confdefs.h +printf "%s\n" "#define NO_LAYER2 1" >>confdefs.h fi @@ -15168,12 +16861,13 @@ fi layer3=enabled # Check whether --enable-layer3 was given. -if test "${enable_layer3+set}" = set; then : +if test ${enable_layer3+y} +then : enableval=$enable_layer3; if test "x$enableval" = xno; then layer3="disabled" -$as_echo "#define NO_LAYER3 1" >>confdefs.h +printf "%s\n" "#define NO_LAYER3 1" >>confdefs.h fi @@ -15191,27 +16885,31 @@ fi # Check whether --with-audio was given. -if test "${with_audio+set}" = set; then : +if test ${with_audio+y} +then : withval=$with_audio; fi # Check whether --with-default-audio was given. -if test "${with_default_audio+set}" = set; then : +if test ${with_default_audio+y} +then : withval=$with_default_audio; fi # Check whether --with-optimization was given. -if test "${with_optimization+set}" = set; then : +if test ${with_optimization+y} +then : withval=$with_optimization; fi # Check whether --with-seektable was given. -if test "${with_seektable+set}" = set; then : +if test ${with_seektable+y} +then : withval=$with_seektable; fi @@ -15220,46 +16918,46 @@ fi # based on posting from John Dalgliesh on ffmpeg (LGPL) mailing list # extended to use balign if present -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if .balign is present" >&5 -$as_echo_n "checking if .balign is present... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if .balign is present" >&5 +printf %s "checking if .balign is present... " >&6; } echo '.balign 4' > conftest.s if $CCAS -c -o conftest.o conftest.s 1>/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define ASMALIGN_BALIGN 1" >>confdefs.h +printf "%s\n" "#define ASMALIGN_BALIGN 1" >>confdefs.h else -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } # find if .align arg is power-of-two or not asmalign_exp="unknown" if test x"$asmalign_exp" = xunknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if .align takes 2-exponent" >&5 -$as_echo_n "checking if .align takes 2-exponent... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if .align takes 2-exponent" >&5 +printf %s "checking if .align takes 2-exponent... " >&6; } asmalign_exp="no" echo '.align 3' > conftest.s if $CCAS -c -o conftest.o conftest.s 1>/dev/null 2>&1; then asmalign_exp="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.o conftest.s fi if test x"$asmalign_exp" = xyes; then -$as_echo "#define ASMALIGN_EXP 1" >>confdefs.h +printf "%s\n" "#define ASMALIGN_EXP 1" >>confdefs.h else -$as_echo "#define ASMALIGN_BYTE 1" >>confdefs.h +printf "%s\n" "#define ASMALIGN_BYTE 1" >>confdefs.h fi @@ -15267,17 +16965,17 @@ fi ccalign="unknown" if test x"$ccalign" = xunknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking __attribute__((aligned(16)))" >&5 -$as_echo_n "checking __attribute__((aligned(16)))... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking __attribute__((aligned(16)))" >&5 +printf %s "checking __attribute__((aligned(16)))... " >&6; } ccalign="no" echo '__attribute__((aligned(16))) float var;' > conftest.c if $CC -c -o conftest.o conftest.c >/dev/null 2>&1; then ccalign="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.o conftest.c fi @@ -15285,18 +16983,18 @@ fi avx_support="unknown" if test x"$avx_support" = xunknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if assembler supports AVX instructions" >&5 -$as_echo_n "checking if assembler supports AVX instructions... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler supports AVX instructions" >&5 +printf %s "checking if assembler supports AVX instructions... " >&6; } avx_support="no" echo '.text' > conftest.s echo 'vaddps %ymm0,%ymm0,%ymm0' >> conftest.s if $CCAS -c -o conftest.o conftest.s 1>/dev/null 2>&1; then avx_support="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.o conftest.s fi @@ -15314,11 +17012,12 @@ if test x"$check_yasm" = xyes; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_YASM+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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_YASM+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$YASM"; then ac_cv_prog_YASM="$YASM" # Let the user override the test. else @@ -15326,11 +17025,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_YASM="$ac_prog" - $as_echo "$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 @@ -15341,11 +17044,11 @@ fi fi YASM=$ac_cv_prog_YASM if test -n "$YASM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YASM" >&5 -$as_echo "$YASM" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YASM" >&5 +printf "%s\n" "$YASM" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -15354,18 +17057,18 @@ done test -n "$YASM" || YASM="no" if test x"$YASM" != xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $YASM supports GAS syntax and AVX instructions" >&5 -$as_echo_n "checking if $YASM supports GAS syntax and AVX instructions... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $YASM supports GAS syntax and AVX instructions" >&5 +printf %s "checking if $YASM supports GAS syntax and AVX instructions... " >&6; } echo '.text' > conftest.s echo 'vaddps %ymm0,%ymm0,%ymm0' >> conftest.s if $YASM -pgas -rcpp -o conftest.o conftest.s 1>/dev/null 2>&1; then avx_support="yes" YASMFLAGS="-pgas -rgas -mamd64" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.o conftest.s else @@ -15387,341 +17090,207 @@ fi -for ac_header in stdio.h stdlib.h string.h unistd.h sched.h sys/ioctl.h sys/types.h stdint.h limits.h inttypes.h sys/time.h sys/wait.h sys/resource.h sys/signal.h signal.h sys/select.h dirent.h sys/stat.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "stdio.h" "ac_cv_header_stdio_h" "$ac_includes_default" +if test "x$ac_cv_header_stdio_h" = xyes +then : + printf "%s\n" "#define HAVE_STDIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +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 + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" +if test "x$ac_cv_header_sched_h" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_types_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes +then : + printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes +then : + printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/signal.h" "ac_cv_header_sys_signal_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_signal_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SIGNAL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default" +if test "x$ac_cv_header_signal_h" = xyes +then : + printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "dirent.h" "ac_cv_header_dirent_h" "$ac_includes_default" +if test "x$ac_cv_header_dirent_h" = xyes +then : + printf "%s\n" "#define HAVE_DIRENT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stat_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h fi -done - - - - -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _LARGE_FILES 1 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi - - -fi - -if test "x$ac_cv_sys_file_offset_bits" = x || echo "$ac_cv_sys_file_offset_bits" | $GREP '[^0-9]' > /dev/null; then - largefile_sensitive=no - BUILD_NO_LARGENAME=1 - -$as_echo "#define BUILD_NO_LARGENAME 1" >>confdefs.h - -else - largefile_sensitive=yes - BUILD_NO_LARGENAME=0 -fi -# Add dual-mode wrapper code. - if test x"$largefile_sensitive" = xyes ; then - HAVE_LFS_WRAP_TRUE= - HAVE_LFS_WRAP_FALSE='#' -else - HAVE_LFS_WRAP_TRUE='#' - HAVE_LFS_WRAP_FALSE= -fi - -# Any non-sensitive platform does not bother with off_t-based function renaming. # Using the lower level macros instead of AC_TYPE_* for compatibility with not freshest autoconf. +# Re-think this list. Some things just should be a given. We assume C99 now. +# Rather think about assumptions like int64_t >= ptrdiff_t. ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned long -_ACEOF +printf "%s\n" "#define size_t unsigned long" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" -if test "x$ac_cv_type_uintptr_t" = xyes; then : +if test "x$ac_cv_type_uintptr_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define uintptr_t unsigned long -_ACEOF +printf "%s\n" "#define uintptr_t unsigned long" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes; then : +if test "x$ac_cv_type_ssize_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ssize_t long -_ACEOF +printf "%s\n" "#define ssize_t long" >>confdefs.h fi -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : +ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF +printf "%s\n" "#define ptrdiff_t long" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" -if test "x$ac_cv_type_int32_t" = xyes; then : +if test "x$ac_cv_type_int32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define int32_t int -_ACEOF +printf "%s\n" "#define int32_t int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" -if test "x$ac_cv_type_int64_t" = xyes; then : +if test "x$ac_cv_type_int64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define int64_t long long -_ACEOF +printf "%s\n" "#define int64_t long long" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" -if test "x$ac_cv_type_uint32_t" = xyes; then : +if test "x$ac_cv_type_uint32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define uint32_t unsigned int -_ACEOF +printf "%s\n" "#define uint32_t unsigned int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" -if test "x$ac_cv_type_int16_t" = xyes; then : +if test "x$ac_cv_type_int16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define int16_t short -_ACEOF +printf "%s\n" "#define int16_t short" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" -if test "x$ac_cv_type_uint16_t" = xyes; then : +if test "x$ac_cv_type_uint16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define uint16_t unsigned short -_ACEOF +printf "%s\n" "#define uint16_t unsigned short" >>confdefs.h fi @@ -15729,17 +17298,19 @@ fi # 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -$as_echo_n "checking size of size_t... " >&6; } -if ${ac_cv_sizeof_size_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +printf %s "checking size of size_t... " >&6; } +if test ${ac_cv_sizeof_size_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" +then : -else +else $as_nop if test "$ac_cv_type_size_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 compute sizeof (size_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -15748,31 +17319,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -$as_echo "$ac_cv_sizeof_size_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t -_ACEOF +printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 -$as_echo_n "checking size of ssize_t... " >&6; } -if ${ac_cv_sizeof_ssize_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 +printf %s "checking size of ssize_t... " >&6; } +if test ${ac_cv_sizeof_ssize_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default" +then : -else +else $as_nop if test "$ac_cv_type_ssize_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 compute sizeof (ssize_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -15781,97 +17352,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5 -$as_echo "$ac_cv_sizeof_ssize_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5 +printf "%s\n" "$ac_cv_sizeof_ssize_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t -_ACEOF +printf "%s\n" "#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 -$as_echo_n "checking size of off_t... " >&6; } -if ${ac_cv_sizeof_off_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int32_t" >&5 +printf %s "checking size of int32_t... " >&6; } +if test ${ac_cv_sizeof_int32_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int32_t))" "ac_cv_sizeof_int32_t" "$ac_includes_default" +then : -else - if test "$ac_cv_type_off_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (off_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_off_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 -$as_echo "$ac_cv_sizeof_off_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF_T $ac_cv_sizeof_off_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off64_t" >&5 -$as_echo_n "checking size of off64_t... " >&6; } -if ${ac_cv_sizeof_off64_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off64_t))" "ac_cv_sizeof_off64_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_off64_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (off64_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_off64_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off64_t" >&5 -$as_echo "$ac_cv_sizeof_off64_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF64_T $ac_cv_sizeof_off64_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int32_t" >&5 -$as_echo_n "checking size of int32_t... " >&6; } -if ${ac_cv_sizeof_int32_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int32_t))" "ac_cv_sizeof_int32_t" "$ac_includes_default"; then : - -else +else $as_nop if test "$ac_cv_type_int32_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 compute sizeof (int32_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -15880,31 +17385,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int32_t" >&5 -$as_echo "$ac_cv_sizeof_int32_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int32_t" >&5 +printf "%s\n" "$ac_cv_sizeof_int32_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT32_T $ac_cv_sizeof_int32_t -_ACEOF +printf "%s\n" "#define SIZEOF_INT32_T $ac_cv_sizeof_int32_t" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +printf %s "checking size of long... " >&6; } +if test ${ac_cv_sizeof_long+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +then : -else +else $as_nop if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else @@ -15913,111 +17418,243 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF +printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h -if test "x$largefile_sensitive" = xyes; then - lfs_alias_type=long - lfs_alias_size=$ac_cv_sizeof_long -elif test "x$android_build" = xyes; then - lfs_alias_type=off64_t - lfs_alias_size=$ac_cv_sizeof_off64_t -else - lfs_alias_type=off_t - lfs_alias_size=$ac_cv_sizeof_off_t -fi - -if test "x$lfs_alias_size" = "x"; then - as_fn_error $? "Cannot determine sizeof(lfs_alias_t)?" "$LINENO" 5 -else - LFS_ALIAS_BITS=`expr "$lfs_alias_size" "*" "8"` - -cat >>confdefs.h <<_ACEOF -#define lfs_alias_t $lfs_alias_type -_ACEOF +# We do not need to know if off_t actually changes size using +# _FILE_OFFSET_BITS, only need to know what size it has. -cat >>confdefs.h <<_ACEOF -#define LFS_ALIAS_BITS $LFS_ALIAS_BITS -_ACEOF - -fi - - - -lfs_alias=enabled -# Check whether --enable-lfs-alias was given. -if test "${enable_lfs_alias+set}" = set; then : - enableval=$enable_lfs_alias; - if test "x$enableval" = xno; then - lfs_alias="disabled" +portable_api=no +# Check whether --enable-portable was given. +if test ${enable_portable+y} +then : + enableval=$enable_portable; + if test "x$enableval" = xyes; then + portable_api="yes" fi +fi + +if test "x$portable_api" = xyes; then + +printf "%s\n" "#define PORTABLE_API 1" >>confdefs.h + +fi + + if test x"$portable_api" = xno ; then + HAVE_LFS_WRAP_TRUE= + HAVE_LFS_WRAP_FALSE='#' else + HAVE_LFS_WRAP_TRUE='#' + HAVE_LFS_WRAP_FALSE= +fi - case $host in - *-cygwin*) - lfs_alias="disabled" - { $as_echo "$as_me:${as_lineno-$LINENO}: lfs-alias disabled for Cygwin, use --enable-lfs-alias explicitly to enable, only if you know what you are doing" >&5 -$as_echo "$as_me: lfs-alias disabled for Cygwin, use --enable-lfs-alias explicitly to enable, only if you know what you are doing" >&6;} - ;; - esac +# Check for shape-shifting off_t just for the mpg123 client application. +# At least at first, mpg123 itself will excercise the wrappers, otherwise +# we don't know they work. +# Do not use AC_CHECK_SIZEOF twice to avoid redefinition of SIZEOF_OFF_T +# in further tests via confdefs.h. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking switched off_t size" >&5 +printf %s "checking switched off_t size... " >&6; } +if ac_fn_c_compute_int "$LINENO" "sizeof(off_t)" "switched_off_size" " +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#include +" +then : + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $switched_off_size" >&5 +printf "%s\n" "$switched_off_size" >&6; } +# If you have predefined _FILE_OFFSET_BITS, I will treat that as a system +# property. +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 +printf %s "checking size of off_t... " >&6; } +if test ${ac_cv_sizeof_off_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" " +#include + +" +then : + +else $as_nop + if test "$ac_cv_type_off_t" = 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 (off_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_off_t=0 + fi +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 +printf "%s\n" "$ac_cv_sizeof_off_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h + + + +# Some paranoia about the limited choices we accept. +# 32 or 64 bit offsets, an the switched one better not be smaller. +if test "x$ac_cv_sizeof_off_t" = x0; then + as_fn_error $? "Not even off_t found. I need some POSIX." "$LINENO" 5 +fi +if test "x$ac_cv_sizeof_off_t" != x8 && + test "x$ac_cv_sizeof_off_t" != x4; then + as_fn_error $? "unexpected size of off_t" "$LINENO" 5 +fi + +if test "x$ac_cv_sizeof_off_t" != "x$switched_off_size"; then + if test "x$switched_off_size" != x8; then + as_fn_error $? "bad switched off_t size" "$LINENO" 5 + fi + lfs_sensitive=yes + +printf "%s\n" "#define LFS_SENSITIVE 1" >>confdefs.h + +else + lfs_sensitive=no +fi + +use_largefile=auto + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if native off_t is already 64 bits" >&5 +printf %s "checking if native off_t is already 64 bits... " >&6; } +if test "x$ac_cv_sizeof_off_t" = x8; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + use_largefile=no +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; if test "x$enableval" = xno; then + use_largefile=no + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want to enable alias wrappers for largefile" >&5 -$as_echo_n "checking if we want to enable alias wrappers for largefile... " >&6; } -if test "x$lfs_alias" = "xenabled"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - if test x"$lfs_alias" = xenabled ; then - HAVE_LFS_ALIAS_TRUE= - HAVE_LFS_ALIAS_FALSE='#' -else - HAVE_LFS_ALIAS_TRUE='#' - HAVE_LFS_ALIAS_FALSE= +# Large file support without the magic. Check for the API explicitly. +# The shape-shifting off_t has to be avoided for the library builds. +# The mpg123 application might still use it to check if the API works. +# Or we limit it to portable, off_t-less API at some point. + +if test x"$use_largefile" != xno; then + +# Expect usual_LARGEFILE64_SOURCE mechanics with off64_t and lseek64 present. +ac_fn_c_check_func "$LINENO" "lseek64" "ac_cv_func_lseek64" +if test "x$ac_cv_func_lseek64" = xyes +then : + printf "%s\n" "#define HAVE_LSEEK64 1" >>confdefs.h + fi +ac_fn_c_check_type "$LINENO" "off64_t" "ac_cv_type_off64_t" " +#define _LARGEFILE64_SOURCE +#include +#include + +" +if test "x$ac_cv_type_off64_t" = xyes +then : + have_off64_t=yes +else $as_nop + have_off64_t=no +fi + +if test "x$have_off64_t" = xyes && test "x$ac_cv_func_lseek64" = xyes; then + use_largefile=yes + +printf "%s\n" "#define LFS_LARGEFILE_64 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have O_LARGEFILE" >&5 +printf %s "checking if we have O_LARGEFILE... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _LARGEFILE64_SOURCE + #include + #include + #include + #include + + int foo() + { + return open("foo", O_RDONLY|O_LARGEFILE); + } + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + have_o_largefile=yes +else $as_nop + have_o_largefile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_o_largefile" >&5 +printf "%s\n" "$have_o_largefile" >&6; } + if test x"$have_o_largefile" = xno; then + +printf "%s\n" "#define O_LARGEFILE 0" >>confdefs.h + + fi +else + use_largefile=no +fi + +fi # use_largefile auto or yes -for ac_func in mmap + + for ac_func in mmap do : ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" -if test "x$ac_cv_func_mmap" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MMAP 1 -_ACEOF +if test "x$ac_cv_func_mmap" = xyes +then : + printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h have_mmap=yes -else +else $as_nop have_mmap=no fi -done +done if test "x$have_mmap" = "xno"; then - for ac_header in sys/ipc.h sys/shm.h + for ac_header in sys/ipc.h sys/shm.h do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop buffer=disabled fi @@ -16025,26 +17662,28 @@ done for ac_func in shmget shmat shmdt shmctl do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop buffer=disabled fi -done +done fi # Check if system supports termios -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking POSIX termios" >&5 -$as_echo_n "checking POSIX termios... " >&6; } -if ${ac_cv_sys_posix_termios+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking POSIX termios" >&5 +printf %s "checking POSIX termios... " >&6; } +if test ${ac_cv_sys_posix_termios+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -16052,7 +17691,7 @@ else #include int -main () +main (void) { /* SunOS 4.0.3 has termios.h but not the library calls. */ tcgetattr(0, 0); @@ -16060,20 +17699,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_sys_posix_termios=yes -else +else $as_nop ac_cv_sys_posix_termios=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_posix_termios" >&5 -$as_echo "$ac_cv_sys_posix_termios" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_posix_termios" >&5 +printf "%s\n" "$ac_cv_sys_posix_termios" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have wincon.h" >&5 -$as_echo_n "checking if we have wincon.h... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have wincon.h" >&5 +printf %s "checking if we have wincon.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16082,28 +17722,28 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext void *v = &ReadConsoleInput; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_wincon_h=yes -else +else $as_nop ac_cv_header_wincon_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_wincon_h" >&5 -$as_echo "$ac_cv_header_wincon_h" >&6; } -if test "x$ac_cv_header_wincon_h" = "xyes"; then : +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_wincon_h" >&5 +printf "%s\n" "$ac_cv_header_wincon_h" >&6; } +if test "x$ac_cv_header_wincon_h" = "xyes" +then : -else +else $as_nop -$as_echo "#define HAVE_WINCON_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_WINCON_H 1" >>confdefs.h fi term_type=none if test "x$ac_cv_sys_posix_termios" = "xyes"; then -cat >>confdefs.h <<_ACEOF -#define HAVE_TERMIOS 1 -_ACEOF +printf "%s\n" "#define HAVE_TERMIOS 1" >>confdefs.h term_type=posix elif test "x$ac_cv_header_windows_h" = "xyes" && @@ -16111,126 +17751,159 @@ elif test "x$ac_cv_header_windows_h" = "xyes" && term_type=win32 fi -for ac_func in random setenv unsetenv -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random" +if test "x$ac_cv_func_random" = xyes +then : + printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h + +fi +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 + +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 fi -done # Check for sched_setscheduler -for ac_func in sched_setscheduler setuid getuid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "sched_setscheduler" "ac_cv_func_sched_setscheduler" +if test "x$ac_cv_func_sched_setscheduler" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_SETSCHEDULER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setuid" "ac_cv_func_setuid" +if test "x$ac_cv_func_setuid" = xyes +then : + printf "%s\n" "#define HAVE_SETUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid" +if test "x$ac_cv_func_getuid" = xyes +then : + printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h fi -done # Check for setpriority -for ac_func in setpriority -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" +if test "x$ac_cv_func_setpriority" = xyes +then : + printf "%s\n" "#define HAVE_SETPRIORITY 1" >>confdefs.h fi -done -for ac_func in strerror -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h fi -done - - -for ac_func in setlocale nl_langinfo mbstowcs wcstombs wcswidth iswprint -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "strerror_l" "ac_cv_func_strerror_l" +if test "x$ac_cv_func_strerror_l" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR_L 1" >>confdefs.h fi -done - - -for ac_func in atoll -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "uselocale" "ac_cv_func_uselocale" +if test "x$ac_cv_func_uselocale" = xyes +then : + printf "%s\n" "#define HAVE_USELOCALE 1" >>confdefs.h fi -done -for ac_func in mkfifo +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" +if test "x$ac_cv_func_nl_langinfo" = xyes +then : + printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mbstowcs" "ac_cv_func_mbstowcs" +if test "x$ac_cv_func_mbstowcs" = xyes +then : + printf "%s\n" "#define HAVE_MBSTOWCS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcstombs" "ac_cv_func_wcstombs" +if test "x$ac_cv_func_wcstombs" = xyes +then : + printf "%s\n" "#define HAVE_WCSTOMBS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" +if test "x$ac_cv_func_wcswidth" = xyes +then : + printf "%s\n" "#define HAVE_WCSWIDTH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "iswprint" "ac_cv_func_iswprint" +if test "x$ac_cv_func_iswprint" = xyes +then : + printf "%s\n" "#define HAVE_ISWPRINT 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "atoll" "ac_cv_func_atoll" +if test "x$ac_cv_func_atoll" = xyes +then : + printf "%s\n" "#define HAVE_ATOLL 1" >>confdefs.h + +fi + + + + for ac_func in mkfifo do : ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" -if test "x$ac_cv_func_mkfifo" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MKFIFO 1 -_ACEOF +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h have_mkfifo=yes -else +else $as_nop have_mkfifo=no fi + done -for ac_func in fork execvp + for ac_func in fork execvp do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF have_fork=yes -else +else $as_nop have_fork=no; break fi + done - -for ac_func in ctermid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "ctermid" "ac_cv_func_ctermid" +if test "x$ac_cv_func_ctermid" = xyes +then : + printf "%s\n" "#define HAVE_CTERMID 1" >>confdefs.h fi -done #AC_CHECK_FUNCS( _setmode setmode ) @@ -16247,12 +17920,13 @@ int main() return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -$as_echo "#define HAVE__SETMODE 1" >>confdefs.h +printf "%s\n" "#define HAVE__SETMODE 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -16268,43 +17942,74 @@ int main() return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -$as_echo "#define HAVE_SETMODE 1" >>confdefs.h +printf "%s\n" "#define HAVE_SETMODE 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # locale headers -for ac_header in locale.h langinfo.h wchar.h wctype.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes +then : + printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h + +fi # Headers for network (http) stuff network_internal=unknown -for ac_header in netdb.h sys/param.h sys/socket.h netinet/in.h arpa/inet.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes +then : + printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h + +fi if test "x$ac_cv_header_netdb_h" = "xyes" && test "x$ac_cv_header_sys_param_h" = "xyes" && @@ -16317,11 +18022,12 @@ else have_network=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 -$as_echo_n "checking for library containing gethostbyname... " >&6; } -if ${ac_cv_search_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 +printf %s "checking for library containing gethostbyname... " >&6; } +if test ${ac_cv_search_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16329,55 +18035,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char gethostbyname (); int -main () +main (void) { return gethostbyname (); ; return 0; } _ACEOF -for ac_lib in '' nsl socket network; do +for ac_lib in '' nsl socket network +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_gethostbyname=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gethostbyname+:} false; then : + if test ${ac_cv_search_gethostbyname+y} +then : break fi done -if ${ac_cv_search_gethostbyname+:} false; then : +if test ${ac_cv_search_gethostbyname+y} +then : -else +else $as_nop ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 -$as_echo "$ac_cv_search_gethostbyname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 +printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 -$as_echo_n "checking for library containing socket... " >&6; } -if ${ac_cv_search_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 +printf %s "checking for library containing socket... " >&6; } +if test ${ac_cv_search_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16385,94 +18094,74 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char socket (); int -main () +main (void) { return socket (); ; return 0; } _ACEOF -for ac_lib in '' socket; do +for ac_lib in '' socket +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_socket=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_socket+:} false; then : + if test ${ac_cv_search_socket+y} +then : break fi done -if ${ac_cv_search_socket+:} false; then : +if test ${ac_cv_search_socket+y} +then : -else +else $as_nop ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 -$as_echo "$ac_cv_search_socket" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 +printf "%s\n" "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -for ac_func in getaddrinfo + + for ac_func in getaddrinfo do : ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" -if test "x$ac_cv_func_getaddrinfo" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETADDRINFO 1 -_ACEOF +if test "x$ac_cv_func_getaddrinfo" = xyes +then : + printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h have_ipv6=yes -else +else $as_nop have_ipv6=no fi + done - -# Substitutions for the installable mpg123.h header -if test "x$ac_cv_header_stdio_h" = "xyes"; then - INCLUDE_STDIO_H="#include " -else - INCLUDE_STDIO_H="/* #include is not available on this system */" -fi - - -if test "x$ac_cv_header_stdlib_h" = "xyes"; then - INCLUDE_STDLIB_H="#include " -else - INCLUDE_STDLIB_H="/* #include is not available on this system */" -fi - - -if test "x$ac_cv_header_sys_types_h" = "xyes"; then - INCLUDE_SYS_TYPE_H="#include " -else - INCLUDE_SYS_TYPE_H="/* #include is not available on this system */" -fi - - - # Checks for maths libraries. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5 -$as_echo_n "checking for sqrt in -lm... " >&6; } -if ${ac_cv_lib_m_sqrt+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -16481,43 +18170,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char sqrt (); int -main () +main (void) { return sqrt (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_m_sqrt=yes -else +else $as_nop ac_cv_lib_m_sqrt=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5 -$as_echo "$ac_cv_lib_m_sqrt" >&6; } -if test "x$ac_cv_lib_m_sqrt" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF +{ 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 LIBS="-lm $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf in -lmx" >&5 -$as_echo_n "checking for powf in -lmx... " >&6; } -if ${ac_cv_lib_mx_powf+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for powf in -lmx" >&5 +printf %s "checking for powf in -lmx... " >&6; } +if test ${ac_cv_lib_mx_powf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmx $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -16526,33 +18213,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char powf (); int -main () +main (void) { return powf (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_mx_powf=yes -else +else $as_nop ac_cv_lib_mx_powf=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mx_powf" >&5 -$as_echo "$ac_cv_lib_mx_powf" >&6; } -if test "x$ac_cv_lib_mx_powf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBMX 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mx_powf" >&5 +printf "%s\n" "$ac_cv_lib_mx_powf" >&6; } +if test "x$ac_cv_lib_mx_powf" = xyes +then : + printf "%s\n" "#define HAVE_LIBMX 1" >>confdefs.h LIBS="-lmx $LIBS" @@ -16570,18 +18254,13 @@ fi #fi # Optionally use platform macros for byte swapping. -for ac_header in byteswap.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "byteswap.h" "ac_cv_header_byteswap_h" "$ac_includes_default" -if test "x$ac_cv_header_byteswap_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_BYTESWAP_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "byteswap.h" "ac_cv_header_byteswap_h" "$ac_includes_default" +if test "x$ac_cv_header_byteswap_h" = xyes +then : + printf "%s\n" "#define HAVE_BYTESWAP_H 1" >>confdefs.h fi -done - # do not assume gcc here, so no flags by default @@ -16592,18 +18271,13 @@ LIBS="$LIBS" # Remove that if it is settled that tcsetattr on OS/2 is unsalvageable anyway. # The only user of os2.h is the output module. -for ac_header in os2.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "os2.h" "ac_cv_header_os2_h" "$ac_includes_default" -if test "x$ac_cv_header_os2_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OS2_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "os2.h" "ac_cv_header_os2_h" "$ac_includes_default" +if test "x$ac_cv_header_os2_h" = xyes +then : + printf "%s\n" "#define HAVE_OS2_H 1" >>confdefs.h fi -done - # If debugging is enabled, just enable debugging symbols. # All other stuff enters nagging territory. @@ -16620,7 +18294,7 @@ fi case $host in i?86-*) -$as_echo "#define ABI_ALIGN_FUN 1" >>confdefs.h +printf "%s\n" "#define ABI_ALIGN_FUN 1" >>confdefs.h ;; esac @@ -16696,16 +18370,16 @@ case $cpu_type in ADD_CFLAGS="$ADD_CFLAGS -maltivec" ADD_CPPFLAGS="$ADD_CPPFLAGS -DREAL_IS_FLOAT -DOPT_ALTIVEC" more_sources="$s_altivec" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -faltivec" >&5 -$as_echo_n "checking if $CC accepts -faltivec... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -faltivec" >&5 +printf %s "checking if $CC accepts -faltivec... " >&6; } touch conftest.c if $CC -faltivec -c -o conftest.o conftest.c >/dev/null 2>&1; then ADD_CFLAGS="$ADD_CFLAGS -faltivec" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f conftest.o conftest.c ;; @@ -16840,7 +18514,7 @@ if test "x$use_yasm_for_avx" = "xyes"; then ;; esac -$as_echo "#define USE_YASM_FOR_AVX 1" >>confdefs.h +printf "%s\n" "#define USE_YASM_FOR_AVX 1" >>confdefs.h fi if test "x$use_yasm_for_avx" = xyes; then @@ -16854,24 +18528,25 @@ fi # Check if we want feature report function. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want feature report function" >&5 -$as_echo_n "checking if we want feature report function... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we want feature report function" >&5 +printf %s "checking if we want feature report function... " >&6; } feature_report=enabled # Check whether --enable-feature_report was given. -if test "${enable_feature_report+set}" = set; then : +if test ${enable_feature_report+y} +then : enableval=$enable_feature_report; if test "x$enableval" = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } feature_report=disabled else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi @@ -17088,7 +18763,7 @@ fi if test x"$ccalign" = xyes; then -$as_echo "#define CCALIGN 1" >>confdefs.h +printf "%s\n" "#define CCALIGN 1" >>confdefs.h fi @@ -17128,11 +18803,12 @@ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. @@ -17142,11 +18818,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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 break 2 fi done @@ -17158,11 +18838,11 @@ esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -17171,11 +18851,12 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + printf %s "(cached) " >&6 +else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. @@ -17185,11 +18866,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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 break 2 fi done @@ -17201,11 +18886,11 @@ esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -17213,8 +18898,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -17226,14 +18911,14 @@ fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi @@ -17243,26 +18928,32 @@ for m in $check_modules do case "$m" in dummy) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you are too dumbing dumb for the dummy" >&5 -$as_echo_n "checking if you are too dumbing dumb for the dummy... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if you are too dumbing dumb for the dummy" >&5 +printf %s "checking if you are too dumbing dumb for the dummy... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } output_modules="$output_modules dummy" HAVE_DUMMY=yes ;; oss) - for ac_header in sys/soundcard.h linux/soundcard.h machine/soundcard.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_soundcard_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOUNDCARD_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "linux/soundcard.h" "ac_cv_header_linux_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_soundcard_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_SOUNDCARD_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "machine/soundcard.h" "ac_cv_header_machine_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_machine_soundcard_h" = xyes +then : + printf "%s\n" "#define HAVE_MACHINE_SOUNDCARD_H 1" >>confdefs.h + +fi if test "x${ac_cv_header_sys_soundcard_h}" = "xyes" \ -o "x${ac_cv_header_linux_soundcard_h}" = "xyes" \ @@ -17277,11 +18968,12 @@ done tinyalsa) TINYALSA_LIBS="-ltinyalsa" # Check for ALSA - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcm_open in -ltinyalsa" >&5 -$as_echo_n "checking for pcm_open in -ltinyalsa... " >&6; } -if ${ac_cv_lib_tinyalsa_pcm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pcm_open in -ltinyalsa" >&5 +printf %s "checking for pcm_open in -ltinyalsa... " >&6; } +if test ${ac_cv_lib_tinyalsa_pcm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltinyalsa $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17290,41 +18982,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pcm_open (); int -main () +main (void) { return pcm_open (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_tinyalsa_pcm_open=yes -else +else $as_nop ac_cv_lib_tinyalsa_pcm_open=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinyalsa_pcm_open" >&5 -$as_echo "$ac_cv_lib_tinyalsa_pcm_open" >&6; } -if test "x$ac_cv_lib_tinyalsa_pcm_open" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "tinyalsa/asoundlib.h" "ac_cv_header_tinyalsa_asoundlib_h" "$ac_includes_default" -if test "x$ac_cv_header_tinyalsa_asoundlib_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinyalsa_pcm_open" >&5 +printf "%s\n" "$ac_cv_lib_tinyalsa_pcm_open" >&6; } +if test "x$ac_cv_lib_tinyalsa_pcm_open" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "tinyalsa/asoundlib.h" "ac_cv_header_tinyalsa_asoundlib_h" "$ac_includes_default" +if test "x$ac_cv_header_tinyalsa_asoundlib_h" = xyes +then : output_modules="$output_modules tinyalsa" HAVE_TINYALSA="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found TINYALSA library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found TINYALSA library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found TINYALSA library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found TINYALSA library but NOT header files on your system" >&2;} fi - fi if test "x$HAVE_TINYALSA" != xyes; then @@ -17340,11 +19031,12 @@ fi ALSA_LIBS="-lasound" # Check for ALSA - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 -$as_echo_n "checking for snd_pcm_open in -lasound... " >&6; } -if ${ac_cv_lib_asound_snd_pcm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 +printf %s "checking for snd_pcm_open in -lasound... " >&6; } +if test ${ac_cv_lib_asound_snd_pcm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lasound $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17353,41 +19045,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char snd_pcm_open (); int -main () +main (void) { return snd_pcm_open (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_asound_snd_pcm_open=yes -else +else $as_nop ac_cv_lib_asound_snd_pcm_open=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 -$as_echo "$ac_cv_lib_asound_snd_pcm_open" >&6; } -if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "alsa/asoundlib.h" "ac_cv_header_alsa_asoundlib_h" "$ac_includes_default" -if test "x$ac_cv_header_alsa_asoundlib_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 +printf "%s\n" "$ac_cv_lib_asound_snd_pcm_open" >&6; } +if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "alsa/asoundlib.h" "ac_cv_header_alsa_asoundlib_h" "$ac_includes_default" +if test "x$ac_cv_header_alsa_asoundlib_h" = xyes +then : output_modules="$output_modules alsa" HAVE_ALSA="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found ALSA library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found ALSA library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found ALSA library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found ALSA library but NOT header files on your system" >&2;} fi - fi if test "x$HAVE_ALSA" != xyes; then @@ -17403,11 +19094,12 @@ fi QSA_LIBS="-lasound" # Check for QSA - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 -$as_echo_n "checking for snd_pcm_open in -lasound... " >&6; } -if ${ac_cv_lib_asound_snd_pcm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for snd_pcm_open in -lasound" >&5 +printf %s "checking for snd_pcm_open in -lasound... " >&6; } +if test ${ac_cv_lib_asound_snd_pcm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lasound $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17416,41 +19108,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char snd_pcm_open (); int -main () +main (void) { return snd_pcm_open (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_asound_snd_pcm_open=yes -else +else $as_nop ac_cv_lib_asound_snd_pcm_open=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 -$as_echo "$ac_cv_lib_asound_snd_pcm_open" >&6; } -if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "sys/asoundlib.h" "ac_cv_header_sys_asoundlib_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_asoundlib_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_pcm_open" >&5 +printf "%s\n" "$ac_cv_lib_asound_snd_pcm_open" >&6; } +if test "x$ac_cv_lib_asound_snd_pcm_open" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "sys/asoundlib.h" "ac_cv_header_sys_asoundlib_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_asoundlib_h" = xyes +then : output_modules="$output_modules qsa" HAVE_QSA="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found QSA library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found QSA library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found QSA library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found QSA library but NOT header files on your system" >&2;} fi - fi if test "x$HAVE_QSA" != xyes; then @@ -17461,11 +19152,12 @@ fi ;; jack) # JACK module uses semaphores, hence -lpthread. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sem_post in -lpthread" >&5 -$as_echo_n "checking for sem_post in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_sem_post+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sem_post in -lpthread" >&5 +printf %s "checking for sem_post in -lpthread... " >&6; } +if test ${ac_cv_lib_pthread_sem_post+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17474,43 +19166,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char sem_post (); int -main () +main (void) { return sem_post (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_pthread_sem_post=yes -else +else $as_nop ac_cv_lib_pthread_sem_post=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_sem_post" >&5 -$as_echo "$ac_cv_lib_pthread_sem_post" >&6; } -if test "x$ac_cv_lib_pthread_sem_post" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_sem_post" >&5 +printf "%s\n" "$ac_cv_lib_pthread_sem_post" >&6; } +if test "x$ac_cv_lib_pthread_sem_post" = xyes +then : pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 -$as_echo_n "checking for JACK... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for jack" >&5 +printf %s "checking for jack... " >&6; } if test -n "$JACK_CFLAGS"; then pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack") 2>&5 ac_status=$? - $as_echo "$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_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17524,10 +19215,10 @@ if test -n "$JACK_LIBS"; then pkg_cv_JACK_LIBS="$JACK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack") 2>&5 ac_status=$? - $as_echo "$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_JACK_LIBS=`$PKG_CONFIG --libs "jack" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17541,8 +19232,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -17559,14 +19250,14 @@ fi HAVE_JACK="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_JACK="no" check_failed=yes else JACK_CFLAGS=$pkg_cv_JACK_CFLAGS JACK_LIBS=$pkg_cv_JACK_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules jack" HAVE_JACK="yes" @@ -17574,7 +19265,7 @@ $as_echo "yes" >&6; } fi -else +else $as_nop HAVE_JACK=no check_failed=yes fi @@ -17583,17 +19274,17 @@ fi pulse) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PULSE" >&5 -$as_echo_n "checking for PULSE... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpulse-simple" >&5 +printf %s "checking for libpulse-simple... " >&6; } if test -n "$PULSE_CFLAGS"; then pkg_cv_PULSE_CFLAGS="$PULSE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse-simple\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse-simple\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpulse-simple") 2>&5 ac_status=$? - $as_echo "$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_PULSE_CFLAGS=`$PKG_CONFIG --cflags "libpulse-simple" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17607,10 +19298,10 @@ if test -n "$PULSE_LIBS"; then pkg_cv_PULSE_LIBS="$PULSE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse-simple\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse-simple\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpulse-simple") 2>&5 ac_status=$? - $as_echo "$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_PULSE_LIBS=`$PKG_CONFIG --libs "libpulse-simple" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17624,8 +19315,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -17642,31 +19333,31 @@ fi HAVE_PULSE="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_PULSE="no" check_failed=yes else PULSE_CFLAGS=$pkg_cv_PULSE_CFLAGS PULSE_LIBS=$pkg_cv_PULSE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules pulse" HAVE_PULSE="yes" fi ;; esd) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ESD" >&5 -$as_echo_n "checking for ESD... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for esound" >&5 +printf %s "checking for esound... " >&6; } if test -n "$ESD_CFLAGS"; then pkg_cv_ESD_CFLAGS="$ESD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"esound\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"esound\""; } >&5 ($PKG_CONFIG --exists --print-errors "esound") 2>&5 ac_status=$? - $as_echo "$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_ESD_CFLAGS=`$PKG_CONFIG --cflags "esound" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17680,10 +19371,10 @@ if test -n "$ESD_LIBS"; then pkg_cv_ESD_LIBS="$ESD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"esound\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"esound\""; } >&5 ($PKG_CONFIG --exists --print-errors "esound") 2>&5 ac_status=$? - $as_echo "$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_ESD_LIBS=`$PKG_CONFIG --libs "esound" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17697,8 +19388,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -17715,14 +19406,14 @@ fi HAVE_ESD="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_ESD="no" check_failed=yes else ESD_CFLAGS=$pkg_cv_ESD_CFLAGS ESD_LIBS=$pkg_cv_ESD_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules esd" HAVE_ESD="yes" fi ;; @@ -17734,11 +19425,12 @@ fi *-*-mingw32) # We tested portaudio with MME if test "x$HAVE_PORTAUDIO" != "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pa_Initialize in -lportaudio" >&5 -$as_echo_n "checking for Pa_Initialize in -lportaudio... " >&6; } -if ${ac_cv_lib_portaudio_Pa_Initialize+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Pa_Initialize in -lportaudio" >&5 +printf %s "checking for Pa_Initialize in -lportaudio... " >&6; } +if test ${ac_cv_lib_portaudio_Pa_Initialize+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lportaudio -lwinmm $LIBS" @@ -17748,53 +19440,53 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char Pa_Initialize (); int -main () +main (void) { return Pa_Initialize (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_portaudio_Pa_Initialize=yes -else +else $as_nop ac_cv_lib_portaudio_Pa_Initialize=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5 -$as_echo "$ac_cv_lib_portaudio_Pa_Initialize" >&6; } -if test "x$ac_cv_lib_portaudio_Pa_Initialize" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "portaudio.h" "ac_cv_header_portaudio_h" "$ac_includes_default" -if test "x$ac_cv_header_portaudio_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5 +printf "%s\n" "$ac_cv_lib_portaudio_Pa_Initialize" >&6; } +if test "x$ac_cv_lib_portaudio_Pa_Initialize" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "portaudio.h" "ac_cv_header_portaudio_h" "$ac_includes_default" +if test "x$ac_cv_header_portaudio_h" = xyes +then : output_modules="$output_modules portaudio" HAVE_PORTAUDIO_WINMM="yes" HAVE_PORTAUDIO="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found PortAudio library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found PortAudio library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found PortAudio library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found PortAudio library but NOT header files on your system" >&2;} fi - PORTAUDIO_LIBS="$PORTAUDIO_LIBS -lwinmm" -else +else $as_nop HAVE_PORTAUDIO="no" fi fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pa_Initialize in -lportaudio" >&5 -$as_echo_n "checking for Pa_Initialize in -lportaudio... " >&6; } -if ${ac_cv_lib_portaudio_Pa_Initialize+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Pa_Initialize in -lportaudio" >&5 +printf %s "checking for Pa_Initialize in -lportaudio... " >&6; } +if test ${ac_cv_lib_portaudio_Pa_Initialize+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lportaudio $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17803,41 +19495,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char Pa_Initialize (); int -main () +main (void) { return Pa_Initialize (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_portaudio_Pa_Initialize=yes -else +else $as_nop ac_cv_lib_portaudio_Pa_Initialize=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5 -$as_echo "$ac_cv_lib_portaudio_Pa_Initialize" >&6; } -if test "x$ac_cv_lib_portaudio_Pa_Initialize" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "portaudio.h" "ac_cv_header_portaudio_h" "$ac_includes_default" -if test "x$ac_cv_header_portaudio_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5 +printf "%s\n" "$ac_cv_lib_portaudio_Pa_Initialize" >&6; } +if test "x$ac_cv_lib_portaudio_Pa_Initialize" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "portaudio.h" "ac_cv_header_portaudio_h" "$ac_includes_default" +if test "x$ac_cv_header_portaudio_h" = xyes +then : output_modules="$output_modules portaudio" HAVE_PORTAUDIO="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found PortAudio library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found PortAudio library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found PortAudio library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found PortAudio library but NOT header files on your system" >&2;} fi - fi ;; @@ -17846,11 +19537,12 @@ fi check_failed=yes else # See if we have v19 or v18 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pa_GetVersion in -lportaudio" >&5 -$as_echo_n "checking for Pa_GetVersion in -lportaudio... " >&6; } -if ${ac_cv_lib_portaudio_Pa_GetVersion+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Pa_GetVersion in -lportaudio" >&5 +printf %s "checking for Pa_GetVersion in -lportaudio... " >&6; } +if test ${ac_cv_lib_portaudio_Pa_GetVersion+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lportaudio $PORTAUDIO_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17859,34 +19551,33 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char Pa_GetVersion (); int -main () +main (void) { return Pa_GetVersion (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_portaudio_Pa_GetVersion=yes -else +else $as_nop ac_cv_lib_portaudio_Pa_GetVersion=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_GetVersion" >&5 -$as_echo "$ac_cv_lib_portaudio_Pa_GetVersion" >&6; } -if test "x$ac_cv_lib_portaudio_Pa_GetVersion" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portaudio_Pa_GetVersion" >&5 +printf "%s\n" "$ac_cv_lib_portaudio_Pa_GetVersion" >&6; } +if test "x$ac_cv_lib_portaudio_Pa_GetVersion" = xyes +then : : -else +else $as_nop -$as_echo "#define PORTAUDIO18 1" >>confdefs.h +printf "%s\n" "#define PORTAUDIO18 1" >>confdefs.h fi @@ -17895,17 +19586,17 @@ fi sdl) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 -$as_echo_n "checking for SDL... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sdl2" >&5 +printf %s "checking for sdl2... " >&6; } if test -n "$SDL_CFLAGS"; then pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2") 2>&5 ac_status=$? - $as_echo "$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_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17919,10 +19610,10 @@ if test -n "$SDL_LIBS"; then pkg_cv_SDL_LIBS="$SDL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2") 2>&5 ac_status=$? - $as_echo "$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_SDL_LIBS=`$PKG_CONFIG --libs "sdl2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17936,8 +19627,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -17954,31 +19645,31 @@ fi HAVE_SDL="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_SDL="no" check_failed=yes else SDL_CFLAGS=$pkg_cv_SDL_CFLAGS SDL_LIBS=$pkg_cv_SDL_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules sdl" HAVE_SDL="yes" fi if ! test "$HAVE_SDL" = "yes"; then check_failed=no pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 -$as_echo_n "checking for SDL... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sdl" >&5 +printf %s "checking for sdl... " >&6; } if test -n "$SDL_CFLAGS"; then pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? - $as_echo "$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_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17992,10 +19683,10 @@ if test -n "$SDL_LIBS"; then pkg_cv_SDL_LIBS="$SDL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? - $as_echo "$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_SDL_LIBS=`$PKG_CONFIG --libs "sdl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -18009,8 +19700,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -18027,25 +19718,26 @@ fi HAVE_SDL="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_SDL="no" check_failed=yes else SDL_CFLAGS=$pkg_cv_SDL_CFLAGS SDL_LIBS=$pkg_cv_SDL_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules sdl" HAVE_SDL="yes" fi fi ;; nas) NAS_LIBS=-laudio - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AuOpenServer in -laudio" >&5 -$as_echo_n "checking for AuOpenServer in -laudio... " >&6; } -if ${ac_cv_lib_audio_AuOpenServer+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for AuOpenServer in -laudio" >&5 +printf %s "checking for AuOpenServer in -laudio... " >&6; } +if test ${ac_cv_lib_audio_AuOpenServer+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-laudio $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -18054,41 +19746,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char AuOpenServer (); int -main () +main (void) { return AuOpenServer (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_audio_AuOpenServer=yes -else +else $as_nop ac_cv_lib_audio_AuOpenServer=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audio_AuOpenServer" >&5 -$as_echo "$ac_cv_lib_audio_AuOpenServer" >&6; } -if test "x$ac_cv_lib_audio_AuOpenServer" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "audio/audiolib.h" "ac_cv_header_audio_audiolib_h" "$ac_includes_default" -if test "x$ac_cv_header_audio_audiolib_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audio_AuOpenServer" >&5 +printf "%s\n" "$ac_cv_lib_audio_AuOpenServer" >&6; } +if test "x$ac_cv_lib_audio_AuOpenServer" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "audio/audiolib.h" "ac_cv_header_audio_audiolib_h" "$ac_includes_default" +if test "x$ac_cv_header_audio_audiolib_h" = xyes +then : output_modules="$output_modules nas" HAVE_NAS="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found NAS library but NOT header files on your system" >&5 -$as_echo "$as_me: WARNING: Found NAS library but NOT header files on your system" >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Found NAS library but NOT header files on your system" >&5 +printf "%s\n" "$as_me: WARNING: Found NAS library but NOT header files on your system" >&2;} fi - fi if test "x$HAVE_NAS" != xyes; then @@ -18112,8 +19803,8 @@ fi # Check for windows ... and win32 wasapi audio # Does not work... instead just check for header # AC_CHECK_LIB( [avrt], [] ) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have wasapi headers" >&5 -$as_echo_n "checking if we have wasapi headers... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have wasapi headers" >&5 +printf %s "checking if we have wasapi headers... " >&6; } OLD_LIBS=$LIBS LIBS="$LIBS -lole32 -lavrt" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -18137,17 +19828,18 @@ int main(){ } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : HAVE_WIN32_WASAPI=yes -else +else $as_nop HAVE_WIN32_WASAPI=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$OLD_LIBS WIN32_WASAPI_LIBS="-lole32 -lavrt" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_WIN32_WASAPI" >&5 -$as_echo "$HAVE_WIN32_WASAPI" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAVE_WIN32_WASAPI" >&5 +printf "%s\n" "$HAVE_WIN32_WASAPI" >&6; } if test "x$HAVE_WIN32_WASAPI" = xyes; then output_modules="$output_modules win32_wasapi" else @@ -18157,17 +19849,17 @@ $as_echo "$HAVE_WIN32_WASAPI" >&6; } sndio) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDIO" >&5 -$as_echo_n "checking for SNDIO... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sndio" >&5 +printf %s "checking for sndio... " >&6; } if test -n "$SNDIO_CFLAGS"; then pkg_cv_SNDIO_CFLAGS="$SNDIO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndio") 2>&5 ac_status=$? - $as_echo "$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_SNDIO_CFLAGS=`$PKG_CONFIG --cflags "sndio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -18181,10 +19873,10 @@ if test -n "$SNDIO_LIBS"; then pkg_cv_SNDIO_LIBS="$SNDIO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndio\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndio") 2>&5 ac_status=$? - $as_echo "$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_SNDIO_LIBS=`$PKG_CONFIG --libs "sndio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -18198,8 +19890,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 @@ -18216,30 +19908,42 @@ fi HAVE_SNDIO="no" check_failed=yes elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } HAVE_SNDIO="no" check_failed=yes else SNDIO_CFLAGS=$pkg_cv_SNDIO_CFLAGS SNDIO_LIBS=$pkg_cv_SNDIO_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules sndio" HAVE_SNDIO="yes" fi ;; sun) - for ac_header in sun/audioio.h sys/audioio.h asm/audioio.h sys/audio.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "sun/audioio.h" "ac_cv_header_sun_audioio_h" "$ac_includes_default" +if test "x$ac_cv_header_sun_audioio_h" = xyes +then : + printf "%s\n" "#define HAVE_SUN_AUDIOIO_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/audioio.h" "ac_cv_header_sys_audioio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_audioio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_AUDIOIO_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "asm/audioio.h" "ac_cv_header_asm_audioio_h" "$ac_includes_default" +if test "x$ac_cv_header_asm_audioio_h" = xyes +then : + printf "%s\n" "#define HAVE_ASM_AUDIOIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/audio.h" "ac_cv_header_sys_audio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_audio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_AUDIO_H 1" >>confdefs.h + +fi if test "x${ac_cv_header_sun_audioio_h}" = "xyes" \ -o "x${ac_cv_header_sys_audioio_h}" = "xyes" \ @@ -18253,65 +19957,64 @@ done ;; coreaudio) COREAUDIO_LIBS="-framework AudioToolbox" - for ac_header in AudioUnit/AudioUnit.h AudioToolbox/AudioToolbox.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "AudioUnit/AudioUnit.h" "ac_cv_header_AudioUnit_AudioUnit_h" "$ac_includes_default" +if test "x$ac_cv_header_AudioUnit_AudioUnit_h" = xyes +then : + printf "%s\n" "#define HAVE_AUDIOUNIT_AUDIOUNIT_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "AudioToolbox/AudioToolbox.h" "ac_cv_header_AudioToolbox_AudioToolbox_h" "$ac_includes_default" +if test "x$ac_cv_header_AudioToolbox_AudioToolbox_h" = xyes +then : + printf "%s\n" "#define HAVE_AUDIOTOOLBOX_AUDIOTOOLBOX_H 1" >>confdefs.h -done +fi if test "x${ac_cv_header_AudioUnit_AudioUnit_h}" = "xyes" \ -a "x${ac_cv_header_AudioToolbox_AudioToolbox_h}" = "xyes"; then OLD_LIBS=$LIBS LIBS="$LIBS $COREAUDIO_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AudioUnit functions are available within AudioToolbox" >&5 -$as_echo_n "checking if AudioUnit functions are available within AudioToolbox... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AudioUnit functions are available within AudioToolbox" >&5 +printf %s "checking if AudioUnit functions are available within AudioToolbox... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { AudioUnitInitialize(NULL); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } COREAUDIO_LIBS="$COREAUDIO_LIBS -framework AudioUnit" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$OLD_LIBS - for ac_header in CoreServices/CoreServices.h + for ac_header in CoreServices/CoreServices.h do : - ac_fn_c_check_header_mongrel "$LINENO" "CoreServices/CoreServices.h" "ac_cv_header_CoreServices_CoreServices_h" "$ac_includes_default" -if test "x$ac_cv_header_CoreServices_CoreServices_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CORESERVICES_CORESERVICES_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "CoreServices/CoreServices.h" "ac_cv_header_CoreServices_CoreServices_h" "$ac_includes_default" +if test "x$ac_cv_header_CoreServices_CoreServices_h" = xyes +then : + printf "%s\n" "#define HAVE_CORESERVICES_CORESERVICES_H 1" >>confdefs.h COREAUDIO_LIBS="$COREAUDIO_LIBS -framework CoreServices" fi done - if test x"$modules" = xdisabled; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling buffer because of directly linked CoreAudio! Use the module if you need the buffer." >&5 -$as_echo "$as_me: WARNING: Disabling buffer because of directly linked CoreAudio! Use the module if you need the buffer." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Disabling buffer because of directly linked CoreAudio! Use the module if you need the buffer." >&5 +printf "%s\n" "$as_me: WARNING: Disabling buffer because of directly linked CoreAudio! Use the module if you need the buffer." >&2;} buffer=disabled fi output_modules="$output_modules coreaudio" @@ -18321,34 +20024,58 @@ $as_echo "$as_me: WARNING: Disabling buffer because of directly linked CoreAudio fi ;; arts) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for artsc" >&5 -$as_echo_n "checking for artsc... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for artsc" >&5 +printf %s "checking for artsc... " >&6; } if artsc-config > /dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } output_modules="$output_modules arts" HAVE_ARTS=yes ARTS_LIBS=`artsc-config --libs` ARTS_CFLAGS=`artsc-config --cflags` else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } check_failed=yes fi ;; openal) - for ac_header in OpenAL/al.h OpenAL/alc.h AL/al.h AL/alc.h al.h alc.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "OpenAL/al.h" "ac_cv_header_OpenAL_al_h" "$ac_includes_default" +if test "x$ac_cv_header_OpenAL_al_h" = xyes +then : + printf "%s\n" "#define HAVE_OPENAL_AL_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "OpenAL/alc.h" "ac_cv_header_OpenAL_alc_h" "$ac_includes_default" +if test "x$ac_cv_header_OpenAL_alc_h" = xyes +then : + printf "%s\n" "#define HAVE_OPENAL_ALC_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "AL/al.h" "ac_cv_header_AL_al_h" "$ac_includes_default" +if test "x$ac_cv_header_AL_al_h" = xyes +then : + printf "%s\n" "#define HAVE_AL_AL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "AL/alc.h" "ac_cv_header_AL_alc_h" "$ac_includes_default" +if test "x$ac_cv_header_AL_alc_h" = xyes +then : + printf "%s\n" "#define HAVE_AL_ALC_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "al.h" "ac_cv_header_al_h" "$ac_includes_default" +if test "x$ac_cv_header_al_h" = xyes +then : + printf "%s\n" "#define HAVE_AL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "alc.h" "ac_cv_header_alc_h" "$ac_includes_default" +if test "x$ac_cv_header_alc_h" = xyes +then : + printf "%s\n" "#define HAVE_ALC_H 1" >>confdefs.h + +fi if test "x${ac_cv_header_OpenAL_al_h}" = "xyes" \ -a "x${ac_cv_header_OpenAL_alc_h}" = "xyes"; @@ -18380,27 +20107,20 @@ done OS2_CFLAGS="-idirafter /@unixroot/usr/include/os2tk45" oldcflags="$CFLAGS" CFLAGS="$CFLAGS $OS2_CFLAGS" - for ac_header in os2.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "os2.h" "ac_cv_header_os2_h" "$ac_includes_default" -if test "x$ac_cv_header_os2_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OS2_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "os2.h" "ac_cv_header_os2_h" "$ac_includes_default" +if test "x$ac_cv_header_os2_h" = xyes +then : + printf "%s\n" "#define HAVE_OS2_H 1" >>confdefs.h fi -done - # os2me.h depends on os2.h # Yes, that way of coding it is ugly. if test "x${ac_cv_header_os2_h}" = xyes then # We mimick exactly the way how the header will be used. # It seems to be picky... - for ac_header in os2me.h -do : - ac_fn_c_check_header_compile "$LINENO" "os2me.h" "ac_cv_header_os2me_h" "#define INCL_OS2MM + ac_fn_c_check_header_compile "$LINENO" "os2me.h" "ac_cv_header_os2me_h" "#define INCL_OS2MM #undef VERSION #define INCL_DOS #define INCL_VIO @@ -18408,15 +20128,12 @@ do : #include # " -if test "x$ac_cv_header_os2me_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OS2ME_H 1 -_ACEOF +if test "x$ac_cv_header_os2me_h" = xyes +then : + printf "%s\n" "#define HAVE_OS2ME_H 1" >>confdefs.h fi -done - fi if test "x${ac_cv_header_os2_h}" = xyes \ -a "x${ac_cv_header_os2me_h}" = xyes @@ -18432,32 +20149,50 @@ done hp) # What's the deal with that and alib? UNSUPPORTED_AUDIO=yes - ac_fn_c_check_header_mongrel "$LINENO" "sys/audio.h" "ac_cv_header_sys_audio_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_audio_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "sys/audio.h" "ac_cv_header_sys_audio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_audio_h" = xyes +then : output_modules="$output_modules hp" HAVE_HP=yes -else +else $as_nop check_failed=yes fi - ;; alib) UNSUPPORTED_AUDIO=yes # ALIB_CFLAGS="-I/opt/audio/include" ALIB_LIBS=-lAlib # These headers may not be all about audio but they are used. - for ac_header in Alib.h CUlib.h netdb.h netinet/in.h netinet/tcp.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "Alib.h" "ac_cv_header_Alib_h" "$ac_includes_default" +if test "x$ac_cv_header_Alib_h" = xyes +then : + printf "%s\n" "#define HAVE_ALIB_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "CUlib.h" "ac_cv_header_CUlib_h" "$ac_includes_default" +if test "x$ac_cv_header_CUlib_h" = xyes +then : + printf "%s\n" "#define HAVE_CULIB_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/tcp.h" "ac_cv_header_netinet_tcp_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_tcp_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h + +fi if test "x${ac_cv_header_Alib_h}" = xyes \ -a "x${ac_cv_header_CUlib_h}" = xyes \ @@ -18473,49 +20208,45 @@ done ;; mint) UNSUPPORTED_AUDIO=yes - for ac_header in audios.h + for ac_header in audios.h do : - ac_fn_c_check_header_mongrel "$LINENO" "audios.h" "ac_cv_header_audios_h" "$ac_includes_default" -if test "x$ac_cv_header_audios_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_AUDIOS_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "audios.h" "ac_cv_header_audios_h" "$ac_includes_default" +if test "x$ac_cv_header_audios_h" = xyes +then : + printf "%s\n" "#define HAVE_AUDIOS_H 1" >>confdefs.h output_modules="$output_modules mint" HAVE_MINT=yes -else +else $as_nop check_failes=yes fi done - ;; aix) UNSUPPORTED_AUDIO=yes - for ac_header in sys/audio.h + for ac_header in sys/audio.h do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/audio.h" "ac_cv_header_sys_audio_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_audio_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_AUDIO_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "sys/audio.h" "ac_cv_header_sys_audio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_audio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_AUDIO_H 1" >>confdefs.h output_modules="$output_modules aix" HAVE_AIX=yes -else +else $as_nop check_failed=yes fi done - ;; sgi) UNSUPPORTED_AUDIO=yes SGI_LIBS=-laudio - ac_fn_c_check_header_mongrel "$LINENO" "dmedia/audio.h" "ac_cv_header_dmedia_audio_h" "$ac_includes_default" -if test "x$ac_cv_header_dmedia_audio_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "dmedia/audio.h" "ac_cv_header_dmedia_audio_h" "$ac_includes_default" +if test "x$ac_cv_header_dmedia_audio_h" = xyes +then : output_modules="$output_modules sgi" HAVE_SGI=yes -else +else $as_nop check_failed=yes fi - ;; *) as_fn_error $? "Unsupported/-known output '$m' demanded!" "$LINENO" 5 @@ -18524,8 +20255,8 @@ fi done if test "x$check_forced" = xyes -a "x$UNSUPPORTED_AUDIO" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You requested bulding of an unsupported audio module. Be prepared for happy hacking and please tell us about your experience!" >&5 -$as_echo "$as_me: WARNING: You requested bulding of an unsupported audio module. Be prepared for happy hacking and please tell us about your experience!" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You requested bulding of an unsupported audio module. Be prepared for happy hacking and please tell us about your experience!" >&5 +printf "%s\n" "$as_me: WARNING: You requested bulding of an unsupported audio module. Be prepared for happy hacking and please tell us about your experience!" >&2;} fi if test "x$check_forced" = xyes -a "x$check_failed" = "xyes"; then @@ -19059,9 +20790,7 @@ fi default_modstring=`echo "$default_output_modules"|tr ' ' ,` -cat >>confdefs.h <<_ACEOF -#define DEFAULT_OUTPUT_MODULE "$default_modstring" -_ACEOF +printf "%s\n" "#define DEFAULT_OUTPUT_MODULE \"$default_modstring\"" >>confdefs.h @@ -19122,8 +20851,8 @@ esac if test "x$GCC" = xyes && echo "$CFLAGS" | $GREP 'mpreferred-stack-boundary=' > /dev/null; then case $cpu_type in x86 | i586* | mmx | sse | 3dnow* | altivec) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You are trying to mess with stack alignment. I know better. " >&5 -$as_echo "$as_me: WARNING: You are trying to mess with stack alignment. I know better. " >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You are trying to mess with stack alignment. I know better. " >&5 +printf "%s\n" "$as_me: WARNING: You are trying to mess with stack alignment. I know better. " >&2;} CFLAGS="$CFLAGS -mpreferred-stack-boundary=4" ;; esac @@ -19138,14 +20867,12 @@ fi if test "$seektable" -gt 0; then -$as_echo "#define FRAME_INDEX 1" >>confdefs.h +printf "%s\n" "#define FRAME_INDEX 1" >>confdefs.h fi # Define that always... also without frame index enabled. -cat >>confdefs.h <<_ACEOF -#define INDEX_SIZE $seektable -_ACEOF +printf "%s\n" "#define INDEX_SIZE $seektable" >>confdefs.h # Check if we want Unicode for Win32. Cygwin and Midipix does not need _wopen @@ -19160,52 +20887,48 @@ win32_winver_bump=no ### mingw.org may not work properly for newer APIs case $host_os in *mingw*) - ac_fn_c_check_header_mongrel "$LINENO" "_mingw_mac.h" "ac_cv_header__mingw_mac_h" "$ac_includes_default" -if test "x$ac_cv_header__mingw_mac_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "_mingw_mac.h" "ac_cv_header__mingw_mac_h" "$ac_includes_default" +if test "x$ac_cv_header__mingw_mac_h" = xyes +then : -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You are using the mingw.org distribution" >&5 -$as_echo "$as_me: WARNING: You are using the mingw.org distribution" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mpg123 may not build properly" >&5 -$as_echo "$as_me: WARNING: mpg123 may not build properly" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please switch to using mingw-w64 if possible" >&5 -$as_echo "$as_me: WARNING: Please switch to using mingw-w64 if possible" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You are using the mingw.org distribution" >&5 +printf "%s\n" "$as_me: WARNING: You are using the mingw.org distribution" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mpg123 may not build properly" >&5 +printf "%s\n" "$as_me: WARNING: mpg123 may not build properly" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please switch to using mingw-w64 if possible" >&5 +printf "%s\n" "$as_me: WARNING: Please switch to using mingw-w64 if possible" >&2;} fi - ;; esac -# enable win32 code -if test "x$ac_cv_header_windows_h" = xyes -a "x$host_os" != xcygwin -a "x$host_os" != xmidipix; then - win32_specific_codes=enabled -fi - if test "x$win32_specific_codes" = xenabled; then #### Check for Wide functions ac_fn_c_check_func "$LINENO" "_wopen" "ac_cv_func__wopen" -if test "x$ac_cv_func__wopen" = xyes; then : +if test "x$ac_cv_func__wopen" = xyes +then : win32_unicode=enabled -else +else $as_nop win32_unicode=disabled fi if test "x$uwp_build" = xyes; then -$as_echo "#define WANT_WIN32_UNICODE 1" >>confdefs.h +printf "%s\n" "#define WANT_WIN32_UNICODE 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want Unicode File Open for Win32" >&5 -$as_echo_n "checking if we want Unicode File Open for Win32... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we want Unicode File Open for Win32" >&5 +printf %s "checking if we want Unicode File Open for Win32... " >&6; } if test "x$win32_unicode" = xenabled; then oldlibs=$LIBS LIBS="$LIBS -lshlwapi" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Unicode functions working" >&5 -$as_echo_n "checking if Unicode functions working... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Unicode functions working" >&5 +printf %s "checking if Unicode functions working... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19221,12 +20944,13 @@ $as_echo_n "checking if Unicode functions working... " >&6; } } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_wide_working=yes -else +else $as_nop win32_winver_bump=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$win32_wide_working" = xno; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -19246,22 +20970,23 @@ rm -f core conftest.err conftest.$ac_objext \ } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_wide_working=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi LIBS=$oldlibs if test "x$win32_wide_working" = xyes; then COMPAT_LIBS="-lshlwapi $COMPAT_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define WANT_WIN32_UNICODE 1" >>confdefs.h +printf "%s\n" "#define WANT_WIN32_UNICODE 1" >>confdefs.h else as_fn_error $? "Unicode support for Win32 not working" "$LINENO" 5 @@ -19272,28 +20997,26 @@ $as_echo "#define WANT_WIN32_UNICODE 1" >>confdefs.h fi #### Check for Network functions - for ac_header in ws2tcpip.h + for ac_header in ws2tcpip.h do : - ac_fn_c_check_header_mongrel "$LINENO" "ws2tcpip.h" "ac_cv_header_ws2tcpip_h" "$ac_includes_default" -if test "x$ac_cv_header_ws2tcpip_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WS2TCPIP_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "ws2tcpip.h" "ac_cv_header_ws2tcpip_h" "$ac_includes_default" +if test "x$ac_cv_header_ws2tcpip_h" = xyes +then : + printf "%s\n" "#define HAVE_WS2TCPIP_H 1" >>confdefs.h win32_sockets=enabled -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please update your headers to support winsock 2.2." >&5 -$as_echo "$as_me: WARNING: Please update your headers to support winsock 2.2." >&2;} +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please update your headers to support winsock 2.2." >&5 +printf "%s\n" "$as_me: WARNING: Please update your headers to support winsock 2.2." >&2;} fi done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want Win32 sockets" >&5 -$as_echo_n "checking if we want Win32 sockets... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we want Win32 sockets" >&5 +printf %s "checking if we want Win32 sockets... " >&6; } if test "x$win32_sockets" = "xenabled"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if winsock2 API is available" >&5 -$as_echo_n "checking if winsock2 API is available... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if winsock2 API is available" >&5 +printf %s "checking if winsock2 API is available... " >&6; } wsoldlibs="$LIBS" LIBS="$LIBS -lws2_32" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -19310,16 +21033,17 @@ $as_echo_n "checking if winsock2 API is available... " >&6; } } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_sockets_working=yes -else +else $as_nop win32_winver_bump=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$win32_sockets_working" = "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking deeper if winsock2 API is available" >&5 -$as_echo_n "checking deeper if winsock2 API is available... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking deeper if winsock2 API is available" >&5 +printf %s "checking deeper if winsock2 API is available... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19336,37 +21060,38 @@ $as_echo_n "checking deeper if winsock2 API is available... " >&6; } } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_sockets_working=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi if test "x$win32_sockets_working" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } network_internal=winsock2 have_network=yes have_ipv6=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please update your headers to support winsock 2.2." >&5 -$as_echo "$as_me: WARNING: Please update your headers to support winsock 2.2." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please update your headers to support winsock 2.2." >&5 +printf "%s\n" "$as_me: WARNING: Please update your headers to support winsock 2.2." >&2;} fi LIBS="$wsoldlibs" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi #### Check for Win32 Named Pipe functions win32_fifo_working=no winver="" if test x$win32_specific_codes = xenabled; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have Named Pipes" >&5 -$as_echo_n "checking if we have Named Pipes... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have Named Pipes" >&5 +printf %s "checking if we have Named Pipes... " >&6; } if test "x$fifo" != "xdisabled"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19378,12 +21103,13 @@ $as_echo_n "checking if we have Named Pipes... " >&6; } return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_fifo_working=yes -else +else $as_nop win32_winver_bump=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$win32_fifo_working" != "xyes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -19398,105 +21124,57 @@ rm -f core conftest.err conftest.$ac_objext \ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : win32_fifo_working=yes -else +else $as_nop win32_fifo_working=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi fi have_mkfifo=$win32_fifo_working if test "x$win32_fifo_working" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define WANT_WIN32_FIFO 1" >>confdefs.h +printf "%s\n" "#define WANT_WIN32_FIFO 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi -# Check GetThreadErrorMode - if test x"$modules" != xdisabled; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have GetThreadErrorMode" >&5 -$as_echo_n "checking if we have GetThreadErrorMode... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - int main(){ - return GetThreadErrorMode(); - } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - win32_thread_error=yes -else - win32_winver_bump=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "x$win32_thread_error" != "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have GetThreadErrorMode" >&5 -$as_echo_n "checking if we have GetThreadErrorMode... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define WINVER 0x600 - #define _WIN32_WINNT 0x600 - #include - int main(){ - return GetThreadErrorMode(); - } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - win32_thread_error=yes -else - win32_thread_error=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - if test "x$win32_thread_error" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "GetThreadErrorMode is required but not found" "$LINENO" 5 - fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi fi #### WINVER Bump if test x$win32_specific_codes = xenabled; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if WINVER and _WIN32_WINNT needs version bumps" >&5 -$as_echo_n "checking if WINVER and _WIN32_WINNT needs version bumps... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if WINVER and _WIN32_WINNT needs version bumps" >&5 +printf %s "checking if WINVER and _WIN32_WINNT needs version bumps... " >&6; } if test "x$win32_winver_bump" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define WINVER 0x0600" >>confdefs.h +printf "%s\n" "#define WINVER 0x0600" >>confdefs.h -$as_echo "#define _WIN32_WINNT 0x0600" >>confdefs.h +printf "%s\n" "#define _WIN32_WINNT 0x0600" >>confdefs.h # getaddrinfo and freeaddrinfo are available for Win2K and above # Bug: MinGW.org w32api ws2tcpip.h incorrectly wants (_WIN32_WINNT >= 0x0501) for getaddrinfo and freeaddrinfo # MultiByteToWideChar and WideCharToMultiByte are available for Win2K and above # GetThreadErrorMode only available on Vista and Later else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi fi fi #END OF WIN32 CHECKS #### Check mingw.org for EOVERFLOW -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have EOVERFLOW macro" >&5 -$as_echo_n "checking if we have EOVERFLOW macro... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have EOVERFLOW macro" >&5 +printf %s "checking if we have EOVERFLOW macro... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19504,26 +21182,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int i = (EOVERFLOW) + 0; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eoverflow_present=yes -else +else $as_nop eoverflow_present=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $eoverflow_present" >&5 -$as_echo "$eoverflow_present" >&6; } -if test "x$eoverflow_present" = "xyes"; then : +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $eoverflow_present" >&5 +printf "%s\n" "$eoverflow_present" >&6; } +if test "x$eoverflow_present" = "xyes" +then : -else +else $as_nop -$as_echo "#define EOVERFLOW EFBIG" >>confdefs.h +printf "%s\n" "#define EOVERFLOW EFBIG" >>confdefs.h fi # old network choice # Check whether --enable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then : +if test ${enable_ipv6+y} +then : enableval=$enable_ipv6; if test "x$enableval" = xyes then @@ -19532,7 +21213,7 @@ if test "${enable_ipv6+set}" = set; then : ipv6="disabled" fi -else +else $as_nop ipv6="auto" @@ -19543,7 +21224,8 @@ fi network_type=auto # Check whether --enable-network was given. -if test "${enable_network+set}" = set; then : +if test ${enable_network+y} +then : enableval=$enable_network; if test "x$enableval" = xyes then @@ -19557,65 +21239,66 @@ fi # new network choice -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preferred network support" >&5 -$as_echo_n "checking for preferred network support... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for preferred network support" >&5 +printf %s "checking for preferred network support... " >&6; } # Check whether --with-network was given. -if test "${with_network+set}" = set; then : +if test ${with_network+y} +then : withval=$with_network; case "$withval" in exec) network_type="exec" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: exec" >&5 -$as_echo "exec" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: exec" >&5 +printf "%s\n" "exec" >&6; } ;; winhttp) network_type="winhttp" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: winhttp" >&5 -$as_echo "winhttp" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: winhttp" >&5 +printf "%s\n" "winhttp" >&6; } ;; wininet) network_type="wininet" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: wininet" >&5 -$as_echo "wininet" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: wininet" >&5 +printf "%s\n" "wininet" >&6; } ;; wininethttp) network_type="wininethttp" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: wininethttp" >&5 -$as_echo "wininethttp" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: wininethttp" >&5 +printf "%s\n" "wininethttp" >&6; } ;; internal) network_type="internal" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: internal" >&5 -$as_echo "internal" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: internal" >&5 +printf "%s\n" "internal" >&6; } ;; yes|auto) network_type="auto" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: auto" >&5 -$as_echo "auto" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto" >&5 +printf "%s\n" "auto" >&6; } ;; no|none) network_type="disabled" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } ;; *) as_fn_error $? "Unknown network option \"$withval\"" "$LINENO" 5 ;; esac -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $network_type" >&5 -$as_echo "$network_type" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $network_type" >&5 +printf "%s\n" "$network_type" >&6; } fi if test x$network_type = xauto; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for automatic network support" >&5 -$as_echo_n "checking for automatic network support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for automatic network support" >&5 +printf %s "checking for automatic network support... " >&6; } if test "x$have_fork" = "xyes"; then network_type=exec elif test "x$win32_specific_codes" = "xenabled"; then @@ -19625,14 +21308,14 @@ $as_echo_n "checking for automatic network support... " >&6; } else network_type="disabled" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $network_type" >&5 -$as_echo "$network_type" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $network_type" >&5 +printf "%s\n" "$network_type" >&6; } fi # new net123 if test x$network_type != xdisabled; then -$as_echo "#define NET123 1" >>confdefs.h +printf "%s\n" "#define NET123 1" >>confdefs.h fi if test x$network_type = xexec -a x$have_fork != xyes; then @@ -19653,20 +21336,20 @@ fi if test x"$ipv6" = xauto; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking IPv6 use" >&5 -$as_echo_n "checking IPv6 use... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking IPv6 use" >&5 +printf %s "checking IPv6 use... " >&6; } if test x"$have_ipv6" = xyes -a x"$network_type" != xdisabled; then ipv6=enabled else ipv6=disabled fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5 -$as_echo "$ipv6" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5 +printf "%s\n" "$ipv6" >&6; } fi if test x$network_type != xdisabled -a x$network_internal = xwinsock2; then -$as_echo "#define WANT_WIN32_SOCKETS 1" >>confdefs.h +printf "%s\n" "#define WANT_WIN32_SOCKETS 1" >>confdefs.h fi @@ -19714,25 +21397,25 @@ fi case "$network_type" in exec) -$as_echo "#define NET123_EXEC 1" >>confdefs.h +printf "%s\n" "#define NET123_EXEC 1" >>confdefs.h ;; winhttp) -$as_echo "#define NET123_WINHTTP 1" >>confdefs.h +printf "%s\n" "#define NET123_WINHTTP 1" >>confdefs.h ;; wininet) -$as_echo "#define NET123_WININET 1" >>confdefs.h +printf "%s\n" "#define NET123_WININET 1" >>confdefs.h ;; wininethttp) -$as_echo "#define NET123_WININET 1" >>confdefs.h +printf "%s\n" "#define NET123_WININET 1" >>confdefs.h -$as_echo "#define NET123_WINHTTP 1" >>confdefs.h +printf "%s\n" "#define NET123_WINHTTP 1" >>confdefs.h ;; esac @@ -19774,40 +21457,236 @@ fi if test x"$fifo" = xenabled; then -$as_echo "#define FIFO 1" >>confdefs.h +printf "%s\n" "#define FIFO 1" >>confdefs.h if test x"$have_mkfifo" = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You forced FIFO code while I think there is no mkfifo() available! " >&5 -$as_echo "$as_me: WARNING: You forced FIFO code while I think there is no mkfifo() available! " >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You forced FIFO code while I think there is no mkfifo() available! " >&5 +printf "%s\n" "$as_me: WARNING: You forced FIFO code while I think there is no mkfifo() available! " >&2;} fi fi if test x"$network_type" != xdisabled; then -$as_echo "#define NETWORK 1" >>confdefs.h +printf "%s\n" "#define NETWORK 1" >>confdefs.h if test x"$have_network" = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You forced network code while I think there is support missing! " >&5 -$as_echo "$as_me: WARNING: You forced network code while I think there is support missing! " >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You forced network code while I think there is support missing! " >&5 +printf "%s\n" "$as_me: WARNING: You forced network code while I think there is support missing! " >&2;} fi fi if test x"$ipv6" = xenabled; then -$as_echo "#define IPV6 1" >>confdefs.h +printf "%s\n" "#define IPV6 1" >>confdefs.h if test x"$have_ipv6" = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You forced IPv6 code while I think there is no getaddrinfo() available! " >&5 -$as_echo "$as_me: WARNING: You forced IPv6 code while I think there is no getaddrinfo() available! " >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You forced IPv6 code while I think there is no getaddrinfo() available! " >&5 +printf "%s\n" "$as_me: WARNING: You forced IPv6 code while I think there is no getaddrinfo() available! " >&2;} fi fi +# Check whether --enable-components was given. +if test ${enable_components+y} +then : + enableval=$enable_components; + if test "x$enableval" = xyes + then + build_all=yes + else + build_all=no + fi + +else $as_nop + + build_all=yes + + +fi + + +# Check whether --enable-libmpg123 was given. +if test ${enable_libmpg123+y} +then : + enableval=$enable_libmpg123; + if test "x$enableval" = xyes + then + build_libmpg123=yes + else + build_libmpg123=no + fi + +else $as_nop + + build_libmpg123=no + + +fi + + +# Check whether --enable-libout123 was given. +if test ${enable_libout123+y} +then : + enableval=$enable_libout123; + if test "x$enableval" = xyes + then + build_libout123=yes + else + build_libout123=no + fi + +else $as_nop + + build_libout123=no + + +fi + + +# Check whether --enable-libout123-modules was given. +if test ${enable_libout123_modules+y} +then : + enableval=$enable_libout123_modules; + if test "x$enableval" = xyes + then + build_libout123_modules=yes + else + build_libout123_modules=no + fi + +else $as_nop + + build_libout123_modules=no + + +fi + + +# Check whether --enable-libsyn123 was given. +if test ${enable_libsyn123+y} +then : + enableval=$enable_libsyn123; + if test "x$enableval" = xyes + then + build_libsyn123=yes + else + build_libsyn123=no + fi + +else $as_nop + + build_libsyn123=no + + +fi + + +if test "x$build_all" = xyes; then + build_programs=yes + build_libmpg123=yes + build_libout123=yes + build_libout123_modules=yes + build_libsyn123=yes + components="programs" +else + build_programs=no +fi + + if test "x$build_programs" = xyes ; then + BUILD_PROGRAMS_TRUE= + BUILD_PROGRAMS_FALSE='#' +else + BUILD_PROGRAMS_TRUE='#' + BUILD_PROGRAMS_FALSE= +fi + + if test "x$build_libmpg123" = xyes ; then + BUILD_LIBMPG123_TRUE= + BUILD_LIBMPG123_FALSE='#' +else + BUILD_LIBMPG123_TRUE='#' + BUILD_LIBMPG123_FALSE= +fi + + if test "x$build_libout123" = xyes ; then + BUILD_LIBOUT123_TRUE= + BUILD_LIBOUT123_FALSE='#' +else + BUILD_LIBOUT123_TRUE='#' + BUILD_LIBOUT123_FALSE= +fi + + if test "x$build_libout123_modules" = xyes ; then + BUILD_LIBOUT123_MODULES_TRUE= + BUILD_LIBOUT123_MODULES_FALSE='#' +else + BUILD_LIBOUT123_MODULES_TRUE='#' + BUILD_LIBOUT123_MODULES_FALSE= +fi + + if test "x$build_libsyn123" = xyes ; then + BUILD_LIBSYN123_TRUE= + BUILD_LIBSYN123_FALSE='#' +else + BUILD_LIBSYN123_TRUE='#' + BUILD_LIBSYN123_FALSE= +fi + + if test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libsyn123" = xyes ; then + NEED_FMT123_TRUE= + NEED_FMT123_FALSE='#' +else + NEED_FMT123_TRUE='#' + NEED_FMT123_FALSE= +fi + +# If we install libraries, prompting pkgconfig and include directories. + if test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libout123_modules" = xyes || test "x$build_libsyn123" = xyes ; then + NEED_LIB_TRUE= + NEED_LIB_FALSE='#' +else + NEED_LIB_TRUE='#' + NEED_LIB_FALSE= +fi + + if test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libsyn123" = xyes ; then + NEED_MAINLIB_TRUE= + NEED_MAINLIB_FALSE='#' +else + NEED_MAINLIB_TRUE='#' + NEED_MAINLIB_FALSE= +fi + + if test "x$build_programs"= = xyes ; then + NEED_MAN_TRUE= + NEED_MAN_FALSE='#' +else + NEED_MAN_TRUE='#' + NEED_MAN_FALSE= +fi + + + +if test "x$build_libmpg123" = xyes; then + components="$components libmpg123" +fi +if test "x$build_libout123" = xyes; then + components="$components libout123" +fi +if test "x$build_libout123_modules" = xyes; then + components="$components libout123-modules" +fi +if test "x$build_libsyn123" = xyes; then + components="$components libsyn123" +fi +components=$(echo $components) + + PROG_LIBS=$LIBS LIBS= LIBMPG123_LIBS="$LIBM $COMPAT_LIBS" LIBSYN123_LIBS=$LIBM -LIBOUT123_LIBS="$LIBM $COMPAT_LIBS" +LIBOUT123_LIBS="$LIBRT $LIBM $COMPAT_LIBS" @@ -19816,7 +21695,7 @@ LIBOUT123_LIBS="$LIBM $COMPAT_LIBS" -ac_config_files="$ac_config_files Makefile libmpg123.pc libout123.pc libsyn123.pc mpg123.spec src/libmpg123/mpg123.h src/libout123/out123.h src/libsyn123/syn123.h" +ac_config_files="$ac_config_files Makefile libmpg123.pc libout123.pc libsyn123.pc mpg123.spec" cat >confcache <<\_ACEOF @@ -19846,8 +21725,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$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) ;; #( @@ -19877,15 +21756,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$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 @@ -19899,8 +21778,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$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 @@ -19917,7 +21796,7 @@ U= 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=`$as_echo "$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" @@ -19928,14 +21807,14 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -19956,6 +21835,10 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_MODULES_TRUE}" && test -z "${HAVE_MODULES_FALSE}"; then as_fn_error $? "conditional \"HAVE_MODULES\" was never defined. @@ -20017,10 +21900,6 @@ if test -z "${HAVE_LFS_WRAP_TRUE}" && test -z "${HAVE_LFS_WRAP_FALSE}"; then as_fn_error $? "conditional \"HAVE_LFS_WRAP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HAVE_LFS_ALIAS_TRUE}" && test -z "${HAVE_LFS_ALIAS_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LFS_ALIAS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${HAVE_FLOATDCT_TRUE}" && test -z "${HAVE_FLOATDCT_FALSE}"; then as_fn_error $? "conditional \"HAVE_FLOATDCT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20357,13 +22236,49 @@ if test -z "${TERM_WIN32_TRUE}" && test -z "${TERM_WIN32_FALSE}"; then as_fn_error $? "conditional \"TERM_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BUILD_PROGRAMS_TRUE}" && test -z "${BUILD_PROGRAMS_FALSE}"; then + as_fn_error $? "conditional \"BUILD_PROGRAMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LIBMPG123_TRUE}" && test -z "${BUILD_LIBMPG123_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LIBMPG123\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LIBOUT123_TRUE}" && test -z "${BUILD_LIBOUT123_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LIBOUT123\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LIBOUT123_MODULES_TRUE}" && test -z "${BUILD_LIBOUT123_MODULES_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LIBOUT123_MODULES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LIBSYN123_TRUE}" && test -z "${BUILD_LIBSYN123_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LIBSYN123\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${NEED_FMT123_TRUE}" && test -z "${NEED_FMT123_FALSE}"; then + as_fn_error $? "conditional \"NEED_FMT123\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${NEED_LIB_TRUE}" && test -z "${NEED_LIB_FALSE}"; then + as_fn_error $? "conditional \"NEED_LIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${NEED_MAINLIB_TRUE}" && test -z "${NEED_MAINLIB_FALSE}"; then + as_fn_error $? "conditional \"NEED_MAINLIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${NEED_MAN_TRUE}" && test -z "${NEED_MAN_FALSE}"; then + as_fn_error $? "conditional \"NEED_MAN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ 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 #! $SHELL @@ -20386,14 +22301,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -20403,46 +22320,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -20451,13 +22368,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -20466,8 +22376,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -20479,30 +22393,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$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 -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -20515,13 +22409,14 @@ as_fn_error () 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 - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -20548,18 +22443,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -20571,12 +22468,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -20607,7 +22505,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -20629,6 +22527,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS 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*) @@ -20642,6 +22544,12 @@ case `echo -n x` in #((((( 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 @@ -20683,7 +22591,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$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" @@ -20692,7 +22600,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -20754,8 +22662,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by mpg123 $as_me 1.31.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by mpg123 $as_me 1.32.0, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -20817,14 +22725,16 @@ $config_commands 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="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -mpg123 config.status 1.31.3 -configured by $0, generated by GNU Autoconf 2.69, +mpg123 config.status 1.32.0 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -20864,15 +22774,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$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=`$as_echo "$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'" @@ -20880,7 +22790,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$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;; @@ -20889,7 +22799,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$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=: ;; @@ -20917,7 +22827,7 @@ 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 - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -20931,7 +22841,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -21242,9 +23152,6 @@ do "libout123.pc") CONFIG_FILES="$CONFIG_FILES libout123.pc" ;; "libsyn123.pc") CONFIG_FILES="$CONFIG_FILES libsyn123.pc" ;; "mpg123.spec") CONFIG_FILES="$CONFIG_FILES mpg123.spec" ;; - "src/libmpg123/mpg123.h") CONFIG_FILES="$CONFIG_FILES src/libmpg123/mpg123.h" ;; - "src/libout123/out123.h") CONFIG_FILES="$CONFIG_FILES src/libout123/out123.h" ;; - "src/libsyn123/syn123.h") CONFIG_FILES="$CONFIG_FILES src/libsyn123/syn123.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -21256,9 +23163,9 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -21594,7 +23501,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$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 @@ -21602,17 +23509,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | 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" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$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=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -21629,7 +23536,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21653,9 +23560,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$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=`$as_echo "$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/ ;; @@ -21717,8 +23624,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$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 ac_datarootdir_hack=' @@ -21762,9 +23669,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { 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"; } && - { $as_echo "$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 -$as_echo "$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" @@ -21780,20 +23687,20 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$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 - $as_echo "/* $configure_input */" \ + 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 @@ -21813,7 +23720,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21833,8 +23740,8 @@ $as_echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$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 @@ -21860,7 +23767,7 @@ esac for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$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 @@ -21872,7 +23779,7 @@ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21894,7 +23801,7 @@ $as_echo X"$am_mf" | $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -21919,10 +23826,12 @@ $as_echo X/"$am_mf" | (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } @@ -22464,6 +24373,7 @@ _LT_EOF esac + ltmain=$ac_aux_dir/ltmain.sh @@ -22513,19 +24423,28 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$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 +default_offset_bits=`expr "$ac_cv_sizeof_off_t" "*" "8"` + echo " $PACKAGE_NAME $PACKAGE_VERSION Install path ............ $prefix + Components .............. $components CPU Optimization ........ $cpu_type - Compiler Optimization ... $with_optimization - Gapless Support ......... $gapless + Compiler Optimization ... $with_optimization" +if test x"$use_yasm_for_avx" = xyes; then + echo " Use yasm (for AVX only) . enabled" +else + echo " Use yasm (for AVX only) . disabled" +fi + +echo " Gapless Support ......... $gapless Debugging ............... $debugging Terminal control ........ $term_type Extreme debugging ....... $xdebugging @@ -22539,19 +24458,10 @@ if test x$network_type != xdisabled; then echo " Internal network type ... $network_internal IPv6 (getaddrinfo) ...... $ipv6" fi -if test x"$LARGEFILE_BITS" = x; then - echo " File offsets ............ default" -else - echo " File offsets ............ $LARGEFILE_BITS" - echo " The lib will (try to) support default offset size, too." -fi -echo " LFS alias symbols ....... $lfs_alias ($LFS_ALIAS_BITS)" -echo " LFS alias type .......... $lfs_alias_type" -if test x"$use_yasm_for_avx" = xyes; then - echo " Use yasm (for AVX only) . enabled" -else - echo " Use yasm (for AVX only) . disabled" -fi +echo " largefile sensitive ..... $lfs_sensitive" +echo " default offsets ......... $default_offset_bits" +echo " explicit 64 bit offsets . $use_largefile" +echo " only portable API ....... $portable_api" echo " Core libmpg123 features: @@ -22623,3 +24533,4 @@ echo " LIBSYN123_LIBS='$LIBSYN123_LIBS'" echo " LIBOUT123_LIBS='$LIBOUT123_LIBS'" echo echo "Next type 'make' and then 'make install'." + diff --git a/configure.ac b/configure.ac index 412b7cc..e1229f9 100644 --- a/configure.ac +++ b/configure.ac @@ -9,32 +9,64 @@ dnl 2.69 at least. AC_PREREQ([2.69]) dnl ############# Initialisation -AC_INIT([mpg123], [1.31.3], [maintainer@mpg123.org]) -dnl Increment API_VERSION when the API gets changes (new functions). + +dnl Set version numbers from header version.h and each library API header. +dnl Do not forget the re-generate configure on version changes. This does +dnl not happen automatically, as it would with m4_include() usage, wich +dnl is too fragile with arbitrary header contents. + +m4_define([V_HEADER], m4_esyscmd(grep MPG123_ src/version.h)) +m4_define([V_MAJOR], m4_bregexp(V_HEADER, + [#define MPG123_MAJOR\s+\([0-9]+\)], + [\1])) +m4_define([V_MINOR], m4_bregexp(V_HEADER, + [\#define MPG123_MINOR\s+\([0-9]+\)], + [\1])) +m4_define([V_PATCH], m4_bregexp(V_HEADER, + [\#define MPG123_PATCH\s+\([0-9]+\)], + [\1])) +m4_define([V_SUFFIX], m4_bregexp(V_HEADER, + [\#define MPG123_SUFFIX\s+"\(.+\)"], + [\1])) +m4_undefine([V_HEADER]) + +AC_INIT([mpg123], V_MAJOR.V_MINOR.V_PATCH[]V_SUFFIX, [maintainer@mpg123.org]) + +m4_define([V_HEADER], m4_esyscmd(grep -e _API_VERSION -e _PATCHLEVEL src/libmpg123/mpg123.h src/libout123/out123.h src/libsyn123/syn123.h)) dnl libmpg123 -API_VERSION=47 -LIB_PATCHLEVEL=0 +m4_define([API_VERSION], m4_bregexp(V_HEADER, + [\#define MPG123_API_VERSION\s+\([0-9]+\)], + [\1])) +m4_define([LIB_PATCHLEVEL], m4_bregexp(V_HEADER, + [\#define MPG123_PATCHLEVEL\s+\([0-9]+\)], + [\1])) dnl libout123 -OUTAPI_VERSION=4 -OUTLIB_PATCHLEVEL=7 +m4_define([OUTAPI_VERSION], m4_bregexp(V_HEADER, + [\#define OUT123_API_VERSION\s+\([0-9]+\)], + [\1])) +m4_define([OUTLIB_PATCHLEVEL], m4_bregexp(V_HEADER, + [\#define OUT123_PATCHLEVEL\s+\([0-9]+\)], + [\1])) dnl libsyn123 -SYNAPI_VERSION=1 -SYNLIB_PATCHLEVEL=5 +m4_define([SYNAPI_VERSION], m4_bregexp(V_HEADER, + [\#define SYN123_API_VERSION\s+\([0-9]+\)], + [\1])) +m4_define([SYNLIB_PATCHLEVEL], m4_bregexp(V_HEADER, + [\#define SYN123_PATCHLEVEL\s+\([0-9]+\)], + [\1])) + +m4_undefine([V_HEADER]) dnl Since we want to be backwards compatible, both sides get set to API_VERSION. -LIBMPG123_VERSION=$API_VERSION:$LIB_PATCHLEVEL:$API_VERSION -LIBOUT123_VERSION=$OUTAPI_VERSION:$OUTLIB_PATCHLEVEL:$OUTAPI_VERSION -LIBSYN123_VERSION=$SYNAPI_VERSION:$SYNLIB_PATCHLEVEL:$SYNAPI_VERSION -AC_SUBST(LIBMPG123_VERSION) -AC_SUBST(API_VERSION) -AC_SUBST(LIBOUT123_VERSION) -AC_SUBST(OUTAPI_VERSION) -AC_SUBST(LIBSYN123_VERSION) -AC_SUBST(SYNAPI_VERSION) - +LIBMPG123_VERSION=API_VERSION:LIB_PATCHLEVEL:API_VERSION +LIBOUT123_VERSION=OUTAPI_VERSION:OUTLIB_PATCHLEVEL:OUTAPI_VERSION +LIBSYN123_VERSION=SYNAPI_VERSION:SYNLIB_PATCHLEVEL:SYNAPI_VERSION +AC_SUBST([LIBMPG123_VERSION]) +AC_SUBST([LIBOUT123_VERSION]) +AC_SUBST([LIBSYN123_VERSION]) AC_CONFIG_SRCDIR(src/mpg123.c) AC_CONFIG_AUX_DIR(build) @@ -103,14 +135,19 @@ if test "x$all_static" = xyes; then fi AM_PROG_AS -dnl For autocinf 2.69, the C99 macro still does something. -AC_PROG_CC_C99 -AM_PROG_CC_C_O +m4_version_prereq(2.70, [AC_PROG_CC], [AC_PROG_CC_C99]) AC_PROG_CPP AC_PROG_INSTALL # Just look, no touch. oldLIBS=$LIBS LT_LIB_M +dnl Test if -lrt is required for clock_gettime() (old glibc). +AC_SEARCH_LIBS([clock_gettime], [rt]) +if echo " $LIBS" | grep -q -w -- -lrt; then + LIBRT=-lrt +fi +# Could actually be missing. +AC_CHECK_FUNCS([clock_gettime]) LIBS=$oldLIBS AC_SUBST(LIBM) dnl "Checking for egrep is broken after removal of libltdl stuff... checks use $EGREP, so searching it here." @@ -129,7 +166,7 @@ dnl ############# Use Libtool for dynamic module loading modules=auto AC_ARG_ENABLE(modules, -[ --enable-modules=[no/yes] dynamically loadable output modules], +[AS_HELP_STRING([--disable-modules], [dynamically loadable output module support (default enabled in shared library builds)])], [ if test "x$enableval" = xyes then @@ -155,6 +192,10 @@ fi dnl We need the windows header also for checking the module mechanism. AC_CHECK_HEADERS([windows.h]) +# enable win32 code +if test "x$ac_cv_header_windows_h" = xyes -a "x$host_os" != xcygwin -a "x$host_os" != xmidipix; then + win32_specific_codes=enabled +fi android_build=no case "$host" in @@ -198,6 +239,40 @@ case "$host" in ;; esac + +if test x$win32_specific_codes = xenabled; then + # Check GetThreadErrorMode + if test x"$modules" != xdisabled; then + AC_MSG_CHECKING([if we have GetThreadErrorMode]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + int main(){ + return GetThreadErrorMode(); + }])],[win32_thread_error=yes],[win32_winver_bump=yes]) + if test "x$win32_thread_error" != "xyes"; then + AC_MSG_CHECKING([if we have GetThreadErrorMode]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #define WINVER 0x600 + #define _WIN32_WINNT 0x600 + #include + int main(){ + return GetThreadErrorMode(); + }])],[win32_thread_error=yes],[win32_thread_error=no]) + fi + if test "x$win32_thread_error" = "xyes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + if test "x$modules" = xenabled; then + AC_MSG_ERROR([GetThreadErrorMode is required for modules but not found.]) + else + AC_MSG_WARN([Disabling modules because of missing GetThreadErrorMode()]) + modules=disabled + fi + fi + fi +fi + LIBDL= if test x"$modules" = xdisabled @@ -291,7 +366,7 @@ AC_SUBST(EXEC_LT_LDFLAGS) dnl ############## Configurable Options AC_ARG_ENABLE(debug, - [ --enable-debug=[no/yes] turn on debugging], + [AS_HELP_STRING([--enable-debug], [turn on (lots of) debugging printouts])], [ if test "x$enableval" = xyes then @@ -304,7 +379,7 @@ AC_ARG_ENABLE(debug, ) AC_ARG_ENABLE(xdebug, - [ --enable-xdebug=[no/yes] turn on extreme debugging], + [AS_HELP_STRING([--enable-xdebug], [turn on (yet more) extreme debugging printouts])], [ if test "x$enableval" = xyes then @@ -322,7 +397,7 @@ if test x"$xdebugging" = xenabled; then fi AC_ARG_ENABLE(nagging, - [ --enable-nagging=[no/yes] turn on GCC's pedantic nagging with error on warnings, does not include --enable-debug anymore ], + [AS_HELP_STRING([--enable-nagging], [turn on GCC's pedantic nagging with error on warnings])], [ if test "x$enableval" = xyes then @@ -339,24 +414,23 @@ if test x"$debugging" = xenabled; then fi AC_ARG_ENABLE(gapless, - [ --enable-gapless=[no/yes] turn on gapless (enabled per default)], + [AS_HELP_STRING( [--disable-gapless], [turn off gapless decoding (please don't)])], [ if test "x$enableval" = xyes then gapless="enabled" - AC_DEFINE(GAPLESS, 1, [ Define if gapless is enabled. ]) else gapless="disabled" fi ], - [ - gapless="enabled" - AC_DEFINE(GAPLESS, 1, [ Define if gapless is enabled. ]) - ] + [ gapless="enabled" ] ) +if test "x$gapless" = xenabled; then + AC_DEFINE(GAPLESS, 1, [ Define if gapless is enabled. ]) +fi AC_ARG_ENABLE(fifo, - [ --enable-fifo=[no/yes] FIFO support for control interface (auto-enabled on linux) ], + [AS_HELP_STRING( [--enable-fifo], [FIFO support for control interface (auto-enabled on linux)])], [ if test "x$enableval" = xyes then @@ -377,7 +451,7 @@ dnl Core features that can be disabled to reduce binary size. id3v2=enabled AC_ARG_ENABLE(id3v2, - [ --disable-id3v2=[no/yes] no ID3v2 parsing ], + [AS_HELP_STRING( [--disable-id3v2], [no ID3v2 parsing])], [ if test "x$enableval" = xno; then id3v2="disabled" @@ -387,7 +461,7 @@ AC_ARG_ENABLE(id3v2, # id3v2 depends on strings... so check that in between. string=enabled AC_ARG_ENABLE(string, - [ --disable-string=[no/yes] no string API (this will disable ID3v2; main mpg123 won't build anymore) ], + [AS_HELP_STRING( [--disable-string], [no string API (this will disable ID3v2; main mpg123 won't build anymore)])], [ if test "x$enableval" = xno; then string="disabled" @@ -407,7 +481,7 @@ fi icy=enabled AC_ARG_ENABLE(icy, - [ --disable-icy=[no/yes] no ICY metainfo parsing/conversion (main mpg123 won't build!) ], + [AS_HELP_STRING( [--disable-icy], [no ICY metainfo parsing/conversion (main mpg123 won't build!)])], [ if test "x$enableval" = xno; then icy="disabled" @@ -421,7 +495,7 @@ AM_CONDITIONAL([HAVE_ICY], [test "x$icy" = xenabled]) ntom=enabled AC_ARG_ENABLE(ntom, - [ --disable-ntom=[no/yes] no flexible resampling ], + [AS_HELP_STRING( [--disable-ntom], [no flexible resampling])], [ if test "x$enableval" = xno; then ntom="disabled" @@ -435,7 +509,7 @@ AM_CONDITIONAL([HAVE_NTOM], [test "x$ntom" = xenabled]) downsample=enabled AC_ARG_ENABLE(downsample, - [ --disable-downsample=[no/yes] no downsampled decoding ], + [AS_HELP_STRING( [--disable-downsample], [no downsampled decoding])], [ if test "x$enableval" = xno; then downsample="disabled" @@ -448,7 +522,7 @@ fi feeder=enabled AC_ARG_ENABLE(feeder, - [ --disable-feeder=[no/yes] no feeder decoding, no buffered readers ], + [AS_HELP_STRING( [--disable-feeder], [no feeder decoding, no buffered readers])], [ if test "x$enableval" = xno; then feeder="disabled" @@ -461,7 +535,7 @@ fi moreinfo=enabled AC_ARG_ENABLE(moreinfo, - [ --disable-moreinfo=[no/yes] no extra information for frame analyzers ], + [AS_HELP_STRING( [--disable-moreinfo], [no extra information for frame analyzers])], [ if test "x$enableval" = xno; then moreinfo="disabled" @@ -474,7 +548,7 @@ fi messages=enabled AC_ARG_ENABLE(messages, - [ --disable-messages=[no/yes] no error/warning messages on the console ], + [AS_HELP_STRING( [--disable-messages], [no error/warning messages on the console])], [ if test "x$enableval" = xno; then messages="disabled" @@ -489,7 +563,7 @@ fi runtimetables=disabled AC_ARG_ENABLE(runtime-tables, -[ --enable-runtime-tables=[yes/no] calculate tables at runtime saving size at the expense of additional computation at load time ], +[AS_HELP_STRING([--enable-runtime-tables], [calculate tables at runtime saving size at the expense of additional computation at load time])], [ if test "x$enableval" = xyes; then runtimetables=enabled @@ -505,7 +579,7 @@ AM_CONDITIONAL([HAVE_RUNTIME_TABLES], [test "x$runtimetables" = xenabled] ) newhuff=enabled AC_ARG_ENABLE(new-huffman, -[ --enable-new-huffman=[yes/no] use new huffman decoding scheme by Taihei (faster on modern CPUs at least, so on by default) ], +[AS_HELP_STRING([--disable-new-huffman], [new huffman decoding scheme by Taihei (faster on modern CPUs at least, so on by default)])], [ if test "x$enableval" = xno; then newhuff=disabled @@ -519,7 +593,7 @@ fi integers=quality AC_ARG_ENABLE(int-quality, -[ --enable-int-quality=[yes/no] use rounding instead of fast truncation for integer output, where possible ], +[AS_HELP_STRING([--disable-int-quality], [use rounding instead of fast truncation for integer output, where possible])], [ if test "x$enableval" = xno; then integers=fast @@ -533,7 +607,7 @@ AM_CONDITIONAL([HAVE_ACCURATE], [ test x"$integers" = xquality ]) int16=enabled AC_ARG_ENABLE(16bit, - [ --disable-16bit=[no/yes] no 16 bit integer output ], + [AS_HELP_STRING( [--disable-16bit], [no 16 bit integer output])], [ if test "x$enableval" = xno; then int16="disabled" @@ -542,7 +616,7 @@ AC_ARG_ENABLE(16bit, int8=enabled AC_ARG_ENABLE(8bit, - [ --disable-8bit=[no/yes] no 8 bit integer output ], + [AS_HELP_STRING( [--disable-8bit], [no 8 bit integer output])], [ if test "x$enableval" = xno; then int8="disabled" @@ -551,7 +625,7 @@ AC_ARG_ENABLE(8bit, int32=enabled AC_ARG_ENABLE(32bit, - [ --disable-32bit=[no/yes] no 32 bit integer output (also 24 bit) ], + [AS_HELP_STRING( [--disable-32bit], [no 32 bit integer output (also 24 bit)])], [ if test "x$enableval" = xno; then int32="disabled" @@ -560,7 +634,7 @@ AC_ARG_ENABLE(32bit, real=enabled AC_ARG_ENABLE(real, - [ --disable-real=[no/yes] no real (floating point) output ], + [AS_HELP_STRING( [--disable-real], [no real (floating point) output])], [ if test "x$enableval" = xno; then real="disabled" @@ -569,48 +643,49 @@ AC_ARG_ENABLE(real, equalizer=enabled AC_ARG_ENABLE(equalizer, - [ --disable-equalizer=[no/yes] no equalizer support ], + [AS_HELP_STRING( [--disable-equalizer], [no equalizer support])], [ if test "x$enableval" = xno; then equalizer="disabled" fi ], []) -AC_ARG_WITH([cpu], [ - --with-cpu=generic[[_fpu]] Use generic processor code with floating point arithmetic - --with-cpu=generic_float Plain alias to generic_fpu now... float output is a normal runtime option! - --with-cpu=generic_nofpu Use generic processor code with fixed point arithmetic (p.ex. ARM) - --with-cpu=generic_dither Use generic processor code with floating point arithmetic and dithering for 1to1 16bit decoding. - --with-cpu=i386[[_fpu]] Use code optimized for i386 processors with floating point arithmetic - --with-cpu=i386_nofpu Use code optimized for i386 processors with fixed point arithmetic - --with-cpu=i486 Use code optimized for i486 processors (only usable alone!) - --with-cpu=i586 Use code optimized for i586 processors - --with-cpu=i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size - --with-cpu=3dnow Use code optimized for 3DNow processors - --with-cpu=3dnow_vintage Use code optimized for older 3DNow processors (K6 family) - --with-cpu=3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon) - --with-cpu=3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate - --with-cpu=3dnow_vintage Use code optimized for older extended 3DNow processors (like K6-III+) - --with-cpu=mmx Use code optimized for MMX processors - --with-cpu=mmx_alone Really only MMX decoder, without i586 fallback for flexible rate - --with-cpu=sse Use code optimized for SSE processors - --with-cpu=sse_vintage Use code optimized for older SSE processors (plain C DCT36) - --with-cpu=sse_alone Really only SSE decoder, without i586 fallback for flexible rate - --with-cpu=avx Use code optimized for x86-64 with AVX processors - --with-cpu=x86 Pack all x86 opts into one binary (excluding i486, including dither) - --with-cpu=x86-64 Use code optimized for x86-64 processors (AMD64 and Intel64, including AVX and dithered generic) - --with-cpu=altivec Use code optimized for Altivec processors (PowerPC G4 and G5) - --with-cpu=ppc_nofpu Use code optimized for PowerPC processors with fixed point arithmetic - --with-cpu=neon Use code optimized for ARM NEON SIMD engine (Cortex-A series) - --with-cpu=arm_fpu Pack neon and generic[[_dither]] decoders, for ARM processors with FPU and/or NEON - --with-cpu=arm_nofpu Use code optimized for ARM processors with fixed point arithmetic - --with-cpu=neon64 Use code optimized for AArch64 NEON SIMD engine - --with-cpu=aarch64 Pack neon64 and generic[[_dither]] decoders, for 64bit ARM processors +AC_ARG_WITH([cpu], [AS_HELP_STRING([--with-cpu=], [select CPU optimization. Choices are:]) + + generic[[_fpu]] Use generic processor code with floating point arithmetic + generic_float Plain alias to generic_fpu now... float output is a normal runtime option! + generic_nofpu Use generic processor code with fixed point arithmetic (p.ex. ARM) + generic_dither Use generic processor code with floating point arithmetic and dithering for 1to1 16bit decoding. + i386[[_fpu]] Use code optimized for i386 processors with floating point arithmetic + i386_nofpu Use code optimized for i386 processors with fixed point arithmetic + i486 Use code optimized for i486 processors (only usable alone!) + i586 Use code optimized for i586 processors + i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size + 3dnow Use code optimized for 3DNow processors + 3dnow_vintage Use code optimized for older 3DNow processors (K6 family) + 3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon) + 3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate + 3dnow_vintage Use code optimized for older extended 3DNow processors (like K6-III+) + mmx Use code optimized for MMX processors + mmx_alone Really only MMX decoder, without i586 fallback for flexible rate + sse Use code optimized for SSE processors + sse_vintage Use code optimized for older SSE processors (plain C DCT36) + sse_alone Really only SSE decoder, without i586 fallback for flexible rate + avx Use code optimized for x86-64 with AVX processors + x86 Pack all x86 opts into one binary (excluding i486, including dither) + x86-64 Use code optimized for x86-64 processors (AMD64 and Intel64, including AVX and dithered generic) + altivec Use code optimized for Altivec processors (PowerPC G4 and G5) + ppc_nofpu Use code optimized for PowerPC processors with fixed point arithmetic + neon Use code optimized for ARM NEON SIMD engine (Cortex-A series) + arm_fpu Pack neon and generic[[_dither]] decoders, for ARM processors with FPU and/or NEON + arm_nofpu Use code optimized for ARM processors with fixed point arithmetic + neon64 Use code optimized for AArch64 NEON SIMD engine + aarch64 Pack neon64 and generic[[_dither]] decoders, for 64bit ARM processors ]) use_yasm=auto AC_ARG_ENABLE(yasm, - [ --enable-yasm=[no/yes] enforce yasm instad of default assembler for some optimizations (AVX, currently) ], + [AS_HELP_STRING( [--enable-yasm], [enforce yasm instad of default assembler for some optimizations (AVX, currently)])], [ if test "x$enableval" = xyes; then use_yasm="enabled" @@ -623,7 +698,7 @@ if test x"$use_yasm" = xenabled; then fi AC_ARG_ENABLE(ieeefloat, - [ --enable-ieeefloat=[yes/no] use special hackery relying on IEEE 754 floating point storage format (to accurately round to 16 bit integer at bit more efficiently in generic decoder, enabled by default, disable in case you have a very special computer) ], + [AS_HELP_STRING( [--disable-ieeefloat], [use special hackery relying on IEEE 754 floating point storage format (to accurately round to 16 bit integer at bit more efficiently in generic decoder, enabled by default, disable in case you have a very special computer)])], [ if test "x$enableval" = xyes; then ieee=enabled @@ -638,7 +713,7 @@ if test "x$ieee" = xenabled; then fi AC_ARG_ENABLE(cases, - [ --enable-cases=[yes/no] include special cases for likely parameter values (channel count, encoding sizes in libsyn123 routines) in the hope of better optimization at the expense of some code bloat (default enabled) ], + [AS_HELP_STRING([--disable-cases], [include special cases for likely parameter values (channel count, encoding sizes in libsyn123 routines) in the hope of better optimization at the expense of some code bloat])], [ if test "x$enableval" = xyes; then specialcases=enabled @@ -846,7 +921,7 @@ case $host in esac AC_ARG_ENABLE(buffer, - [ --enable-buffer=[yes/no] disable audio buffer code (default uses system whitelist... proper checks later) ], + [AS_HELP_STRING([--disable-buffer], [disable audio buffer code (default enabled by some heuristics)])], [ if test "x$enableval" = xyes then @@ -860,7 +935,7 @@ AC_ARG_ENABLE(buffer, ) AC_ARG_ENABLE(newoldwritesample, -[ --enable-newoldwritesample=[no/yes] enable new/old WRITE_SAMPLE macro for non-accurate 16 bit output, faster on certain CPUs (default on on x86-32)], +[AS_HELP_STRING( [--enable-newoldwritesample], [new/old WRITE_SAMPLE macro for non-accurate 16 bit output, faster on certain CPUs (default on on 32 bit x86)])], [ if test "x$enableval" = xyes then @@ -919,7 +994,7 @@ AM_CONDITIONAL([HAVE_EQUALIZER], [ test x"$equalizer" = xenabled ] ) layer1=enabled AC_ARG_ENABLE(layer1, - [ --disable-layer1=[no/yes] no layer I decoding ], + [AS_HELP_STRING( [--disable-layer1], [no layer I decoding])], [ if test "x$enableval" = xno; then layer1="disabled" @@ -931,7 +1006,7 @@ AM_CONDITIONAL([HAVE_LAYER1], [test "x$layer1" = xenabled] ) layer2=enabled AC_ARG_ENABLE(layer2, - [ --disable-layer2=[no/yes] no layer II decoding ], + [AS_HELP_STRING( [--disable-layer2], [no layer II decoding])], [ if test "x$enableval" = xno; then layer2="disabled" @@ -943,7 +1018,7 @@ AM_CONDITIONAL([HAVE_LAYER2], [test "x$layer2" = xenabled] ) layer3=enabled AC_ARG_ENABLE(layer3, - [ --disable-layer3=[no/yes] no layer III decoding ], + [AS_HELP_STRING( [--disable-layer3], [no layer III decoding])], [ if test "x$enableval" = xno; then layer3="disabled" @@ -954,7 +1029,8 @@ AC_ARG_ENABLE(layer3, AM_CONDITIONAL([HAVE_LAYER3], [test "x$layer3" = xenabled] ) AC_ARG_WITH([audio], [ - --with-audio= Select a list (or only one) of audio output modules (comma or space separated list). Choices are: +AS_HELP_STRING([--with-audio=], [Select a list (or only one) of audio output modules (comma or space separated list). Choices are:]) + aix Use AIX as default audio output sub-system alib Use Alib as default audio output sub-system (for HPUX) alsa Use ALSA as default audio output sub-system (libasound) @@ -1112,99 +1188,137 @@ AC_CHECK_HEADERS([stdio.h stdlib.h string.h unistd.h sched.h sys/ioctl.h sys/typ dnl ############## Types -dnl Large file support stuff needs cleanup. There are superfluous variables. - -dnl Detect large file support, enable switches if needed. -AC_SYS_LARGEFILE -dnl If we do have a switch for large files, rename off_t-aware API calls. -dnl Using the file_offset_bits variable here is fine for linux (possibly Solaris), -dnl Others... we'll have to see. -dnl Note: I started writing this with with multiline replacements. -dnl Does not work. Automake insists on putting these into Makefiles where they break things. -dnl It is also assumed that a system that does not set file offset bits is not -dnl sensitive to largefile changes, i.e. FreeBSD always using 64 bit off_t. -if test "x$ac_cv_sys_file_offset_bits" = x || echo "$ac_cv_sys_file_offset_bits" | $GREP '@<:@^0-9@:>@' > /dev/null; then - dnl if it has non-numeric chars or is empty... ignore... - largefile_sensitive=no - BUILD_NO_LARGENAME=1 - AC_DEFINE(BUILD_NO_LARGENAME, 1, [ No suffixed symbols for large file support (only alias for backwards compat.) ]) -else - largefile_sensitive=yes - BUILD_NO_LARGENAME=0 -fi -# Add dual-mode wrapper code. -AM_CONDITIONAL([HAVE_LFS_WRAP], [ test x"$largefile_sensitive" = xyes ] ) -# Any non-sensitive platform does not bother with off_t-based function renaming. -AC_SUBST(BUILD_NO_LARGENAME) - # Using the lower level macros instead of AC_TYPE_* for compatibility with not freshest autoconf. +# Re-think this list. Some things just should be a given. We assume C99 now. +# Rather think about assumptions like int64_t >= ptrdiff_t. AC_CHECK_TYPE(size_t, unsigned long) AC_CHECK_TYPE(uintptr_t, unsigned long) AC_CHECK_TYPE(ssize_t, long) -AC_CHECK_TYPE(off_t, long int) +AC_CHECK_TYPE(ptrdiff_t, long) AC_CHECK_TYPE(int32_t, int) AC_CHECK_TYPE(int64_t, long long) AC_CHECK_TYPE(uint32_t, unsigned int) AC_CHECK_TYPE(int16_t, short) AC_CHECK_TYPE(uint16_t, unsigned short) -AC_CHECK_SIZEOF(size_t,4) -AC_CHECK_SIZEOF(ssize_t,4) -AC_CHECK_SIZEOF(off_t,4) -AC_CHECK_SIZEOF(off64_t,8) +AC_CHECK_SIZEOF(size_t) +AC_CHECK_SIZEOF(ssize_t) AC_CHECK_SIZEOF(int32_t) -AC_CHECK_SIZEOF(long,4) +AC_CHECK_SIZEOF(long) -dnl The native type used for aliases is what off_t maps to without any largefile- -dnl enabling switches. So, it's long int if the system is largefile-senstive, -dnl but it is actual plain off_t if the system does not have such switches. -if test "x$largefile_sensitive" = xyes; then - lfs_alias_type=long - lfs_alias_size=$ac_cv_sizeof_long -elif test "x$android_build" = xyes; then - lfs_alias_type=off64_t - lfs_alias_size=$ac_cv_sizeof_off64_t -else - lfs_alias_type=off_t - lfs_alias_size=$ac_cv_sizeof_off_t -fi +# We do not need to know if off_t actually changes size using +# _FILE_OFFSET_BITS, only need to know what size it has. -if test "x$lfs_alias_size" = "x"; then - AC_MSG_ERROR([Cannot determine sizeof(lfs_alias_t)?]) -else - LFS_ALIAS_BITS=`expr "$lfs_alias_size" "*" "8"` - AC_DEFINE_UNQUOTED([lfs_alias_t], $lfs_alias_type, - [Define to the native offset type (long or actually off_t).]) - AC_DEFINE_UNQUOTED([LFS_ALIAS_BITS], $LFS_ALIAS_BITS, - [Define this to the size of native offset type in bits, used for LFS alias functions.]) -fi +dnl ############## LFS stuff -AC_SUBST(LFS_ALIAS_BITS) - -lfs_alias=enabled -AC_ARG_ENABLE(lfs-alias, - [ --disable-lfs-alias disable alias wrappers for largefile bitness (mpg123_seek_32 or mpg123_seek_64 in addition to mpg123_seek, or the other way around; It is a mess, do not play with this!) ], +portable_api=no +AC_ARG_ENABLE(portable, + [AS_HELP_STRING( [--enable-portable], [only build portable API (no off_t, no internal I/O)])], [ - if test "x$enableval" = xno; then - lfs_alias="disabled" + if test "x$enableval" = xyes; then + portable_api="yes" fi - ], - [ - case $host in - *-cygwin*) - lfs_alias="disabled" - AC_MSG_NOTICE([lfs-alias disabled for Cygwin, use --enable-lfs-alias explicitly to enable, only if you know what you are doing]) - ;; - esac + ], []) +if test "x$portable_api" = xyes; then + AC_DEFINE(PORTABLE_API, 1, [ Define to only include portable library API (no off_t, no internal I/O). ]) +fi - ]) +AM_CONDITIONAL([HAVE_LFS_WRAP], [ test x"$portable_api" = xno ] ) -AC_MSG_CHECKING([if we want to enable alias wrappers for largefile]) -if test "x$lfs_alias" = "xenabled"; then +# Check for shape-shifting off_t just for the mpg123 client application. +# At least at first, mpg123 itself will excercise the wrappers, otherwise +# we don't know they work. +# Do not use AC_CHECK_SIZEOF twice to avoid redefinition of SIZEOF_OFF_T +# in further tests via confdefs.h. +AC_MSG_CHECKING([switched off_t size]) +AC_COMPUTE_INT(switched_off_size, sizeof(off_t), [ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#include +]) +AC_MSG_RESULT([$switched_off_size]) +# If you have predefined _FILE_OFFSET_BITS, I will treat that as a system +# property. +AC_CHECK_SIZEOF(off_t, [], [ +#include +]) + +# Some paranoia about the limited choices we accept. +# 32 or 64 bit offsets, an the switched one better not be smaller. +if test "x$ac_cv_sizeof_off_t" = x0; then + AC_MSG_ERROR([Not even off_t found. I need some POSIX.]) +fi +if test "x$ac_cv_sizeof_off_t" != x8 && + test "x$ac_cv_sizeof_off_t" != x4; then + AC_MSG_ERROR([unexpected size of off_t]) +fi + +if test "x$ac_cv_sizeof_off_t" != "x$switched_off_size"; then + if test "x$switched_off_size" != x8; then + AC_MSG_ERROR([bad switched off_t size]) + fi + lfs_sensitive=yes + AC_DEFINE(LFS_SENSITIVE, 1, [ System redefines off_t when defining _FILE_OFFSET_BITS to 64. ]) +else + lfs_sensitive=no +fi + +use_largefile=auto + +AC_MSG_CHECKING([if native off_t is already 64 bits]) +if test "x$ac_cv_sizeof_off_t" = x8; then AC_MSG_RESULT([yes]) + use_largefile=no else AC_MSG_RESULT([no]) fi -AM_CONDITIONAL([HAVE_LFS_ALIAS], [ test x"$lfs_alias" = xenabled ]) + +AC_ARG_ENABLE(largefile, + [AS_HELP_STRING([--disable-largefile], [to not attempt to use 64 bit file offsets internally])], + [ if test "x$enableval" = xno; then + use_largefile=no + fi + ], + []) + +# Large file support without the magic. Check for the API explicitly. +# The shape-shifting off_t has to be avoided for the library builds. +# The mpg123 application might still use it to check if the API works. +# Or we limit it to portable, off_t-less API at some point. + +if test x"$use_largefile" != xno; then + +# Expect usual_LARGEFILE64_SOURCE mechanics with off64_t and lseek64 present. +AC_CHECK_FUNCS([lseek64]) +AC_CHECK_TYPE(off64_t, [have_off64_t=yes], [have_off64_t=no], [[ +#define _LARGEFILE64_SOURCE +#include +#include +]]) +if test "x$have_off64_t" = xyes && test "x$ac_cv_func_lseek64" = xyes; then + use_largefile=yes + AC_DEFINE(LFS_LARGEFILE_64, 1, [ Define if we use _LARGEFILE64_SOURCE with off64_t and lseek64. ]) + AC_MSG_CHECKING([if we have O_LARGEFILE]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([ + #define _LARGEFILE64_SOURCE + #include + #include + #include + #include + + int foo() + { + return open("foo", O_RDONLY|O_LARGEFILE); + } + ])],[have_o_largefile=yes],[have_o_largefile=no]) + AC_MSG_RESULT([$have_o_largefile]) + if test x"$have_o_largefile" = xno; then + AC_DEFINE(O_LARGEFILE, 0, [ Define to 0 if system does not have/need it. ]) + fi +else + use_largefile=no +fi + +fi # use_largefile auto or yes dnl ############## Function Checks @@ -1244,7 +1358,7 @@ AC_CHECK_FUNCS( sched_setscheduler setuid getuid) # Check for setpriority AC_CHECK_FUNCS( setpriority ) -AC_CHECK_FUNCS( strerror ) +AC_CHECK_FUNCS( strerror strerror_l uselocale ) AC_CHECK_FUNCS( setlocale nl_langinfo mbstowcs wcstombs wcswidth iswprint ) @@ -1310,29 +1424,6 @@ AC_SEARCH_LIBS(socket, socket) AC_CHECK_FUNCS( getaddrinfo, [ have_ipv6=yes ], [ have_ipv6=no ] ) -# Substitutions for the installable mpg123.h header -if test "x$ac_cv_header_stdio_h" = "xyes"; then - INCLUDE_STDIO_H="#include " -else - INCLUDE_STDIO_H="/* #include is not available on this system */" -fi -AC_SUBST(INCLUDE_STDIO_H) - -if test "x$ac_cv_header_stdlib_h" = "xyes"; then - INCLUDE_STDLIB_H="#include " -else - INCLUDE_STDLIB_H="/* #include is not available on this system */" -fi -AC_SUBST(INCLUDE_STDLIB_H) - -if test "x$ac_cv_header_sys_types_h" = "xyes"; then - INCLUDE_SYS_TYPE_H="#include " -else - INCLUDE_SYS_TYPE_H="/* #include is not available on this system */" -fi -AC_SUBST(INCLUDE_SYS_TYPE_H) - - # Checks for maths libraries. AC_CHECK_LIB([m], [sqrt]) AC_CHECK_LIB([mx], [powf]) @@ -1600,7 +1691,7 @@ AC_SUBST(YASM_FORMAT) AC_MSG_CHECKING([if we want feature report function]) feature_report=enabled AC_ARG_ENABLE(feature_report, - [ --disable-feature_report Disable feature report function ], + [AS_HELP_STRING([--disable-feature_report], [Disable feature report function])], [ if test "x$enableval" = xno; then AC_MSG_RESULT([no]) @@ -2344,11 +2435,6 @@ case $host_os in ;; esac -# enable win32 code -if test "x$ac_cv_header_windows_h" = xyes -a "x$host_os" != xcygwin -a "x$host_os" != xmidipix; then - win32_specific_codes=enabled -fi - dnl We do not support non-unicode Windows. if test "x$win32_specific_codes" = xenabled; then #### Check for Wide functions @@ -2485,31 +2571,6 @@ if test x$win32_specific_codes = xenabled; then else AC_MSG_RESULT([no]) fi -# Check GetThreadErrorMode - if test x"$modules" != xdisabled; then - AC_MSG_CHECKING([if we have GetThreadErrorMode]) - AC_LINK_IFELSE([AC_LANG_SOURCE([ - #include - int main(){ - return GetThreadErrorMode(); - }])],[win32_thread_error=yes],[win32_winver_bump=yes]) - if test "x$win32_thread_error" != "xyes"; then - AC_MSG_CHECKING([if we have GetThreadErrorMode]) - AC_LINK_IFELSE([AC_LANG_SOURCE([ - #define WINVER 0x600 - #define _WIN32_WINNT 0x600 - #include - int main(){ - return GetThreadErrorMode(); - }])],[win32_thread_error=yes],[win32_thread_error=no]) - fi - if test "x$win32_thread_error" = "xyes"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_ERROR(GetThreadErrorMode is required but not found) - fi - fi fi #### WINVER Bump @@ -2542,7 +2603,7 @@ AS_IF([test "x$eoverflow_present" = "xyes"],[],[AC_DEFINE([EOVERFLOW],[EFBIG],[U # old network choice AC_ARG_ENABLE(ipv6, - [ --enable-ipv6=[no/yes] IPv6 support in internal network stack ], + [AS_HELP_STRING( [--enable-ipv6], [IPv6 support in internal network stack])], [ if test "x$enableval" = xyes then @@ -2563,7 +2624,7 @@ dnl This is to be kept in sync with --with-network, it is a shortcut that dnl keep the old semantics of being able to --disable-network support altogether. dnl The default should match the --with-network default. AC_ARG_ENABLE(network, - [ --enable-network=[no/yes] network support (http streams / webradio), if available (overruled by --with-network!) ], + [AS_HELP_STRING( [--enable-network], [network support (http streams / webradio), if available (overruled by --with-network!)])], [ if test "x$enableval" = xyes then @@ -2726,13 +2787,127 @@ if test x"$ipv6" = xenabled; then fi fi +dnl ############## Component selection + +AC_ARG_ENABLE(components, + [AS_HELP_STRING([--disable-components], [(not) build end-user programs with default components, select individual components via --enable-libmpg123 etc.])], + [ + if test "x$enableval" = xyes + then + build_all=yes + else + build_all=no + fi + ], + [ + build_all=yes + ] +) + +AC_ARG_ENABLE(libmpg123, + [AS_HELP_STRING([--enable-libmpg123], [build (only) libmpg123 (with --disable-components)])], + [ + if test "x$enableval" = xyes + then + build_libmpg123=yes + else + build_libmpg123=no + fi + ], + [ + build_libmpg123=no + ] +) + +AC_ARG_ENABLE(libout123, + [AS_HELP_STRING([--enable-libout123], [build (only) libout123 (with --disable-components)])], + [ + if test "x$enableval" = xyes + then + build_libout123=yes + else + build_libout123=no + fi + ], + [ + build_libout123=no + ] +) + +AC_ARG_ENABLE(libout123-modules, + [AS_HELP_STRING([--enable-libout123-modules], [build (only) libout123 modules (with --disable-components)])], + [ + if test "x$enableval" = xyes + then + build_libout123_modules=yes + else + build_libout123_modules=no + fi + ], + [ + build_libout123_modules=no + ] +) + +AC_ARG_ENABLE(libsyn123, + [AS_HELP_STRING([--enable-libsyn123], [build (only) libsyn123 (with --disable-components)])], + [ + if test "x$enableval" = xyes + then + build_libsyn123=yes + else + build_libsyn123=no + fi + ], + [ + build_libsyn123=no + ] +) + +if test "x$build_all" = xyes; then + build_programs=yes + build_libmpg123=yes + build_libout123=yes + build_libout123_modules=yes + build_libsyn123=yes + components="programs" +else + build_programs=no +fi + +AM_CONDITIONAL([BUILD_PROGRAMS], [ test "x$build_programs" = xyes ]) +AM_CONDITIONAL([BUILD_LIBMPG123], [ test "x$build_libmpg123" = xyes ]) +AM_CONDITIONAL([BUILD_LIBOUT123], [ test "x$build_libout123" = xyes ]) +AM_CONDITIONAL([BUILD_LIBOUT123_MODULES], [ test "x$build_libout123_modules" = xyes ]) +AM_CONDITIONAL([BUILD_LIBSYN123], [ test "x$build_libsyn123" = xyes ]) +AM_CONDITIONAL([NEED_FMT123], [ test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libsyn123" = xyes ]) +# If we install libraries, prompting pkgconfig and include directories. +AM_CONDITIONAL([NEED_LIB], [ test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libout123_modules" = xyes || test "x$build_libsyn123" = xyes ]) +AM_CONDITIONAL([NEED_MAINLIB], [ test "x$build_libmpg123" = xyes || test "x$build_libout123" = xyes || test "x$build_libsyn123" = xyes ]) +AM_CONDITIONAL([NEED_MAN], [ test "x$build_programs"= = xyes ]) + + +if test "x$build_libmpg123" = xyes; then + components="$components libmpg123" +fi +if test "x$build_libout123" = xyes; then + components="$components libout123" +fi +if test "x$build_libout123_modules" = xyes; then + components="$components libout123-modules" +fi +if test "x$build_libsyn123" = xyes; then + components="$components libsyn123" +fi +components=$(echo $components) + dnl ############## Library cleanup PROG_LIBS=$LIBS LIBS= LIBMPG123_LIBS="$LIBM $COMPAT_LIBS" LIBSYN123_LIBS=$LIBM -LIBOUT123_LIBS="$LIBM $COMPAT_LIBS" +LIBOUT123_LIBS="$LIBRT $LIBM $COMPAT_LIBS" AC_SUBST(PROG_LIBS) AC_SUBST(LIBM) @@ -2748,22 +2923,28 @@ AC_CONFIG_FILES([ libout123.pc libsyn123.pc mpg123.spec - src/libmpg123/mpg123.h - src/libout123/out123.h - src/libsyn123/syn123.h ]) AC_OUTPUT dnl ############## Display Message +default_offset_bits=`expr "$ac_cv_sizeof_off_t" "*" "8"` + echo " $PACKAGE_NAME $PACKAGE_VERSION Install path ............ $prefix + Components .............. $components CPU Optimization ........ $cpu_type - Compiler Optimization ... $with_optimization - Gapless Support ......... $gapless + Compiler Optimization ... $with_optimization" +if test x"$use_yasm_for_avx" = xyes; then + echo " Use yasm (for AVX only) . enabled" +else + echo " Use yasm (for AVX only) . disabled" +fi + +echo " Gapless Support ......... $gapless Debugging ............... $debugging Terminal control ........ $term_type Extreme debugging ....... $xdebugging @@ -2777,19 +2958,10 @@ if test x$network_type != xdisabled; then echo " Internal network type ... $network_internal IPv6 (getaddrinfo) ...... $ipv6" fi -if test x"$LARGEFILE_BITS" = x; then - echo " File offsets ............ default" -else - echo " File offsets ............ $LARGEFILE_BITS" - echo " The lib will (try to) support default offset size, too." -fi -echo " LFS alias symbols ....... $lfs_alias ($LFS_ALIAS_BITS)" -echo " LFS alias type .......... $lfs_alias_type" -if test x"$use_yasm_for_avx" = xyes; then - echo " Use yasm (for AVX only) . enabled" -else - echo " Use yasm (for AVX only) . disabled" -fi +echo " largefile sensitive ..... $lfs_sensitive" +echo " default offsets ......... $default_offset_bits" +echo " explicit 64 bit offsets . $use_largefile" +echo " only portable API ....... $portable_api" echo " Core libmpg123 features: diff --git a/doc/LARGEFILE b/doc/LARGEFILE index 01f77dc..a727cc4 100644 --- a/doc/LARGEFILE +++ b/doc/LARGEFILE @@ -1,3 +1,115 @@ +The state from 1.32.0 on: +========================= + +Yet again, things had to change. The previous state works fine for Unix (adjacent) +sytems, also MinGW stuff on Windows, but it still suffers from off_t being shifty +and not behaving as I expect, even, when people try to build mpg123 with rogue +compilers like MSVC, where off_t is always 32 bits, no largefile support, the whole +idea falls flat. I was pushed to introduce API without off_t where the user can +provide I/O and ensure largefile support and whatnot without being encumbered by +offsets possibly limited to 32 bits. + +So this is a new set of API functions with the explicit suffix 64 (not _64), notably +simple functions like + + int64_t mpg123_tell64() + +but also + + int mpg123_reader64() + +which takes callbacks that work on int64_t, always. The internal reader code path +in libmpg123 uses either 32 bit or 64 bit offsets, but throughout the library, +it is 64 bits being used as if we supported large files everywhere. And in fact, +we do, if the user provides callbacks that are smart enough. + +All existing offset-sensitive code paths are to be rephrased in terms of the new +portable API (portable, because the platform specifics of off_t implementation are +not present). All old API entry points in that regard become wrappers over this +portable API. + +The build of libmpg123 needs explicit awareness of largefile support to properly +reason about which wrapper uses which types. It makes use of off_t at default +size and explicit off64_t if available. This results in this for a typical 32 bit +Linux system: + + int64_t mpg123_tell64(); // passing on the internal int64_t value + off_t mpg123_tell(); // converting to 32 bit off_t (overflow check) + off_t mpg123_tell_32(); // converting to 32 bit off_t (overflow check) + off64_t mpg123_tell_64(); // converting to 64 bit off_t (no overflow) + +A 64 bit Linux would have only these: + + int64_t mpg123_tell64(); // passing on the internal int64_t value + off_t mpg123_tell(); // converting to 64 bit off_t (no overflow) + off_t mpg123_tell_64(); // converting to 64 bit off_t (no overflow) + +This would look the same on a 32 bit system that also went for fixed 64 bit offsets, +or if you + + #define _FILE_OFFSET_BITS 64 + +during build on a sensitive system. On a funny system that has 64 bit native integers +but still 32 bit off_t, this would also be: + + int64_t mpg123_tell64(); // passing on the internal int64_t value + off_t mpg123_tell(); // converting to 32 bit off_t (overflow check) + off_t mpg123_tell_32(); // converting to 32 bit off_t (overflow check) + +If this weird system would be also largefile-sensitive, you get the additional + + off64_t mpg123_tell_64(); // converting to 64 bit off_t (no overflow) + +entry point. + +The whole point here: If you stick to mpg123_tell64(), you always can assume +64 bit offsets on any platform. If you also provide your own reader functions, you +can ensure it. Even if we don't properly do large file I/O in libmpg123 itself in +an MSVC build, users can provide it with their application. Providing a full mpg123 +program binary along with it in that environment is not a current target. You want +the library. + +The point that every platform gets the _64 suffix means that the header can still +do the renaming of function calls if client code defines _FILE_OFFSET_BITS and not +depend on any build-time switches for that. This is what we do officially now with +headers that are not preprocessed anymore, independent of platform. + +The build, just assuming int64 is available, needs to know some bits: + +- SIZEOF_OFF_T==8: Is the system 64 bit clean, anyway, with 64 bit off_t? +- LFS_LARGEFILE_64: Is there explicit 64 bit I/O for the 32 bit system? + This includes availability of off64_t. + +If SIZEOF_OFF_T==8, there will be all 64 bit internal code and two wrappers: + + off_t mpg123_tell(); // converting to 64 bit off_t (no overflow) + off_t mpg123_tell_64(); // converting to 64 bit off_t (no overflow) + +The second question isn't even needed. If SIZEOF_OFF_T==4, you get + + off_t mpg123_tell(); // converting to 32 bit off_t (overflow check) + off_t mpg123_tell_32(); // converting to 32 bit off_t (overflow check) + +and the additional decision of LFS_LARGEFILE_64 gives actual 64 bit internal +reader code and the wrapper + + off64_t mpg123_tell_64(); // converting to 64 bit off_t (no overflow) + +along with that. There is nothing more to know about a system. I do not care how +large your long is. I only ask + +1. How big is your off_t? +2. If small, can you give me some off64_t? + +That's all what there is to it. The build is not even interested in whether off_t +changes size. This is a detail on the client side that it then gets the off64_t +versions. I do not support a system that allows changing off_t size _without_ +off64_t being available. + + +The state from 1.15.4 on: +========================= + Regarding largefile setup, client apps can be built three ways: 1. _FILE_OFFSET_BITS == 64 (header maps to mpg123_open_64) diff --git a/doc/Makemodule.am b/doc/Makemodule.am index 565ff76..abdd498 100644 --- a/doc/Makemodule.am +++ b/doc/Makemodule.am @@ -14,6 +14,7 @@ EXTRA_DIST += \ doc/THANKS \ doc/ACCURACY \ doc/LARGEFILE \ + doc/READERS \ doc/libmpg123_speed.txt \ doc/doxyhead.xhtml \ doc/doxyfoot.xhtml \ @@ -21,6 +22,8 @@ EXTRA_DIST += \ doc/doxygen.conf \ doc/windows-notes.html \ doc/examples/mpg123_to_out123.c \ + doc/examples/mpg123_to_wav_replaced_io.c \ + doc/examples/mpg123_to_wav_reader64.c \ doc/examples/scan.c \ doc/examples/mpglib.c \ doc/examples/id3dump.c \ diff --git a/doc/READERS b/doc/READERS new file mode 100644 index 0000000..188ec75 --- /dev/null +++ b/doc/READERS @@ -0,0 +1,209 @@ +The libmpg123 web of reader abstractions +======================================== + +Somehow the differing ways of getting compressed data into libmpg123 reached +unholy numbers with the years. As keeper of the legacy, I got quite some of that +to keep. There are intersectional layers ... however you might call it. + +An attempt to get an overview and be able to refactor that for the glorious +portable API of mpg123 1.32.0. + +The frame struct has two parts concerned with input streams. + + struct reader *rd; /* pointer to the reading functions */ + struct reader_data rdat; /* reader data and state info */ + +The distinction is blurred a bit: Over time, I added function pointers to +the latter. + +1. Basic methods of data input for (seekable) streams +----------------------------------------------------- + +These reside in the struct reader_data member of the frame struct (mpg123_handle), so +normally fr->rdat. This is an assortment of (user-supplied) function pointers +and stores the stream position and length. The latter was the initial purpose. + +1.1 Reader based around POSIX I/O +--------------------------------- + +This one relies on some read() and lseek() to give the input bytes. With an +innocent mpg123_open(), you trigger compat_open() and further work on the +resulting fd. + +But you can also do mpg123_open_fd() to provide the descriptor yourself. Same +further code path, just no closing. + +1.1.1 Timeout read +------------------ + +The timeout reader is a variant that squeezes into the internal POSIX I/O with +some fcntl() and select() on the file descriptor, and a separate reader callback +stored as fdread(). + +1.2 Replaced I/O on file descriptor +----------------------------------- + +After calling mpg123_replace_reader(), you have your callbacks (or the respective +fallback callback) operating on the file descriptor that could have resulted +from internal opening or been handed over to libmpg123. + +1.3 Replaced I/O on custom handle +--------------------------------- + +This replaces both read() and lseek() with your callbacks and opening is +full external, just the handle being handed over via mpg123_open_handle(). + +1.4 Replaced I/O on custom handle using 64 bit offsets +------------------------------------------------------ + +This is to come, the above just with a differing style of callbacks that avoid +off_t. I intend to pack all the above into wrapper code and have this whole +first aspect of differing callbacks removed. + + +2. Abstractions +--------------- + +The actual interface to the parser is given by instances of struct reader. This +is usually accessed as fr->rd and contains function pointers to specific routines +like fullread() and head_read(). These access the basic methods behind the scenes. + +There is overlap in the functions. The main differentiator is the fullread() call, +which is the next layer of read(). I guess code sharing could be one excuse not +to have each of these as a wholly separate I/O layer implementation. + +2.1 READER_STREAM +----------------- + +This reader handles a plain possibly seekable input stream. It introduces the +plain_fullread() function which loops over fr->rdat.fdread() until the desired +bytes are aquired or EOF occurs. There is no signal handling. A return value +less than zero is an error and the end, the function returning a short byte +count. This function also advances fr->rdat.filepos if the reader is not +buffered. + +2.2 READER_ICY_STREAM +--------------------- + +This replaces plain_fullread() with icy_fullread(), which looks out for ICY +metadata at the configured interval. It resorts to fr->rdat.fdread() and +plain_fullread() to do its chores. + +2.3 READER_FEED +--------------- + +The reader handling libmpg123 feeder mode. It stuffs data into an internal buffer +and extracts from that, handing out READER_MORE as error to be recovered from +when the client provides more data. It provides a bit of seeking within the +buffer for parsing (look-ahead) purposes, before read data is purged from the +buffer chain. + +The actual mid-level reader here is feed_read(), wrapping over the bufferchain data +structre with its methods. + +2.4 READER_BUF_STREAM +--------------------- + +For some reason, I had to add a mode for a stream with some buffering +(MPG123_SEEKBUFFER). Well ... yes, MPEG parsing is just more fun if you can peek +ahead and have a little window of input data to work with. This used to employ +buffered_fullread(), which in turn called fr->rdat.fullread(), which was +plain_fullread() for this variant, and wraped a bufferchain around it. + +Now this got its separate buffered_plain_fullread() without the extra function +pointer in fr->rdat. + +2.5 READER_BUF_ICY_STREAM +------------------------- + +This is the same buffered reader but with buffered_icy_fullread() instead. + + +3. Control flow for setting up a stream +======================================= + +3.1 mpg123_open() +----------------- + +Client code just opens a track or possibly called mpg123_replace_reader() +beforehand, which does not change the opening behaviour. + +This accesses the given file path via compat_open(), stores a file descriptor, +calls reader stream init which checks seekability (also fetching ID3v1) and +stores file size. This results in one of the READER_*STREAM family. + +The lfs_wrap machinery gets triggrered and inserts its callbacks, working +on the prepared wrapper data. + +3.2 mpg123_open_fd() +-------------------- + +This just skips the compat_open() and stores the given file descriptor, assuming +that it works with the configured callbacks. The same dance with stream setup. + +The lfs_wrap machinery gets triggrered and inserts its callbacks, working +on the prepared wrapper data. + +3.3 mpg123_open_handle() +------------------------ + +Also skips the opening, stores the handle and does the stream setup. + +This shall not trigger callback insertion. The idea is that the user did +call mpg123_reader64() or a wrapper variant of it before. The wrapper code +itself finalizes its work with a call to mpg123_reader64(). + +Oh, wait. What about the other wrapper calls? Client code calls +mpg123_replace_reader_handle() with its callbacks, be it off_t or off64_t. +This needs to trigger preparation of wrapperdata and installment of wrapper +callbacks via mpg123_reader64(). A subsequent mpg123_open_handle() needs +to store the actual client handle inside the wrapperdata structure and use +the latter as iohandle for stream operation. I need tell apart internal and +external use of mpg123_reader64(). + +So store a flag for that? Is there another way without introducing yet another +function? Well, the wrapperdata can have two states that fit this scenario: + +- not present at all +- present with a respective state set + +I want to avoid unnecessary allocation of the wrapperdata (just because I am that +kind of person). So I need to ensure that INT123_wrap_open() when called with +an external handle and not encountering an existing wrapperdata instance, does not +allocate one, but just silently does nothing, as there is nothing to do. Well, +it can check if callbacks are in place. At least that. + + +3.4 mpg123_open_feed() +---------------------- + +Prepares for the non-seekable feeder mode, limited stream setup because peeking +at the end won't work. + +This does not trigger the wrapper ... except ... should it unregister its +callbacks? No. The code path of the feeder is separate enough that it does +not interfere. + + +4. Plan +======= + +Keep the abstractions in readers.c, move all variants of POSIX-like callback stuff +into the wrapper section (lfs_wrap.c for now). In theory, the buffer chain for +the feeder could also be moved into a variant hidden behind mpg123_reader64(). Maybe +in the future. At some point. + +I don't want any mpg123 internals regarding the frame struct in the wrapper +implementation. So maybe lfs_wrap.c only offers wrapper setup as such and +libmpg123.c does the actual stream opening? No. The explicit largefile stuff +needs to be handled (O_LARGEFILE). But the further stream setup ... that +should happen in mpg123_open() and friends, after reader handle setup. + +I still need fr->rdat.flags for selecting buffered etc., but not for +READER_FD_OPENEND or READER_NONBLOCK. + +Both fr->rdat.fullread and fr->rdat.fdread are gone now. The picture is getting +clearer. + +I made the static functions fdread() and fdseek() robust against missing +callbacks. It's a question if we'd rather want to catch those earlier, though. diff --git a/doc/README.remote b/doc/README.remote index c436a1d..f8031bc 100644 --- a/doc/README.remote +++ b/doc/README.remote @@ -179,6 +179,10 @@ to help parsers decide if they got the whole list. a = 2: playing unpaused a = 3: end of track reached (followed by another status response) +@DRAIN + Output buffer of s seconds is being drained, without chance of interruption. + (since v11) + @E An error occured Errors may be also reported by mpg123 through diff --git a/doc/doxyhead.xhtml b/doc/doxyhead.xhtml index d47767c..3aed1a7 100644 --- a/doc/doxyhead.xhtml +++ b/doc/doxyhead.xhtml @@ -9,10 +9,10 @@ Note: This API doc is automatically generated from the current development version that you can get via Subversion or as a daily snapshot from http://mpg123.org/snapshot. There may be differences (additions) compared to the latest stable release. See - NEWS.libmpg123, - NEWS.libout123, - NEWS.libsyn123, - and the overall NEWS file on libmpg123 versions and important changes between them.
+ NEWS.libmpg123, + NEWS.libout123, + NEWS.libsyn123, + and the overall NEWS file on libmpg123 versions and important changes between them.
Let me emphasize that the policy for the lib*123 family is to always stay backwards compatible -- only additions are planned (and it's not yet planned to change the plans;-).
diff --git a/doc/examples/Makefile b/doc/examples/Makefile index f185c51..44bda59 100644 --- a/doc/examples/Makefile +++ b/doc/examples/Makefile @@ -2,6 +2,7 @@ targets = \ feedseek \ mpg123_to_out123 \ mpg123_to_wav_replaced_io \ + mpg123_to_wav_reader64 \ scan \ id3dump \ mpglib \ @@ -40,6 +41,9 @@ mpg123_to_out123: mpg123_to_out123.c mpg123_to_wav_replaced_io: mpg123_to_wav_replaced_io.c $(compile) -o $@ $< $(OUT123_CFLAGS) $(OUT123_LDFLAGS) $(linkflags) +mpg123_to_wav_reader64: mpg123_to_wav_reader64.c + $(compile) -o $@ $< $(OUT123_CFLAGS) $(OUT123_LDFLAGS) $(linkflags) + feedseek: feedseek.c $(compile) -o feedseek feedseek.c $(OUT123_CFLAGS) $(OUT123_LDFLAGS) $(linkflags) diff --git a/doc/examples/extract_frames.c b/doc/examples/extract_frames.c index 6fd523f..7ec490d 100644 --- a/doc/examples/extract_frames.c +++ b/doc/examples/extract_frames.c @@ -69,7 +69,8 @@ int do_work(mpg123_handle *m) ret = mpg123_open_fd(m, STDIN_FILENO); if(ret != MPG123_OK) return ret; - while( (ret = mpg123_framebyframe_next(m)) == MPG123_OK || ret == MPG123_NEW_FORMAT ) + ssize_t wret = 0; + while( !wret && (ret = mpg123_framebyframe_next(m)) == MPG123_OK || ret == MPG123_NEW_FORMAT ) { unsigned long header; unsigned char *bodydata; @@ -82,14 +83,20 @@ int do_work(mpg123_handle *m) for(i=0; i<4; ++i) hbuf[i] = (unsigned char) ((header >> ((3-i)*8)) & 0xff); /* Now write out both header and data, fire and forget. */ - write(STDOUT_FILENO, hbuf, 4); - write(STDOUT_FILENO, bodydata, bodybytes); + wret = write(STDOUT_FILENO, hbuf, 4); + if(!wret) + wret = write(STDOUT_FILENO, bodydata, bodybytes); fprintf(stderr, "%zu: header 0x%08lx, %zu body bytes\n", ++count, header, bodybytes); } } if(ret != MPG123_DONE) - fprintf(stderr, "Some error occured (non-fatal?): %s\n", mpg123_strerror(m)); + fprintf(stderr, "Some error occured (non-fatal?): %s\n", mpg123_strerror(m)); + if(wret) + { + fprintf(stderr, "Write error.\n"); + ret = MPG123_ERR; + } fprintf(stderr, "Done with %zu MPEG frames.\n", count); diff --git a/doc/examples/mpg123_to_wav_reader64.c b/doc/examples/mpg123_to_wav_reader64.c new file mode 100644 index 0000000..a8d9d0f --- /dev/null +++ b/doc/examples/mpg123_to_wav_reader64.c @@ -0,0 +1,203 @@ +/* + mpg123_to_wav_replaced_io.c + + This is example code only sensible to be considered in the public domain. + Initially written by Nicholas Humfrey (moved to 64 bit handle I/O by Thomas Orgis). + + This example program demonstrates how to use libmpg123 to decode a file to WAV (writing via libsndfile), while doing the I/O (read and seek) with custom callback functions. + This should cater for any situation where you have some special means to get to the data (like, mmapped files / plain buffers in memory, funky network streams). + + Disregarding format negotiations, the basic synopsis is: + + mpg123_init() + mpg123_new() + mpg123_replace_reader_handle() + + mpg123_open_handle() + mpg123_read() + mpg123_close() + + mpg123_delete() + mpg123_exit() +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#else +#include +#endif +#include + +#if MPG123_API_VERSION < 48 +#error "Need minimum mpg123 API version 48." +#endif + + +void usage(const char *cmd) +{ + printf("Usage: %s \n", cmd); + exit(99); +} + +void cleanup(mpg123_handle *mh, out123_handle *ao) +{ + out123_del(ao); + /* It's really to late for error checks here;-) */ + mpg123_close(mh); + mpg123_delete(mh); + mpg123_exit(); +} + +/* Simple handle for you private I/O data. */ +struct ioh { int fd; }; + +/* The callback functions; simple wrappers over standard I/O. + They could be anything you like... */ + +static int read_cb(void *handle, void *buf, size_t sz, size_t *got) +{ + if(!handle) + return -1; + struct ioh *h = handle; + errno = 0; + // Ideally, you check for singnals in here where they should not interrupt + // operations (handle EINTR, for example). + ssize_t gots = read(h->fd, buf, sz); + if(gots < 0) + { + fprintf(stderr, "read error: %s\n", strerror(errno)); + return -1; + } + if(got) + *got = (size_t)gots; + return 0; +} + +// You should be more careful if off_t < int64_t. Ideally, you know +// you have 64 bit I/O. +static int64_t lseek_cb(void *handle, int64_t offset, int whence) +{ + if(!handle) + return -1; + int64_t ret; + struct ioh *h = handle; + ret = (int64_t)lseek(h->fd, (off_t)offset, whence); + if(ret < 0) fprintf(stderr, "seek error: %s\n", strerror(errno)); + + return ret; +} + +/* The cleanup handler is called on mpg123_close(), it can cleanup your part of the mess... */ +void cleanup_cb(void *handle) +{ + if(!handle) + return; + struct ioh *h = handle; + close(h->fd); + h->fd = -1; +} + + +int main(int argc, char *argv[]) +{ + mpg123_handle *mh = NULL; + out123_handle *ao = NULL; + unsigned char* buffer = NULL; + size_t buffer_size = 0; + size_t done = 0; + int channels = 0, encoding = 0; + long rate = 0; + int err = MPG123_OK; + off_t samples = 0; + struct ioh *iohandle; + + if (argc!=3) usage(argv[0]); + printf( "Input file: %s\n", argv[1]); + printf( "Output file: %s\n", argv[2]); + +#if MPG123_API_VERSION < 46 + // Newer versions of the library don't need that anymore, but it is safe + // to have the no-op call present for compatibility with old versions. + err = mpg123_init(); +#endif + + errno = 0; + iohandle = malloc(sizeof(struct ioh)); + iohandle->fd = open(argv[1], O_RDONLY); + if(iohandle->fd < 0) + { + fprintf(stderr, "Cannot open input file (%s).\n", strerror(errno)); + return -1; + } + + if( err != MPG123_OK || (mh = mpg123_new(NULL, &err)) == NULL + /* Let mpg123 work with the file, that excludes MPG123_NEED_MORE messages. */ + || mpg123_reader64(mh, read_cb, lseek_cb, cleanup_cb) != MPG123_OK + || mpg123_open_handle(mh, iohandle) != MPG123_OK + /* Peek into track and get first output format. */ + || mpg123_getformat(mh, &rate, &channels, &encoding) != MPG123_OK ) + { + fprintf( stderr, "Trouble with mpg123: %s\n", + mh==NULL ? mpg123_plain_strerror(err) : mpg123_strerror(mh) ); + cleanup(mh, ao); + return -1; + } + + if(encoding != MPG123_ENC_SIGNED_16) + { /* Signed 16 is the default output format anyways; it would actually by only different if we forced it. + So this check is here just for this explanation. */ + cleanup(mh, ao); + fprintf(stderr, "Bad encoding: 0x%x!\n", encoding); + return -2; + } + /* Ensure that this output format will not change (it could, when we allow it). */ + mpg123_format_none(mh); + mpg123_format(mh, rate, channels, encoding); + + printf("Creating 16bit WAV with %i channels and %liHz.\n", channels, rate); + if( + !(ao = out123_new()) + || out123_open(ao, "wav", argv[2]) + || out123_start(ao, rate, channels, encoding) + ) + { + fprintf(stderr, "Cannot create / start output: %s\n" + , out123_strerror(ao)); + cleanup(mh, ao); + return -1; + } + + /* Buffer could be almost any size here, mpg123_outblock() is just some recommendation. + Important, especially for sndfile writing, is that the size is a multiple of sample size. */ + buffer_size = mpg123_outblock( mh ); + buffer = malloc( buffer_size ); + + do + { + err = mpg123_read( mh, buffer, buffer_size, &done ); + out123_play(ao, buffer, done); + samples += done/sizeof(short); + /* We are not in feeder mode, so MPG123_OK, MPG123_ERR and MPG123_NEW_FORMAT are the only possibilities. + We do not handle a new format, MPG123_DONE is the end... so abort on anything not MPG123_OK. */ + } while (done && err==MPG123_OK); + + free(buffer); + + if(err != MPG123_DONE) + fprintf( stderr, "Warning: Decoding ended prematurely because: %s\n", + err == MPG123_ERR ? mpg123_strerror(mh) : mpg123_plain_strerror(err) ); + + samples /= channels; + printf("%li samples written.\n", (long)samples); + cleanup(mh, ao); + free(iohandle); + return 0; +} diff --git a/doc/examples/mpg123_to_wav_replaced_io.c b/doc/examples/mpg123_to_wav_replaced_io.c new file mode 100644 index 0000000..75c43b9 --- /dev/null +++ b/doc/examples/mpg123_to_wav_replaced_io.c @@ -0,0 +1,185 @@ +/* + mpg123_to_wav_replaced_io.c + + This is example code only sensible to be considered in the public domain. + Initially written by Nicholas Humfrey (moved to handle I/O by Thomas Orgis). + + This example program demonstrates how to use libmpg123 to decode a file to WAV (writing via libout123), while doing the I/O (read and seek) with custom callback functions. + This should cater for any situation where you have some special means to get to the data (like, mmapped files / plain buffers in memory, funky network streams). + + Disregarding format negotiations, the basic synopsis is: + + mpg123_init() + mpg123_new() + mpg123_replace_reader_handle() + + mpg123_open_handle() + mpg123_read() + mpg123_close() + + mpg123_delete() + mpg123_exit() +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#else +#include +#endif +#include + +void usage(const char *cmd) +{ + printf("Usage: %s \n", cmd); + exit(99); +} + +void cleanup(mpg123_handle *mh, out123_handle *ao) +{ + out123_del(ao); + /* It's really to late for error checks here;-) */ + mpg123_close(mh); + mpg123_delete(mh); + mpg123_exit(); +} + +/* Simple handle for you private I/O data. */ +struct ioh { int fd; }; + +/* The callback functions; simple wrappers over standard I/O. + They could be anything you like... */ + +static mpg123_ssize_t read_cb(void *handle, void *buf, size_t sz) +{ + mpg123_ssize_t ret; + struct ioh *h = handle; + errno = 0; + ret = read(h->fd, buf, sz); + if(ret < 0) fprintf(stderr, "read error: %s\n", strerror(errno)); + + return ret; +} + +static off_t lseek_cb(void *handle, off_t offset, int whence) +{ + off_t ret; + struct ioh *h = handle; + ret = lseek(h->fd, offset, whence); + if(ret < 0) fprintf(stderr, "seek error: %s\n", strerror(errno)); + + return ret; +} + +/* The cleanup handler is called on mpg123_close(), it can cleanup your part of the mess... */ +void cleanup_cb(void *handle) +{ + struct ioh *h = handle; + close(h->fd); + h->fd = -1; +} + + +int main(int argc, char *argv[]) +{ + mpg123_handle *mh = NULL; + out123_handle *ao = NULL; + unsigned char* buffer = NULL; + size_t buffer_size = 0; + size_t done = 0; + int channels = 0, encoding = 0; + long rate = 0; + int err = MPG123_OK; + off_t samples = 0; + struct ioh *iohandle; + + if (argc!=3) usage(argv[0]); + printf( "Input file: %s\n", argv[1]); + printf( "Output file: %s\n", argv[2]); + +#if MPG123_API_VERSION < 46 + // Newer versions of the library don't need that anymore, but it is safe + // to have the no-op call present for compatibility with old versions. + err = mpg123_init(); +#endif + + errno = 0; + iohandle = malloc(sizeof(struct ioh)); + iohandle->fd = open(argv[1], O_RDONLY); + if(iohandle->fd < 0) + { + fprintf(stderr, "Cannot open input file (%s).\n", strerror(errno)); + return -1; + } + + if( err != MPG123_OK || (mh = mpg123_new(NULL, &err)) == NULL + /* Let mpg123 work with the file, that excludes MPG123_NEED_MORE messages. */ + || mpg123_replace_reader_handle(mh, read_cb, lseek_cb, cleanup_cb) != MPG123_OK + || mpg123_open_handle(mh, iohandle) != MPG123_OK + /* Peek into track and get first output format. */ + || mpg123_getformat(mh, &rate, &channels, &encoding) != MPG123_OK ) + { + fprintf( stderr, "Trouble with mpg123: %s\n", + mh==NULL ? mpg123_plain_strerror(err) : mpg123_strerror(mh) ); + cleanup(mh, ao); + return -1; + } + + if(encoding != MPG123_ENC_SIGNED_16) + { /* Signed 16 is the default output format anyways; it would actually by only different if we forced it. + So this check is here just for this explanation. */ + cleanup(mh, ao); + fprintf(stderr, "Bad encoding: 0x%x!\n", encoding); + return -2; + } + /* Ensure that this output format will not change (it could, when we allow it). */ + mpg123_format_none(mh); + mpg123_format(mh, rate, channels, encoding); + + printf("Creating 16bit WAV with %i channels and %liHz.\n", channels, rate); + if( + !(ao = out123_new()) + || out123_open(ao, "wav", argv[2]) + || out123_start(ao, rate, channels, encoding) + ) + { + fprintf(stderr, "Cannot create / start output: %s\n" + , out123_strerror(ao)); + cleanup(mh, ao); + return -1; + } + + /* Buffer could be almost any size here, mpg123_outblock() is just some recommendation. + Important, especially for sndfile writing, is that the size is a multiple of sample size. */ + buffer_size = mpg123_outblock( mh ); + buffer = malloc( buffer_size ); + + do + { + err = mpg123_read( mh, buffer, buffer_size, &done ); + out123_play(ao, buffer, done); + samples += done/sizeof(short); + /* We are not in feeder mode, so MPG123_OK, MPG123_ERR and MPG123_NEW_FORMAT are the only possibilities. + We do not handle a new format, MPG123_DONE is the end... so abort on anything not MPG123_OK. */ + } while (done && err==MPG123_OK); + + free(buffer); + + if(err != MPG123_DONE) + fprintf( stderr, "Warning: Decoding ended prematurely because: %s\n", + err == MPG123_ERR ? mpg123_strerror(mh) : mpg123_plain_strerror(err) ); + + samples /= channels; + printf("%li samples written.\n", (long)samples); + cleanup(mh, ao); + free(iohandle); + return 0; +} diff --git a/m4/libtool.m4 b/m4/libtool.m4 index a6d21ae..c4c0294 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1071,11 +1071,11 @@ _LT_EOF # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) + 10.*|11.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; diff --git a/man1/mpg123.1 b/man1/mpg123.1 deleted file mode 100644 index 0d96f8f..0000000 --- a/man1/mpg123.1 +++ /dev/null @@ -1,643 +0,0 @@ -.TH mpg123 1 "11 Jul 2022" -.SH NAME -mpg123 \- play audio MPEG 1.0/2.0/2.5 stream (layers 1, 2 and 3) -.SH SYNOPSIS -.B mpg123 -[ -.I options -] -.IR file-or-URL ... -.SH DESCRIPTION -.B mpg123 -reads one or more -.IR file\^ s -(or standard input if ``\-'' is specified) or -.IR URL\^ s -and plays them on the audio device (default) or -outputs them to stdout. -.IR file\^ / URL -is assumed to be an MPEG audio bit stream. -.SH OPERANDS -The following operands are supported: -.TP 8 -.IR file (s) -The path name(s) of one or more input files. They must be -valid MPEG-1.0/2.0/2.5 audio layer 1, 2 or 3 bit streams. -If a dash ``\-'' is specified, MPEG data will -be read from the standard input. Furthermore, any name -starting with ``http://'' or ``https://'' is recognized as -.I URL -(see next section), while a leading ``file://'' is being stripped for -normal local file access, for consistency (since mpg123 1.30.1). -.SH OPTIONS -.B mpg123 -options may be either the traditional POSIX one letter options, -or the GNU style long options. POSIX style options start with a -single ``\-'', while GNU long options start with ``\-\^\-''. -Option arguments (if needed) follow separated by whitespace (not ``=''). -Note that some options can be absent from your installation when disabled in the build process. -.SH INPUT OPTIONS -.TP -\fB\-k \fInum\fR, \fB\-\^\-skip \fInum -Skip first -.I num -frames. By default the decoding starts at the first frame. -.TP -\fB\-n \fInum\fR, \fB\-\^\-frames \fInum -Decode only -.I num -frames. By default the complete stream is decoded. -.TP -.BR \-\-fuzzy -Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC). -Without that, seeks need a first scan through the file before they can jump at positions. -You can decide here: sample-accurate operation with gapless features or faster (fuzzy) seeking. -.TP -.BR \-y ", " \-\^\-no\-resync -Do NOT try to resync and continue decoding if an error occurs in -the input file. Normally, -.B mpg123 -tries to keep the playback alive at all costs, including skipping invalid material and searching new header when something goes wrong. -With this switch you can make it bail out on data errors -(and perhaps spare your ears a bad time). Note that this switch has been renamed from \-\-resync. -The old name still works, but is not advertised or recommended to use (subject to removal in future). -.TP -.BR \-F ", " \-\^\-no\-frankenstein -Disable support for Frankenstein streams. Normally, mpg123 stays true to the concept of MPEG audio being -just a concatenation of MPEG frames. It will continue decoding even if the type of MPEG frames varies -wildly. With this switch, it will only decode the input as long as it does not change its character -(from layer I to layer III, changing sampling rate, from mono to stereo), silently assuming end of -stream on such occasion. The switch also stops decoding of compatible MPEG frames if there was an -Info frame (Xing header, Lame tag) that contained a length of the track in MPEG frames. -This comes a bit closer to the notion of a MP3 file as a defined collection -of MPEG frames that belong together, but gets rid of the flexibility that can be fun at times but -mostly is hell for the programmer of the parser and decoder ... -.TP -\fB\-\^\-network \fI backend -Select network backend (helper program), choices are usually auto, wget, and curl. -Auto means to try the first available backend. -.TP -\fB\-\^-resync\-limit \fIbytes\fR -Set number of bytes to search for valid MPEG data once lost in stream; <0 means search whole stream. -If you know there are huge chunks of invalid data in your files... here is your hammer. -Note: Only since version 1.14 this also increases the amount of junk skipped on beginning. -.TP -\fB\-u \fIauth\fR, \fB\-\^\-auth \fIauth -HTTP authentication to use when receiving files via HTTP. -The format used is user:password. Mpg123 will clear this quickly, but it may still appear -in sight of other users or even just in your shell history. You may seek alternative ways -to specify that to your network backend. -.TP -\fB\-\^\-auth-file \fIauthfile -Provide the authentication info via given file instead of command line directly. -.TP -\fB\-\^\-ignore\-mime -Ignore MIME types given by HTTP server. If you know better and want mpg123 -to decode something the server thinks is image/png, then just do it. -.TP -\fB\-\^\-no\-icy\-meta -Do not accept ICY meta data. -.TP -\fB\-\^-streamdump \fIfilename\fR -Dump a copy of the input data (as read by libmpg123) to the given file. -This enables you to store a web stream to disk while playing, or just create -a concatenation of the local files you play for ... why not? -.TP -\fB\-\^-icy\-interval \fIbytes\fR -This setting enables you to play a stream dump containing ICY metadata at the given -interval in bytes (the value of the icy-metaint HTTP response header). Without it, -such a stream will play, but will cause regular decoding glitches with resync. -.TP -\fB\-\^\-no\-seekbuffer -Disable the default micro-buffering of non-seekable streams that gives the -parser a safer footing. -.TP -\fB\-@ \fIfile\fR, \fB\-\^\-list \fIfile -Read filenames and/or URLs of MPEG audio streams from the specified -.I file -in addition to the ones specified on the command line (if any). -Note that -.I file -can be either an ordinary file, a dash ``\-'' to indicate that -a list of filenames/URLs is to be read from the standard input, -or an URL pointing to a an appropriate list file. Note: only -one -.B \-@ -option can be used (if more than one is specified, only the -last one will be recognized). Furthermore, for HTTP resources, the -MIME type information will be used to re-open an actual MPEG stream as -such instead of treating it as playlist file. So you could just always -use -.B \-@ -for web resources without bothering if it is a playlist or already the resolved -stream address. -.TP -\fB\-l \fIn\fR, \fB\-\^\-listentry \fIn -Of the playlist, play specified entry only. -.I n -is the number of entry starting at 1. A value of 0 is the default and means playing the whole list, a negative value means showing of the list of titles with their numbers... -.TP -\fB\-\^\-continue -Enable playlist continuation mode. This changes frame skipping to apply only to the first track and also continues to play following tracks in playlist after the selected one. Also, the option to play a number of frames only applies to the whole playlist. Basically, this tries to treat the playlist more like one big stream (like, an audio book). -The current track number in list (1-based) and frame number (0-based) are printed at exit (useful if you interrupted playback and want to continue later). -Note that the continuation info is printed to standard output unless the switch for piping audio data to standard out is used. Also, it really makes sense to work with actual playlist files instead of lists of file names as arguments, to keep track positions consistent. -.TP -\fB\-\-loop \fItimes\fR -for looping track(s) a certain number of times, < 0 means infinite loop (not with \-\-random!). -.TP -.BR \-\-keep\-open -For remote control mode: Keep loaded file open after reaching end. -.TP -\fB\-\-timeout \fIseconds\fR -Timeout in (integer) seconds before declaring a stream dead (if <= 0, wait forever). -.TP -.BR \-z ", " \-\^\-shuffle -Shuffle play. Randomly shuffles the order of files specified on the command -line, or in the list file. -.TP -.BR \-Z ", " \-\-random -Continuous random play. Keeps picking a random file from the command line -or the play list. Unlike shuffle play above, random play never ends, and -plays individual songs more than once. -.TP -\fB\-i, \-\^-index -Index / scan through the track before playback. -This fills the index table for seeking (if enabled in libmpg123) and may make the operating system cache the file contents for smoother operating on playback. -.TP -\fB\-\-index\-size \fIsize\fR -Set the number of entries in the seek frame index table. -.TP -\fB\-\-preframes \fInum\fR -Set the number of frames to be read as lead-in before a seeked-to position. -This serves to fill the layer 3 bit reservoir, which is needed to faithfully reproduce a certain sample at a certain position. -Note that for layer 3, a minimum of 1 is enforced (because of frame overlap), and for layer 1 and 2, this is limited to 2 (no bit reservoir in that case, but engine spin-up anyway). - -.SH OUTPUT and PROCESSING OPTIONS -.TP -\fB\-o \fImodule\fR, \fB\-\^\-output \fImodule\fR -Select audio output module. You can provide a comma-separated list to use the first one that works. -Also see \fB\-a\fR. -.TP -\fB\-\^\-list\-modules -List the available modules. -.TP -\fB\-\^\-list\-devices -List the available output devices for given output module. If there is no functionality -to list devices in the chosen module, an error will be printed and mpg123 will exit with -a non-zero code. -.TP -\fB\-a \fIdev\fR, \fB\-\^\-audiodevice \fIdev -Specify the audio device to use. The default as well as the possible values -depend on the active output. For the JACK output, a comma-separated list -of ports to connect to (for each channel) can be specified. -.TP -.BR \-s ", " \-\^\-stdout -The decoded audio samples are written to standard output, -instead of playing them through the audio device. This -option must be used if your audio hardware is not supported -by -.BR mpg123 . -The output format per default is raw (headerless) linear PCM audio data, -16 bit, stereo, host byte order (you can force mono or 8bit). -.TP -\fB\-O \fIfile\fR, \fB\-\^\-outfile -Write raw output into a file (instead of simply redirecting standard output to a file with the shell). -.TP -\fB\-w \fIfile\fR, \fB\-\^\-wav -Write output as WAV file. This will cause the MPEG stream to be decoded -and saved as file -.I file -, or standard output if -.I - -is used as file name. You can also use -.I --au -and -.I --cdr -for AU and CDR format, respectively. Note that WAV/AU writing to non-seekable files, or redirected stdout, needs some thought. Since 1.16.0, the logic changed to writing the header with the first actual data. This avoids spurious WAV headers in a pipe, for example. The result of decoding nothing to WAV/AU is a file consisting just of the header when it is seekable and really nothing when not (not even a header). Correctly writing data with prophetic headers to stdout is no easy business. -.TP -\fB\-\^\-au \fIfile -Does not play the MPEG file but writes it to -.I file -in SUN audio format. If \- is used as the filename, the AU file is -written to stdout. See paragraph about WAV writing for header fun with non-seekable streams. -.TP -\fB\-\^\-cdr \fIfile -Does not play the MPEG file but writes it to -.I file -as a CDR file. If \- is used as the filename, the CDR file is written -to stdout. -.TP -.BR \-\-reopen -Forces reopen of the audiodevice after ever song -.TP -.BR \-\-cpu\ \fIdecoder\-type -Selects a certain decoder (optimized for specific CPU), for example i586 or MMX. -The list of available decoders can vary; depending on the build and what your CPU supports. -This option is only available when the build actually includes several optimized decoders. -.TP -.BR \-\-test\-cpu -Tests your CPU and prints a list of possible choices for \-\-cpu. -.TP -.BR \-\-list\-cpu -Lists all available decoder choices, regardless of support by your CPU. -.TP -\fB\-g \fIgain\fR, \fB\-\^\-gain \fIgain -[DEPRECATED] Set audio hardware output gain (default: don't change). The unit of the gain value is hardware and output module dependent. -(This parameter is only provided for backwards compatibility and may be removed in the future without prior notice. Use the audio player for playing and a mixer app for mixing, UNIX style!) -.TP -\fB\-f \fIfactor\fR, \fB\-\^\-scale \fIfactor -Change scale factor (default: 32768). -.TP -.BR \-\-rva-mix,\ \-\-rva-radio -Enable RVA (relative volume adjustment) using the values stored for ReplayGain radio mode / mix mode with all tracks roughly equal loudness. -The first valid information found in ID3V2 Tags (Comment named RVA or the RVA2 frame) or ReplayGain header in Lame/Info Tag is used. -.TP -.BR \-\-rva-album,\ \-\-rva-audiophile -Enable RVA (relative volume adjustment) using the values stored for ReplayGain audiophile mode / album mode with usually the effect of adjusting album loudness but keeping relative loudness inside album. -The first valid information found in ID3V2 Tags (Comment named RVA_ALBUM or the RVA2 frame) or ReplayGain header in Lame/Info Tag is used. -.TP -.BR \-0 ", " \-\^\-single0 "; " \-1 ", " \-\^\-single1 -Decode only channel 0 (left) or channel 1 (right), -respectively. These options are available for -stereo MPEG streams only. -.TP -.BR \-m ", " \-\^\-mono ", " \-\^\-mix ", " \-\^\-singlemix -Mix both channels / decode mono. It takes less -CPU time than full stereo decoding. -.TP -.BR \-\-stereo -Force stereo output -.TP -\fB\-r \fIrate\fR, \fB\-\^\-rate \fIrate -Set sample rate (default: automatic). You may want to -change this if you need a constant bitrate independent of -the mpeg stream rate. mpg123 automagically converts the -rate. You should then combine this with \-\-stereo or \-\-mono. -.TP -\fB\-\^\-resample \fImethod -Set resampling method to employ if forcing an output rate. Choices (case-insensitive) are NtoM, -dirty, and fine. The fine resampler is the default. It employs libsyn123's low-latency fairly -efficient resampler to postprocess the output from libmpg123 instead of the fast but very crude -NtoM decoder (drop sample method) that mpg123 offers since decades. If you are really low on -CPU time, choose NtoM, as the resampler usually needs more time than the MPEG decoder itself. -The mpg123 program is smart enough to combine the 2to1 or 4to1 downsampling modes with the -postprocessing for extreme downsampling. -.TP -.BR \-2 ", " \-\^\-2to1 "; " \-4 ", " \-\^\-4to1 -Performs a downsampling of ratio 2:1 (22 kHz from 44.1 kHz) or 4:1 (11 kHz) -on the output stream, respectively. Saves some CPU cycles, but of course throws away -the high frequencies, as the decoder does not bother producing them. -.TP -.BR \-\-pitch\ \fIvalue -Set a pitch change (speedup/down, 0 is neutral; 0.05 is 5% speedup). When not enforcing an -output rate, this changes the output sampling rate, so it only works in the range your audio -system/hardware supports. When you combine this with a fixed output rate, it modifies a -software resampling ratio instead. -.TP -.BR \-\-8bit -Forces 8bit output -.TP -\fB\-\^\-float -Forces f32 encoding -.TP -\fB\-e \fIenc\fR, \fB\-\^\-encoding \fIenc -Choose output sample encoding. Possible values look like f32 (32-bit floating point), s32 (32-bit signed integer), u32 (32-bit unsigned integer) and the variants with different numbers of bits (s24, u24, s16, u16, s8, u8) and also special variants like ulaw and alaw 8-bit. -See the output of mpg123's longhelp for actually available encodings. -.TP -\fB\-d \fIn\fR, \fB\-\^\-doublespeed \fIn -Only play every -.IR n 'th -frame. This will cause the MPEG stream -to be played -.I n -times faster, which can be used for special -effects. Can also be combined with the -.B \-\^\-halfspeed -option to play 3 out of 4 frames etc. Don't expect great -sound quality when using this option. -.TP -\fB\-h \fIn\fR, \fB\-\^\-halfspeed \fIn -Play each frame -.I n -times. This will cause the MPEG stream -to be played at -.IR 1 / n 'th -speed (n times slower), which can be -used for special effects. Can also be combined with the -.B \-\^\-doublespeed -option to double every third frame or things like that. -Don't expect great sound quality when using this option. -.TP -\fB\-E \fIfile\fR, \fB\-\^\-equalizer -Enables equalization, taken from -.IR file . -The file needs to contain 32 lines of data, additional comment lines may -be prefixed with -.IR # . -Each data line consists of two floating-point entries, separated by -whitespace. They specify the multipliers for left and right channel of -a certain frequency band, respectively. The first line corresponds to the -lowest, the 32nd to the highest frequency band. -Note that you can control the equalizer interactively with the generic control interface. -Also note that these are the 32 bands of the MPEG codec, not spaced like you -would see for a usual graphic equalizer. The upside is that there is zero computational -cost in addition to decoding. The downside is that you roughly have bass in band 0, -(upper) mids in band 1, treble in all others. -.TP -\fB\-\^\-gapless -Enable code that cuts (junk) samples at beginning and end of tracks, enabling gapless transitions between MPEG files when encoder padding and codec delays would prevent it. -This is enabled per default beginning with mpg123 version 1.0.0 . -.TP -\fB\-\^\-no\-gapless -Disable the gapless code. That gives you MP3 decodings that include encoder delay and padding plus mpg123's decoder delay. -.TP -\fB\-\^\-no\-infoframe -Do not parse the Xing/Lame/VBR/Info frame, decode it instead just like a stupid old MP3 hardware player. -This implies disabling of gapless playback as the necessary information is in said metadata frame. -.TP -\fB\-D \fIn\fR, \fB\-\-delay \fIn -Insert a delay of \fIn\fR seconds before each track. -.TP -.BR "\-o h" ", " \-\^\-headphones -Direct audio output to the headphone connector (some hardware only; AIX, HP, SUN). -.TP -.BR "\-o s" ", " \-\^\-speaker -Direct audio output to the speaker (some hardware only; AIX, HP, SUN). -.TP -.BR "\-o l" ", " \-\^\-lineout -Direct audio output to the line-out connector (some hardware only; AIX, HP, SUN). -.TP -\fB\-b \fIsize\fR, \fB\-\^\-buffer \fIsize -Use an audio output buffer of -.I size -Kbytes. This is useful to bypass short periods of heavy -system activity, which would normally cause the audio output -to be interrupted. -You should specify a buffer size of at least 1024 -(i.e. 1 Mb, which equals about 6 seconds of audio data) or more; -less than about 300 does not make much sense. The default is 0, -which turns buffering off. -.TP -\fB\-\^\-preload \fIfraction -Wait for the buffer to be filled to -.I fraction -before starting playback (fraction between 0 and 1). You can tune this prebuffering to either get faster sound to your ears or safer uninterrupted web radio. -Default is 0.2 (wait for 20 % of buffer to be full, changed from 1 in version 1.23). -.TP -\fB\-\^\-devbuffer \fIseconds -Set device buffer in seconds; <= 0 means default value. This is the small buffer between the -application and the audio backend, possibly directly related to hardware buffers. -.TP -\fB\-\^\-smooth -Keep buffer over track boundaries -- meaning, do not empty the buffer between tracks for possibly some added smoothness. - -.SH MISC OPTIONS - -.TP -.BR \-t ", " \-\^\-test -Test mode. The audio stream is decoded, but no output occurs. -.TP -.BR \-c ", " \-\^\-check -Check for filter range violations (clipping), and report them for each frame -if any occur. -.TP -.BR \-v ", " \-\^\-verbose -Increase the verbosity level. For example, displays the frame -numbers during decoding. -.TP -.BR \-q ", " \-\^\-quiet -Quiet. Suppress diagnostic messages. -.TP -.BR \-C ", " \-\^\-control -Enable terminal control keys. This is enabled automatically if a terminal is detected. -By default use 's' or the space bar to stop/restart (pause, unpause) playback, 'f' to jump forward to the next song, 'b' to jump back to the -beginning of the song, ',' to rewind, '.' to fast forward, and 'q' to quit. -Type 'h' for a full list of available controls. -.TP -\fB\-\^\-no\-control -Disable terminal control even if terminal is detected. -.TP -\fB\-\^\-title -In an xterm, rxvt, screen, iris-ansi (compatible, TERM environment variable is examined), change the window's title to the name of song currently -playing. -.TP -\fB\-\^\-pauseloop \fIseconds -Set the length of the loop interval in terminal control paused mode, away from the default of 0.5 seconds, as a floating -point number. -.TP -\fB\-\^\-name \fIname -Set the name of this instance, possibly used in various places. This sets the client name for JACK output. -.TP -\fB\-\^\-long\-tag -Display ID3 tag info always in long format with one line per item (artist, title, ...) -.TP -.BR \-\-utf8 -Regardless of environment, print metadata in UTF-8 (otherwise, when not using UTF-8 locale, you'll get ASCII stripdown). -.TP -.BR \-R ", " \-\^\-remote -Activate generic control interface. -.B mpg123 -will then read and execute commands from stdin. Basic usage is ``load '' to play some file and the obvious ``pause'', ``command. -``jump '' will jump/seek to a given point (MPEG frame number). -Issue ``help'' to get a full list of commands and syntax. -.TP -.BR \-\^\-remote\-err -Print responses for generic control mode to standard error, not standard out. -This is automatically triggered when using \fB-s\fR. -.TP -\fB\-\-fifo \fIpath -Create a fifo / named pipe on the given path and use that for reading commands instead of standard input. -.TP -\fB\-\^\-aggressive -Tries to get higher priority -.TP -.BR \-T ", " \-\-realtime -Tries to gain realtime priority. This option usually requires root -privileges to have any effect. -.TP -.BR \-? ", " \-\^\-help -Shows short usage instructions. -.TP -.BR \-\^\-longhelp -Shows long usage instructions. -.TP -.BR \-\^\-version -Print the version string. -.SH HTTP SUPPORT -In addition to reading MPEG audio streams from ordinary -files and from the standard input, -.B mpg123 -supports retrieval of MPEG audio streams or playlists via the HTTP protocol, -which is used in the World Wide Web (WWW). Such files are -specified using a so-called URL, which starts with http:// or https://. -When a file with that prefix is encountered, -.B mpg123 -since 1.30.0 will by default call an external helper program (either -.BR wget (1) -or -.BR curl (1), -see the -.B \-\^\-network -option) -to retrieve the resource. You can configure access via a proxy -server using the standard environment variables those programs support. The -.BR \-\^\-proxy -option that -.B mpg123 -before 1.30.0 used for its internal network code is gone -in the default build now and will probably disappear for good with 1.31.1. -.P -Note that, in order to play MPEG audio files from a WWW -server, it is necessary that the connection to that server -is fast enough. For example, a 128 kbit/s MPEG file -requires the network connection to be at least 128 kbit/s -(16 kbyte/s) plus protocol overhead. If you suffer from -short network outages, you should try the -.B \-b -option (buffer) to bypass such outages. If your network -connection is generally not fast enough to retrieve MPEG -audio files in realtime, you can first download the files -to your local harddisk (e.g. using -.BR wget (1)) -and then play them from there. -.P -Streams with embedded ICY metadata are supported, the interval being communicated via HTTP -headers or \fB\-\^\-icy-interval\fR. -.SH INTERRUPT -When in terminal control mode, you can quit via pressing the q key, -while any time you can abort -.B mpg123 -by pressing Ctrl-C. If not in terminal control mode, this will -skip to the next file (if any). If you want to abort playing immediately -in that case, press Ctrl-C twice in short succession (within about one second). -.P -Note that the result of quitting -.B mpg123 -pressing Ctrl-C might not be audible -immediately, due to audio data buffering in the audio device. -This delay is system dependent, but it is usually not more -than one or two seconds. - -.SH PLAYBACK STATUS LINE -In verbose mode, mpg123 updates a line with various information centering around -the current playback position. On any decent terminal, the line also works -as a progress bar in the current file by reversing video for a fraction of the -line according to the current position. An example for a full line is this: - - > 0291+0955 00:01.68+00:28.22 [00:05.30] mix 100=085 192 kb/s 576 B acc 18 clip p+0.014 - -The information consists of, in order: -.TP -.BR > -single-character playback state (``>'' for playing, ``='' for pausing/looping, ``_'' for stopped) -.TP -.BR 0291+0955 -current frame offset and number of remaining frames after the plus sign -.TP -.BR 00:01.68+00:28.22 -current position from and remaining time in human terms -(hours, minutes, seconds) -.TP -.BR [00:05.30] -fill of the output buffer in terms of playback time, if the buffer is enabled -.TP -.BR mix -selected RVA mode (possible values: mix, alb (album), and \-\^\-\^\- (neutral, off)) -.TP -.BR 100=085 -set volume and the RVA-modified effective volume after the equal sign -.TP -.BR 192\ kb/s -current bitrate -.TP -.BR 576\ B -size of current frame in bytes -.TP -.BR acc -if positions are accurate, possible values are ``acc'' for accurate positions or ``fuz'' for fuzzy -(with guessed byte offsets using mean frame size) -.TP -.BR 18\ clip -amount of clipped samples, non-zero only if decoder reports that -(generic does, some optimized ones not) -.TP -.BR p+0.014 -pitch change (increased/decreased playback sampling rate on user request) - -.SH NOTES -MPEG audio decoding requires a good deal of CPU performance, -especially layer-3. To decode it in realtime, you should -have at least an i486DX4, Pentium, Alpha, SuperSparc or equivalent -processor. You can also use the -.B -m -option to decode mono only, which reduces the CPU load -somewhat for layer-3 streams. See also the -.BR \-2 " and " \-4 -options. -.P -If everything else fails, have mpg123 decode to a file -and then use an appropriate utility to play that file with less CPU load. -Most probably you can configure mpg123 to produce a format suitable -for your audio device (see above about encodings and sampling rates). -.P -If your system is generally fast enough to decode in -realtime, but there are sometimes periods of heavy -system load (such as cronjobs, users logging in remotely, -starting of ``big'' programs etc.) causing the -audio output to be interrupted, then you should use -the -.B \-b -option to use a buffer of reasonable size (at least 1000 Kbytes). -.SH EXIT CODE -.P -Up to version 1.25.x, mpg123 always returned exit code 0 also for -complete junk on the input side. Fatal errors were only considered -for output. With version 1.26.0, this changed to the behaviour -described below. -.P -When not using the remote control interface (which returns input -errors as text messages), the process exit code is zero (success) -only if all tracks in a playlist had at least one frame parsed, -even if it did not decode cleanly, or -are empty, MPEG-wise (perhaps only metadata, or really an empty file). -When you decode nothing, nothing is the result and that is fine. When -a track later aborts because of parser errors or breakdown of the -network communication, this is treated as end of a track, but does -not make the process as such fail. One really bad (or non-existing) -stream in the playlist results in a non-zero error code, consistent -with other UNIX tools. -.P -An error in audio output results in the process ending with a -non-zero exit code immediately, regardless of how much data has -been successfully played before. The forgiveness is only on the -input side. -.SH BUGS -.P -Mostly MPEG-1 layer 2 and 3 are tested in real life. -Please report any issues and provide test files to help fixing them. -.P -No CRC error checking is performed. But the decoder is built and tested -to behave nicely with damaged streams. Mostly, damaged frames will just be -silent. -.P -Some platforms lack audio hardware support; you may be able to use the -.B -s -switch to feed the decoded data to a program that can play it on your audio device. -.SH AUTHORS -.TP -Maintainer: -.br -Thomas Orgis , -.TP -Original Creator: -.br -Michael Hipp -.PP -Uses code or ideas from various people, see the AUTHORS file accompanying the source code. -.SH LICENSE -.B mpg123 -is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1 . -.SH WEBSITE -http://www.mpg123.org -.br -http://sourceforge.net/projects/mpg123 diff --git a/man1/out123.1 b/man1/out123.1 deleted file mode 100644 index 423a68f..0000000 --- a/man1/out123.1 +++ /dev/null @@ -1,335 +0,0 @@ -.TH out123 1 "26 Apr 2020" -.SH NAME -out123 \- send raw PCM audio or a waveform pattern to an output device -.SH SYNOPSIS -\fBcat \fRaudio.raw \fR| \fBout123 \fR[ \fR- \fR] [ \fIoptions \fR ] - -\fBout123 \fR[ \fIoptions \fR] \fIfilename \fR[ \fIfilename \fR... ] - -\fBout123 \fR--wave-freq \fIfreq1\fR[,\fIfreq2\fR,...] [ \fIoptions \fR] - -\fBout123 \fR--source \fRgeiger \fR[ \fIoptions \fR] - -.SH DESCRIPTION -.B out123 -reads raw PCM data (in host byte order) from standard input -and plays it on the audio device specified by given options. -Alternatively, it can generate periodic or random signals for playback -itself. -.SH OPTIONS -.B out123 -options may be either the traditional POSIX one letter options, -or the GNU style long options. POSIX style options start with a -single '\-', while GNU long options start with '\-\^\-'. -Option arguments (if needed) follow separated by whitespace (not '='). -Note that some options can be absent from your installation when disabled in the build process. -.TP -\fB\-\^\-name \fIname -Set the name of this instance, possibly used in various places. This sets the client name for JACK output. -.TP -\fB\-o \fImodule\fR, \-\^\-\fBoutput \fImodule\fR -Select audio output module. You can provide a comma-separated list to use the first one that works. -Also see \fB\-a\fR. -.TP -\fB\-\^\-list\-modules -List the available modules. -.TP -\fB\-\^\-list\-devices -List the available output devices for given output module. If there is no functionality -to list devices in the chosen module, an error will be printed and out123 will exit with -a non-zero code. -.TP -\fB\-a \fIdev\fR, \fB\-\^\-audiodevice \fIdev -Specify the audio device to use. The default as well as the possible values -depend on the active output. For the JACK output, a comma-separated list -of ports to connect to (for each channel) can be specified. -.TP -.BR \-s ", " \-\^\-stdout -The audio samples are written to standard output, -instead of playing them through the audio device. -The output format is the same as the input ... so in this mode, -.B out123 -acts similar the standard tool \fB cat\fR, possibly with some conversions -involved. -This shortcut is equivalent to '-o raw -a -'. -.TP -.BR \-S ", " \-\^\-STDOUT -This variant additionally writes the data to stdout, while still -playing it on the output device. So it is more like some flavour of -\fBtee\fR than a \fBcat\fR. -.TP -\fB\-O \fIfile\fR, \fB\-\^\-outfile -Write raw output into a file (instead of simply redirecting standard output to a file with the shell). -This shortcut is equivalent to '-o raw -a \fIfile\fR'. -.TP -\fB\-w \fIfile\fR, \fB\-\^\-wav -Write output as WAV file -.I file -, or standard output if -.I - -is or the empty string used as file name. You can also use -.I --au -and -.I --cdr -for AU and CDR format, respectively. Note that WAV/AU writing to non-seekable files or redirected stdout needs some thought. The header is written with the first actual data. The result of decoding nothing to WAV/AU is a file consisting just of the header when it is seekable and really nothing when not (not even a header). Correctly writing data with prophetic headers to stdout is no easy business. -This shortcut is equivalent to '-o wav -a \fIfile\fR'. -.TP -\fB\-\^\-au \fIfile -Write to -.I file -in SUN audio format. If \- or the empty string is used as the filename, the AU file is -written to stdout. See paragraph about WAV writing for header fun with non-seekable streams. -This shortcut is equivalent to '-o au -a \fIfile\fR'. -.TP -\fB\-\^\-cdr \fIfile -Write to -.I file -as a CDR (CD-ROM audio, more correctly CDDA for Compact Disc Digital Audio). -If \- is or the empty string used as the filename, the CDR file is written -to stdout. -This shortcut is equivalent to '-o cdr -a \fIfile\fR'. -.TP -\fB\-r \fIrate\fR, \fB\-\^\-rate \fIrate -Set sample rate in Hz (default: 44100). If this does not match the actual input -sampling rate, you get changed pitch. Might be intentional;-) -.TP -\fB\-R \fIrate\fR, \fB\-\^\-inputrate \fIrate -Set input sample rate to a different value. This triggers resampling if the output -rate is indeed different. See \fB\-\^\-resample\fR. -.TP -\fB\-\^\-speed \fIfactor -Speed up/down playback by that factor using resampling. See \fB\-\^\-resample\fR. -.TP -\fB\-\^\-resample \fImethod -This chooses the method for resampling between differing sampling rates or to apply -a change in tempo. You can choose between two variants of the syn123 resampler: fine -(the default) and dirty. The fine one features 108 dB dynamic range and at worst-case 84% -bandwidth. The dirty one uses a bit less CPU time (not that much, though) by reducing -the dynamic range to 72 dB with worst-case bandwidth of 85%. The exact properties vary -with the sampling rate ratio, as there is interpolation of filter coefficients involved. -.TP -\fB\-c \fIcount\fR, \fB\-\^\-channels \fIcount -Set channel count to given value. -.TP -\fB\-C \fIcount\fR, \fB\-\^\-inputch \fIcount -Set input channel count to a differnt value than for output. This probably means you want -some remixing. Also see \fB\-\^\-mix\fR. -.TP -\fB\-e \fIenc\fR, \fB\-\^\-encoding \fIenc -Choose output sample encoding. Possible values look like f32 (32-bit floating point), s32 (32-bit signed integer), u32 (32-bit unsigned integer) and the variants with different numbers of bits (s24, u24, s16, u16, s8, u8) and also special variants like ulaw and alaw 8-bit. -See the output of \fBout123\fR's longhelp for actually available encodings. -Default is s16. -.TP -\fB\-\^\-endian \fIchoice -Select output endianess (byte order). Choice is big, little, or native, which is the default. -The processing can only work in native mode, so you need to specify input or output byte order -if that does not match your machine. This also sets the input endianess if that is -not set separately. See also \fB\-\^\-inputend\fR and \fB\-\^\-byteswap\fR. -.TP -\fB\-E \fIenc\fR, \fB\-\^\-inputenc \fIenc -Specify input encoding different from output encoding for conversion. -.TP -\fB\-\^\-inputend \fIchoice -Select input endianess (byte order). By default it is the same as output byte order. -See \fB\-\^\-endian\fR. -.TP -.BR \-\^\-byteswap -A switch to trigger swapping of byte order just before output, after any other transformations. -This works on top of any endianess you specify with -.TP -.BR \-m ", " \-\^\-mono " -Set for single-channel audio (default is two channels, stereo). -.TP -.BR \-\-stereo -Select stereo output (2 channels, default). -.TP -.BR \-\^\-list\-encodings -List known encoding short and long names to standard output. -.TP -\fB\-\^\-mix \fImatrix -Specify a mixing matrix between input and output channels as linear factors, comma separated list for -the input channel factors for output channel 1, then output channel 2, and so forth. -The default is a unit matrix if channel counts match, so for 3 channels the equivalent of -'\-\^\-mix 1,0,0,0,1,0,0,0,1'. For stereo to mono conversion, the default is mixing of -both channels with halved amplitude, so '\-\^\-mix 0.5,0.5'. For splitting mono to stereo, -it is '\-\^\-mix 1,1' top keep the symmetry. -.TP -\fB\-\^\-filter \fIcoeff -Apply digital filter(s) before pre-amplification (see \fB\-\^\-preamp\fR) with the coefficient -list coeff as -.ce -b_0,...,b_N,a_0,...,a_N -where a_0=1 is mandatory and perhaps helps orientation a bit. Multiple filters are separated -by ':'. -.TP -\fB\-P \fIdbvalue \fB\-\^\-preamp \fIdbvalue -Enable a pre-amplification stage that amplifies the signal with the given value in dB before output. -.TP -\fB\-\^\-offset \fIvalue -Apply a PCM offset (floating point value scaled in [-1:1] in the pre-amplification stage. -Normally, you would do that to correct a known DC offset in a recording. -.TP -\fB\-\^\-clip \fImode -Select clipping mode: 'soft' or 'hard' for forced clipping also for -floating point output, 'implicit' (default) for implied hard clipping during -conversion where necessary. -.TP -\fB\-\^\-dither -Enable dithering for conversions to integer. If you insist. -This is just some un-spectacular TPDF dither. For some people, that is not fancy enough. -Most people cannot be bothered that way or the other. -.TP -.BR \-\^\-test\-format -Check if given format is supported by given driver and device (in command line before -encountering this), silently returning 0 as exit value if it is the case. -.TP -.BR \-\^\-test\-encodings -Print out the short names of encodings supported with the current setup. -.TP -.BR \-\^\-query\-format -If the selected driver and device communicate some default accepted format, print -out a command line fragment for \fBout123\fR setting that format, always in that order: -\-\^\-rate -\^\-channels -\^\-encoding -.TP -.BR "\-o h" ", " \-\^\-headphones -Direct audio output to the headphone connector (some hardware only; AIX, HP, SUN). -.TP -.BR "\-o s" ", " \-\^\-speaker -Direct audio output to the speaker (some hardware only; AIX, HP, SUN). -.TP -.BR "\-o l" ", " \-\^\-lineout -Direct audio output to the line-out connector (some hardware only; AIX, HP, SUN). -.TP -\fB\-b \fIsize\fR, \fB\-\^\-buffer \fIsize -Use an audio output buffer of -.I size -Kbytes. This is useful to bypass short periods of heavy -system activity, which would normally cause the audio output -to be interrupted. -You should specify a buffer size of at least 1024 -(i.e. 1 Mb, which equals about 6 seconds of usual audio data) or more; -less than about 300 does not make much sense. The default is 0, -which turns buffering off. -.TP -\fB\-\^\-preload \fIfraction -Wait for the buffer to be filled to -.I fraction -before starting playback (fraction between 0 and 1). You can tune this prebuffering to either get sound faster to your ears or safer uninterrupted web radio. -Default is 0.2 (changed from 1 since version 1.23). -.TP -\fB\-\^\-devbuffer \fIseconds -Set device buffer in seconds; <= 0 means default value. This is the small buffer between the -application and the audio backend, possibly directly related to hardware buffers. -.TP -\fB\-\^\-timelimit \fIsamples -Set playback time limit in PCM samples if set to a value greater than zero. -\fBout123\fR will stop reading from stdin or playing from the generated wave -table after reaching that number of samples. -.TP -\fB\-\^\-seconds \fIseconds -Set time limit in seconds instead. -.TP -\fB\-\^\-source \fIname -Choose the signal source: 'file' (default) for playback of the given file(s) on the command line -or standard input if there are none, or one of the generators 'wave' (see \fB\-\^\-wave\-freq\fR), -'sweep' (see \fB\-\^\-wave\-sweep\fR), 'pink' (see \fB\-\^\-ping\-rows\fR), -geiger (see \fB\-\^\-geiger\-activity\fR), or just 'white' for some white noise. -.TP -\fB\-\^\-wave\-freq \fIfrequencies -Set wave generator frequency or list of those with comma separation for enabling -a generated test signal instead of standard input. Empty values repeat the -previous one. -.TP -\fB\-\^\-wave\-pat \fIpatterns -Set the waveform patterns of the generated waves as comma-separated list. -Choices include sine, square, triangle, sawtooth, gauss, pulse, and shot. -Empty values repeat the previous one. -.TP -\fB\-\^\-wave\-phase \fIphases -Set waveform phase shift(s) as comma-separated list, negative values -inverting the pattern in time and empty value repeating the previous. There is -also \fB\-\^\-wave\-direction\fR overriding the negative bit. -.TP -\fB\-\^\-wave\-direction\fR -Set wave direction explicitly (the sign counts). -.TP -\fB\-\^\-wave\-sweep \fIfrequency -Sweep a generated wave to the given frequency, from -first one specified for \fB\-\^\-wave\-freq\fR, using the -first wave pattern and direction, too. -.TP -\fB\-\^\-sweep\-time \fIseconds -Set frequency sweep duration in seconds if > 0. This defaults -to the configured time limit if set, otherwise one second, as endless -sweeps are not sensible. -.TP -\fB\-\^\-sweep\-count \fIcount -Set timelimit to exactly produce that many (smooth) sweeps -.TP -\fB\-\^\-sweep\-type \fItype -Set sweep type: lin(ear) for linear, qua(d) (default) for quadratic, or exp(onential) -for an exponential change of frequency with time. -.TP -\fB\-\^\-sweep\-hard -Disable post-sweep smoothing for periodicity. -.TP -\fB\-\^\-genbuffer \fIbytes -Set the buffer size (limit) for signal generators, -if > 0 (default), this enforces a periodic -buffer also for non-periodic signals, benefit: -less runtime CPU overhead, as everything is precomputed as enforced periodic signal. -.TP -\fB\-\^\-wave\-limit \fIsamples -This is an alias for \fB\-\^\-genbuffer\fR. -.TP -\fB\-\^\-pink\-rows \fInumber -Activate pink noise source and choose rows for the algorithm (<1 chooses default). -The generator follows code provided by Phil Burk (http://softsynth.com) and uses -the Gardner method. -.TP -\fB\-\^\-geiger\-activity \fInumber -This configures the simulation of a Geiger-Mueller counter as source, with the given -numer as average events per second. Play with it. It's fun! -.TP -.BR \-t ", " \-\^\-test -Test mode. The audio stream is read, but no output occurs. -.TP -.BR \-v ", " \-\^\-verbose -Increase the verbosity level. -.TP -.BR \-q ", " \-\^\-quiet -Quiet. Suppress diagnostic messages. -.TP -\fB\-\^\-aggressive -Tries to get higher priority -.TP -.BR \-T ", " \-\-realtime -Tries to gain realtime priority. This option usually requires root -privileges to have any effect. -.TP -.BR \-? ", " \-\^\-help -Shows short usage instructions. -.TP -.BR \-\^\-longhelp -Shows long usage instructions. -.TP -.BR \-\^\-version -Print the version string. -.SH AUTHORS -.TP -Maintainer: -.br -Thomas Orgis , -.TP -Creator (ancestry of code inside mpg123): -.br -Michael Hipp -.TP -Uses code or ideas from various people, see the AUTHORS file accompanying the source code. -.SH LICENSE -.B out123 -is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1 . -.SH WEBSITE -http://www.mpg123.org -.br -http://sourceforge.net/projects/mpg123 diff --git a/mpg123.spec b/mpg123.spec index 98cc9a0..980abfe 100644 --- a/mpg123.spec +++ b/mpg123.spec @@ -3,7 +3,7 @@ # - devel packages for alsa, sdl, etc... to build the respective output modules. Summary: The fast console mpeg audio decoder/player. Name: mpg123 -Version: 1.31.3 +Version: 1.32.0 Release: 1 URL: http://www.mpg123.org/ License: GPL diff --git a/ports/README b/ports/README index 54dc117..94e7b15 100644 --- a/ports/README +++ b/ports/README @@ -13,5 +13,7 @@ it to work with minimal fuzz. - cmake: CMake build to get started on non-Unix-like platforms, especially for just libmpg123 on Windows -- Sony PSP: Sony_PSP/; building libmpg123 for the PSP (used for the MODO player). - ...by Bastian Pflieger + +There used to be other ports, last of those for the Sony PSP. There was not +much porting involved on that one, though, just a custom Makefile for building +a generic libmpg123. diff --git a/ports/Sony_PSP/Makefile.psp b/ports/Sony_PSP/Makefile.psp deleted file mode 100644 index 12d8664..0000000 --- a/ports/Sony_PSP/Makefile.psp +++ /dev/null @@ -1,38 +0,0 @@ -PSPSDK = $(shell psp-config --pspsdk-path) -PSPDIR = $(shell psp-config --psp-prefix) - -#DEFINES := PSP OPT_GENERIC REAL_IS_FIXED HAVE_CONFIG_H -DEFINES := PSP OPT_GENERIC REAL_IS_FLOAT HAVE_CONFIG_H -#DEFINES := PSP OPT_GENERIC FLOATOUT REAL_IS_FLOAT HAVE_CONFIG_H -DEFINEFLAGS := $(addprefix -D,$(DEFINES)) -INCDIR := ../. -CFLAGS = -g -O2 -Wall -fomit-frame-pointer -funroll-all-loops -finline-functions -ffast-math $(DEFINEFLAGS) - -MPG123_OBJS = compat.o parse.o frame.o format.o index.o synth.o synth_8bit.o \ - ntom.o icy2utf8.o synth_real.o synth_s32.o\ - equalizer.o icy.o id3.o layer1.o layer2.o layer3.o optimize.o readers.o tabinit.o stringbuf.o libmpg123.o dct64.o - -MPG123_LIB_FILE = ./libmpg123.a - -OBJS = $(MPG123_OBJS) -TARGET_LIB = $(MPG123_LIB_FILE) - -include $(PSPSDK)/lib/build.mak - - - -#################### -## Makefile rules ## -#################### - -install: $(MPG123_LIB_FILE) - @echo "" - @echo "**********************************************************************" - @echo "Installing libstsound into $(PSPDIR)" - @mkdir -p $(PSPDIR)/include $(PSPDIR)/lib - @cp -v mpg123.h $(PSPDIR)/include - @cp -v libmpg123.a $(PSPDIR)/lib - @echo "Done" - @echo "**********************************************************************" - @echo "" - diff --git a/ports/Sony_PSP/README b/ports/Sony_PSP/README deleted file mode 100644 index ce9b45c..0000000 --- a/ports/Sony_PSP/README +++ /dev/null @@ -1,11 +0,0 @@ -Hi - -* Place Makefile.psp in the directory src/libmpg123. -* Patch readers.c (present in src/libmpg123) using readers.c.patch -* Place Config.h in directory src/ -* cd to src/libmpg123 and do "make -f Makefile.psp install" - -Tested on mpg123 1.4.x and psptoolchain rev. 2398 - -Regards -Bastian diff --git a/ports/Sony_PSP/config.h b/ports/Sony_PSP/config.h deleted file mode 100644 index 957c5e9..0000000 --- a/ports/Sony_PSP/config.h +++ /dev/null @@ -1,368 +0,0 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if your architecture wants/needs/can use attribute_align_arg and - alignment checks. It's for 32bit x86... */ -#define ABI_ALIGN_FUN 1 - -/* Define to use proper rounding. */ -/* #undef ACCURATE_ROUNDING */ - -/* Define if .align takes 3 for alignment of 2^3=8 bytes instead of 8. */ -/* #undef ASMALIGN_EXP */ - -/* Define if __attribute__((aligned(16))) shall be used */ -/* #undef CCALIGN */ - -/* Define if checking of stack alignment is wanted. */ -#define CHECK_ALIGN 1 - -/* Define if debugging is enabled. */ -/* #undef DEBUG */ - -/* The default audio output module(s) to use */ -#define DEFAULT_OUTPUT_MODULE "alsa,oss,esd,sdl,nas,arts" - -/* Define if building with dynamcally linked libmpg123 */ -#define DYNAMIC_BUILD 1 - -/* Define if FIFO support is enabled. */ -#define FIFO 1 - -/* Define if frame index should be used. */ -#define FRAME_INDEX 1 - -/* Define if gapless is enabled. */ -#define GAPLESS 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_ALIB_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_ARPA_INET_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_ASM_AUDIOIO_H */ - -/* Define to 1 if you have the `atoll' function. */ -#define HAVE_ATOLL 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_AUDIOS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_AUDIOTOOLBOX_AUDIOTOOLBOX_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_AUDIOUNIT_AUDIOUNIT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CORESERVICES_CORESERVICES_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CULIB_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the `getaddrinfo' function. */ -#define HAVE_GETADDRINFO 1 - -/* Define to 1 if you have the `getpagesize' function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define to 1 if you have the `getuid' function. */ -#define HAVE_GETUID 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LANGINFO_H 1 - -/* Define to 1 if you have the `m' library (-lm). */ -#define HAVE_LIBM 1 - -/* Define to 1 if you have the `mx' library (-lmx). */ -/* #undef HAVE_LIBMX */ - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LINUX_SOUNDCARD_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define if libltdl is available */ -#define HAVE_LTDL 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_MACHINE_SOUNDCARD_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `mkfifo' function. */ -#define HAVE_MKFIFO 1 - -/* Define to 1 if you have a working `mmap' system call. */ -#define HAVE_MMAP 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_NETDB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_NETINET_IN_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_NETINET_TCP_H */ - -/* Define to 1 if you have the `nl_langinfo' function. */ -#define HAVE_NL_LANGINFO 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_OS2ME_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_OS2_H */ - -/* Define to 1 if you have the `random' function. */ -#define HAVE_RANDOM 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SCHED_H 1 - -/* Define to 1 if you have the `sched_setscheduler' function. */ -#define HAVE_SCHED_SETSCHEDULER 1 - -/* Define to 1 if you have the `setlocale' function. */ -#define HAVE_SETLOCALE 1 - -/* Define to 1 if you have the `setpriority' function. */ -#define HAVE_SETPRIORITY 1 - -/* Define to 1 if you have the `setuid' function. */ -#define HAVE_SETUID 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SIGNAL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SNDIO_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SUN_AUDIOIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_AUDIOIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_AUDIO_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_IOCTL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_SIGNAL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_SOCKET_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_SOUNDCARD_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_WAIT_H 1 - -/* Define this if you have the POSIX termios library */ -#define HAVE_TERMIOS 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_WINDOWS_H */ - -/* Define to indicate that float storage follows IEEE754. */ -#define IEEE_FLOAT 1 - -/* size of the frame index seek table */ -#define INDEX_SIZE 1000 - -/* Define if IPV6 support is enabled. */ -#define IPV6 1 - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Define if network support is enabled. */ -/* #define NETWORK 1 */ - -/* Define to disable 16 bit integer output. */ -/* #undef NO_16BIT */ - -/* Define to disable 32 bit integer output. */ -/* define NO_32BIT 1 */ - -/* Define to disable 8 bit integer output. */ -/* #undef NO_8BIT */ - -/* Define to disable downsampled decoding. */ -/* #undef NO_DOWNSAMPLE */ - -/* Define to disable error messages in combination with a return value (the - return is left intact). */ -/* #undef NO_ERETURN */ - -/* Define to disable error messages. */ -/* #undef NO_ERRORMSG */ - -/* Define to disable feeder and buffered readers. */ -/* #undef NO_FEEDER */ - -/* Define to disable ICY handling. */ -/* #undef NO_ICY */ - -/* Define to disable ID3v2 parsing. */ -/* #undef NO_ID3V2 */ - -/* Define to disable layer I. */ -/* #undef NO_LAYER1 */ - -/* Define to disable layer II. */ -/* #undef NO_LAYER2 */ - -/* Define to disable layer III. */ -/* #undef NO_LAYER3 */ - -/* Define to disable ntom resampling. */ -/* #undef NO_NTOM */ - -/* Define to disable real output. */ -/* define NO_REAL 1 */ - -/* Define to disable string functions. */ -/* #undef NO_STRING */ - -/* Define to disable warning messages. */ -/* #undef NO_WARNING */ - -/* Name of package */ -#define PACKAGE "mpg123" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "mpg123-devel@lists.sourceforge.net" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "mpg123" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "mpg123 1.8rc5" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "mpg123" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "1.8rc5" - -/* Define if portaudio v18 API is wanted. */ -/* #undef PORTAUDIO18 */ - -/* The size of `int32_t', as computed by sizeof. */ -#define SIZEOF_INT32_T 4 - -/* The size of `long', as computed by sizeof. */ -#define SIZEOF_LONG 4 - -/* The size of `off_t', as computed by sizeof. */ -#define SIZEOF_OFF_T 4 - -/* The size of `size_t', as computed by sizeof. */ -#define SIZEOF_SIZE_T 4 - -/* The size of `ssize_t', as computed by sizeof. */ -#define SIZEOF_SSIZE_T 4 - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if modules are enabled */ -#define USE_MODULES 1 - -/* Version number of package */ -#define VERSION "1.8rc5" - -/* Number of bits in a file offset, on hosts where this is settable. */ -/* #undef _FILE_OFFSET_BITS */ - -/* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef __cplusplus -/* #undef inline */ -#endif - -/* Define to `short' if does not define. */ -/* #undef int16_t */ - -/* Define to `int' if does not define. */ -/* #undef int32_t */ - -/* Define to `long int' if does not define. */ -/* #undef off_t */ - -/* Define to `unsigned long' if does not define. */ -/* #undef size_t */ - -/* Define to `long' if does not define. */ -/* #undef ssize_t */ - -/* Define to `unsigned short' if does not define. */ -/* #undef uint16_t */ - -/* Define to `unsigned int' if does not define. */ -/* #undef uint32_t */ diff --git a/ports/Sony_PSP/readers.c.patch b/ports/Sony_PSP/readers.c.patch deleted file mode 100644 index 73bbb26..0000000 --- a/ports/Sony_PSP/readers.c.patch +++ /dev/null @@ -1,2 +0,0 @@ -14a15 -> #include diff --git a/ports/cmake/CMakeLists.txt b/ports/cmake/CMakeLists.txt index efc62d8..c9af553 100644 --- a/ports/cmake/CMakeLists.txt +++ b/ports/cmake/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.12) include(cmake/read_api_version.cmake) -read_api_version(MPG123_VERSION API_VERSION OUTAPI_VERSION SYNAPI_VERSION) +read_api_version(MPG123_VERSION) project(mpg123 VERSION ${MPG123_VERSION} LANGUAGES C ASM) -option(BUILD_LIBOUT123 "build libout123" ON) +option(BUILD_LIBOUT123 "build libout123 (prerequisite for included programs)" ON) if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") message(WARNING "Output module is not implemented for '${CMAKE_SYSTEM_NAME}' platform.") message(WARNING "To prevent build errors 'BUILD_LIBOUT123' option is set to OFF.") diff --git a/ports/cmake/cmake/read_api_version.cmake b/ports/cmake/cmake/read_api_version.cmake index 131d973..74002ce 100644 --- a/ports/cmake/cmake/read_api_version.cmake +++ b/ports/cmake/cmake/read_api_version.cmake @@ -1,17 +1,18 @@ -function(read_api_version project_version api_version outapi_version synapi_version ) +function(read_api_version project_version) - file( READ "${CMAKE_CURRENT_SOURCE_DIR}/../../configure.ac" configure_ac ) + file( READ "${CMAKE_CURRENT_SOURCE_DIR}/../../src/version.h" version_h ) - string( REGEX MATCH "AC_INIT\\(\\[mpg123\\], \\[([0-9\\.]+)" result ${configure_ac} ) - set( ${project_version} ${CMAKE_MATCH_1} PARENT_SCOPE ) + string( REGEX MATCH "#define +MPG123_MAJOR +([0-9]+)" result ${version_h} ) + set( major_version ${CMAKE_MATCH_1}) + string( REGEX MATCH "#define +MPG123_MINOR +([0-9]+)" result ${version_h} ) + set( minor_version ${CMAKE_MATCH_1}) - string( REGEX MATCH "API_VERSION=([0-9]+)" result ${configure_ac} ) - set( ${api_version} ${CMAKE_MATCH_1} PARENT_SCOPE ) + string( REGEX MATCH "#define +MPG123_PATCH +([0-9]+)" result ${version_h} ) + set( patch_version ${CMAKE_MATCH_1}) - string( REGEX MATCH "OUTAPI_VERSION=([0-9]+)" result ${configure_ac} ) - set( ${outapi_version} ${CMAKE_MATCH_1} PARENT_SCOPE ) - - string( REGEX MATCH "SYNAPI_VERSION=([0-9]+)" result ${configure_ac} ) - set( ${synapi_version} ${CMAKE_MATCH_1} PARENT_SCOPE ) +# string( REGEX MATCH "#define +MPG123_SUFFIX +\"([^\"]+)\"" result ${version_h} ) +# set( version_suffix ${CMAKE_MATCH_1}) +# CMake project() chokes on version with suffix, so give it just the numbers. + set( ${project_version} ${major_version}.${minor_version}.${patch_version} PARENT_SCOPE) endfunction() diff --git a/ports/cmake/src/CMakeLists.txt b/ports/cmake/src/CMakeLists.txt index 5066ee3..1eb349e 100644 --- a/ports/cmake/src/CMakeLists.txt +++ b/ports/cmake/src/CMakeLists.txt @@ -8,6 +8,8 @@ include(CheckSymbolExists) include(CMakeDependentOption) include(TestBigEndian) +option(PORTABLE_API "Only build portable library API (no off_t, no internal I/O." OFF) + check_include_file("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file("dirent.h" HAVE_DIRENT_H) check_include_file("dlfcn.h" HAVE_DLFCN_H) @@ -54,15 +56,32 @@ check_function_exists(random HAVE_RANDOM) check_function_exists(setenv HAVE_SETENV) check_function_exists(unsetenv HAVE_UNSETENV) check_function_exists(setlocale HAVE_SETLOCALE) +check_function_exists(uselocale HAVE_USELOCALE) check_function_exists(setpriority HAVE_SETPRIORITY) check_function_exists(shmget HAVE_SHMGET) check_function_exists(shmat HAVE_SHMAT) check_function_exists(shmdt HAVE_SHMDT) check_function_exists(shmctl HAVE_SHMCTL) check_function_exists(strerror HAVE_STRERROR) +check_function_exists(strerror_l HAVE_STRERROR_L) check_function_exists(fork HAVE_FORK) check_function_exists(execvp HAVE_EXECVP) check_function_exists(ctermid HAVE_CTERMID) +check_function_exists(clock_gettime HAVE_CLOCK_GETTIME) + +check_function_exists(lseek64 LFS_LARGEFILE_64) + +if(LFS_LARGEFILE_64) +check_c_source_compiles( + " #define _LARGEFILE64_SOURCE + #include + #include + #include + #include + + int fd = open(\"/foo\", O_RDONLY|O_LARGEFILE); + " HAVE_O_LARGEFILE) +endif() search_libs(gethostbyname GETHOSTBYNAME_LIB nsl socket network) search_libs(socket SOCKET_LIB socket) @@ -83,26 +102,6 @@ check_c_source_compiles( "int main() { __attribute__((aligned(16))) float var; return 0; }" CCALIGN) -if(MSVC) - # Here, off_t is always 32 bit, the whole machinery doesn't work without explicit - # API for 64 bit file access. - unset(_FILE_OFFSET_BITS) - set(LFS_SENSITIVE OFF) - set(LFS_INSENSITIVE ON) - set(MPG123_LARGE_FILE_SUPPORT OFF) - # We disable all the dynamic naming with MSVC to avoid confusing consumers. - # Maybe it would be more proper to conditionit on LFS_INSENSTIIVE. - set(BUILD_NO_LARGENAME 1) -else() - option(MPG123_LARGE_FILE_SUPPORT "Support large files (define _FILE_OFFSET_BITS)" ON) - if(MPG123_LARGE_FILE_SUPPORT) - set(_FILE_OFFSET_BITS 64) - else() - unset(_FILE_OFFSET_BITS) - endif() - set(BUILD_NO_LARGENAME 0) -endif() - if(NOT LFS_INSENSITIVE) check_c_source_compiles(" #include @@ -132,17 +131,6 @@ if(NOT LFS_INSENSITIVE) endif() check_type_size(long SIZEOF_LONG) check_type_size(off_t SIZEOF_OFF_T) -if(LFS_SENSITIVE) - set(LFS_ALIAS_TYPE long) - math(EXPR LFS_ALIAS_BITS "${SIZEOF_LONG} * 8") -elseif(CMAKE_ANDROID_ARCH_ABI) - check_type_size(off64_t SIZEOF_OFF64_T) - set(LFS_ALIAS_TYPE off64_t) - math(EXPR LFS_ALIAS_BITS "${SIZEOF_OFF64_T} * 8") -else() - set(LFS_ALIAS_TYPE off_t) - math(EXPR LFS_ALIAS_BITS "${SIZEOF_OFF_T} * 8") -endif() if(WIN32 AND HAVE_WINDOWS_H) check_c_source_compiles(" @@ -330,13 +318,6 @@ cmake_dependent_option(NO_BUFFER "enable audio buffer code (default uses system option(NO_DOWNSAMPLE "no downsampled decoding" OFF) option(NO_EQUALIZER "no equalizer support" OFF) option(NO_FEEDER "no feeder decoding, no buffered readers" OFF) -if(CYGWIN) - option(NO_LFS_ALIAS "disable alias wrappers for largefile bitness (mpg123_seek_32 or mpg123_seek_64 in addition to mpg123_seek, or the other way around; It is a mess, do not play with this!)" ON) -elseif(MSVC) - set(NO_LFS_ALIAS ON) -else() - option(NO_LFS_ALIAS "disable alias wrappers for largefile bitness (mpg123_seek_32 or mpg123_seek_64 in addition to mpg123_seek, or the other way around; It is a mess, do not play with this!)" OFF) -endif() option(NO_ICY "ICY metainfo parsing/conversion" OFF) option(NO_LAYER1 "no layer I decoding" OFF) option(NO_LAYER2 "no layer II decoding" OFF) @@ -359,6 +340,8 @@ include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/" "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/compat" + "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libsyn123" + "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libout123" "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libmpg123") add_compile_definitions( @@ -376,8 +359,8 @@ if(BUILD_LIBOUT123) endif() add_subdirectory("libsyn123") -if(UNIX) - option(BUILD_PROGRAMS "Build programs" ON) +if(UNIX AND NOT PORTABLE_API) + option(BUILD_PROGRAMS "Build programs (mpg123 executable and others)" ON) if(BUILD_PROGRAMS) diff --git a/ports/cmake/src/config.cmake.h.in b/ports/cmake/src/config.cmake.h.in index 1af4958..ba44421 100644 --- a/ports/cmake/src/config.cmake.h.in +++ b/ports/cmake/src/config.cmake.h.in @@ -1,3 +1,6 @@ +// Define to only include portable API in libraries. +#cmakedefine PORTABLE_API 1 + // Define to use proper rounding. #cmakedefine ACCURATE_ROUNDING 1 @@ -36,12 +39,18 @@ #cmakedefine HAVE_RANDOM 1 #cmakedefine HAVE_SCHED_H 1 #cmakedefine HAVE_SETLOCALE 1 +#cmakedefine HAVE_USELOCALE 1 #cmakedefine HAVE_SETPRIORITY 1 #cmakedefine HAVE_SIGNAL_H 1 #cmakedefine HAVE_STDIO_H 1 #cmakedefine HAVE_STDINT_H 1 #cmakedefine HAVE_STDLIB_H 1 #cmakedefine HAVE_STRERROR 1 +#cmakedefine HAVE_STRERROR_L 1 +#cmakedefine HAVE_FORK 1 +#cmakedefine HAVE_EXECVP 1 +#cmakedefine HAVE_CTERMID 1 +#cmakedefine HAVE_CLOCK_GETTIME 1 #cmakedefine HAVE_STRING_H 1 #cmakedefine HAVE_STRINGS_H 1 #cmakedefine HAVE_SYS_IOCTL_H 1 @@ -67,7 +76,6 @@ // Define if IPV6 support is enabled. #cmakedefine IPV6 1 -#define LFS_ALIAS_BITS @LFS_ALIAS_BITS@ #define LT_MODULE_EXT "@CMAKE_SHARED_MODULE_SUFFIX@" // Define if network support is enabled. @@ -140,8 +148,10 @@ #define PKGLIBDIR "@CMAKE_INSTALL_LIBDIR@/@PROJECT_NAME@" -#define SIZEOF_LONG @SIZEOF_LONG@ -#define SIZEOF_OFF_T @SIZEOF_OFF_T@ +// CMake leaves it emtpy for non-existing type. Autoconf sets it to 0. +#define SIZEOF_LONG (@SIZEOF_LONG@+0) +#define SIZEOF_OFF_T (@SIZEOF_OFF_T@+0) +#define SIZEOF_OFF64_T (@SIZEOF_OFF64_T@+0) #cmakedefine STDERR_FILENO @STDERR_FILENO@ #cmakedefine STDIN_FILENO @STDIN_FILENO@ @@ -158,7 +168,7 @@ // Define to use Unicode for Windows #cmakedefine WANT_WIN32_UNICODE 1 -#if WANT_WIN32_UNICODE == 1 +#ifdef WANT_WIN32_UNICODE # define strcasecmp _stricmp # define strncasecmp _strnicmp #endif @@ -168,8 +178,9 @@ #cmakedefine WORDS_BIGENDIAN 1 -// Number of bits in a file offset, on hosts where this is settable. -#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@ - -// Define to the native offset type (long or actually off_t). -#define lfs_alias_t @LFS_ALIAS_TYPE@ +#cmakedefine LFS_LARGEFILE_64 1 +#cmakedefine LFS_SENSITIVE 1 +#cmakedefine HAVE_O_LARGEFILE 1 +#ifndef HAVE_O_LARGEFILE +#define O_LARGEFILE 0 +#endif diff --git a/ports/cmake/src/libmpg123/CMakeLists.txt b/ports/cmake/src/libmpg123/CMakeLists.txt index 86fc17c..e891f64 100644 --- a/ports/cmake/src/libmpg123/CMakeLists.txt +++ b/ports/cmake/src/libmpg123/CMakeLists.txt @@ -1,7 +1,6 @@ cmake_minimum_required(VERSION 3.12) option(NO_FEATURE_REPORT "Disable feature report function" OFF) -option(NO_LFS_ALIAS "disable alias wrappers for largefile bitness (mpg123_seek_32 or mpg123_seek_64 in addition to mpg123_seek, or the other way around; It is a mess, do not play with this!)" OFF) include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/") @@ -40,8 +39,6 @@ else() endif() message(STATUS "Detected machine: ${MACHINE}") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/mpg123.h.in" mpg123.h) - set(TARGET lib${PROJECT_NAME}) add_library(${TARGET} "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/parse.c" @@ -60,7 +57,6 @@ add_library(${TARGET} "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:layer1.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$,$>>:layer2.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:layer3.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:lfs_alias.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:ntom.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:synth_8bit.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:synth.c>" @@ -68,7 +64,7 @@ add_library(${TARGET} "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$,$>>:synth_real.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:stringbuf.c>" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:feature.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$:lfs_wrap.c>" + "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:lfs_wrap.c>" $) if(MSVC) @@ -252,7 +248,7 @@ install(TARGETS ${TARGET} EXPORT targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mpg123.h" +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/mpg123.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/fmt123.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") diff --git a/ports/cmake/src/libout123/CMakeLists.txt b/ports/cmake/src/libout123/CMakeLists.txt index 5671036..cef878d 100644 --- a/ports/cmake/src/libout123/CMakeLists.txt +++ b/ports/cmake/src/libout123/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.12) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libout123/out123.h.in" out123.h) - include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libout123/") add_subdirectory("modules") @@ -33,5 +31,5 @@ install(TARGETS ${TARGET} EXPORT targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/out123.h" +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libout123/out123.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") diff --git a/ports/cmake/src/libsyn123/CMakeLists.txt b/ports/cmake/src/libsyn123/CMakeLists.txt index 89558f5..6f9209a 100644 --- a/ports/cmake/src/libsyn123/CMakeLists.txt +++ b/ports/cmake/src/libsyn123/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.12) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libsyn123/syn123.h.in" syn123.h) - include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libsyn123/") set(TARGET libsyn123) @@ -28,5 +26,5 @@ install(TARGETS ${TARGET} EXPORT targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/syn123.h" +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libsyn123/syn123.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") diff --git a/src/Makemodule.am b/src/Makemodule.am index 9946fbc..b894a8a 100644 --- a/src/Makemodule.am +++ b/src/Makemodule.am @@ -2,15 +2,23 @@ include src/tests/Makemodule.am include src/compat/Makemodule.am -include src/libmpg123/Makemodule.am +if NEED_LIB include src/libout123/Makemodule.am +if NEED_MAINLIB +include src/libmpg123/Makemodule.am include src/libsyn123/Makemodule.am +endif +endif +if BUILD_PROGRAMS +bin_PROGRAMS += src/out123 +if HAVE_LFS_WRAP bin_PROGRAMS += \ src/mpg123 \ - src/out123 \ src/mpg123-id3dump \ src/mpg123-strip +endif +endif src_mpg123_LDADD = \ src/compat/libcompat.la \ @@ -30,7 +38,7 @@ src_out123_LDADD = \ src_out123_LDFLAGS = @EXEC_LT_LDFLAGS@ EXTRA_DIST += \ - src/intsym.h \ + src/version.h \ src/mpg123-with-modules \ src/out123-with-modules diff --git a/src/common.c b/src/common.c index 9a97742..89b6680 100644 --- a/src/common.c +++ b/src/common.c @@ -20,9 +20,12 @@ #include "debug.h" -int stopped = 0; -int paused = 0; +enum player_state playstate = STATE_PLAYING; +const char playsym[STATE_COUNT] = { '>', '_', '=', '?' }; int muted = 0; +// On LFS conversion trouble with large files, print_stat() gets disabled. +// Some heuristic re-enables it (when you print headers). +static int print_stat_disabled = FALSE; const char* rva_name[3] = { "off", "mix", "album" }; static const char* rva_statname[3] = { "---", "mix", "alb" }; @@ -60,6 +63,7 @@ void print_remote_header(mpg123_handle *mh) i.bitrate, i.flags & MPG123_PRIVATE ? 1 : 0, i.vbr); + print_stat_disabled=FALSE; } void print_header(mpg123_handle *mh) @@ -89,6 +93,7 @@ void print_header(mpg123_handle *mh) default: fprintf(stderr, "???"); } fprintf(stderr, " Extension value: %d\n", i.flags & MPG123_PRIVATE ? 1 : 0); + print_stat_disabled=FALSE; } void print_header_compact(mpg123_handle *mh) @@ -111,6 +116,7 @@ void print_header_compact(mpg123_handle *mh) default: fprintf(stderr, "???"); } fprintf(stderr," %ld %s\n", i.rate, smodes[i.mode]); + print_stat_disabled=FALSE; } unsigned int roundui(double val) @@ -159,6 +165,64 @@ void print_buf(const char* prefix, out123_handle *ao) , prefix, times[0], times[1], timesep, times[2] ); } +// This is a massively complicated function just for telling where we are. +// Blame buffering. Blame format conversion. Blame the universe. +int position_info( mpg123_handle *fr, off_t offset, out123_handle *ao +, off_t *frame, off_t *frame_remain +, double *seconds, double *seconds_remain, double *seconds_buffered, double *seconds_total ) +{ + size_t buffered; + off_t decoded; + double elapsed; + double remain; + double length; + off_t frameo; + off_t frames; + off_t rframes; + int framesize; + int spf; + long inrate; + long rate; + if(mpg123_getformat(fr, &inrate, NULL, NULL) || inrate < 1) + return -1; + if(out123_getformat(ao, &rate, NULL, NULL, &framesize) || rate < 1 || framesize < 1) + return -1; + buffered = out123_buffered(ao)/framesize; + decoded = mpg123_tell(fr); + length = (double)mpg123_length(fr)/inrate; + frameo = mpg123_tellframe(fr); + frames = mpg123_framelength(fr); + spf = mpg123_spf(fr); + if(decoded < 0 || length < 0 || frameo < 0 || frames <= 0 || spf <= 0) + { + merror("Failed to gather position data: %s", mpg123_strerror(fr)); + return -1; + } + frameo += offset; + if(frameo < 0) + frameo = 0; + /* Some sensible logic around offsets and time. + Buffering makes the relationships between the numbers non-trivial. */ + rframes = frames-frameo; + // May be negative, a countdown. Buffer only confuses in paused (looping) mode, though. + elapsed = (double)(decoded + offset*spf)/inrate - (double)(playstate==STATE_LOOPING ? 0 : buffered)/rate; + remain = elapsed > 0 ? length - elapsed : length; + + if(frame) + *frame = frameo; + if(frame_remain) + *frame_remain = rframes; + if(seconds) + *seconds = elapsed; + if(seconds_remain) + *seconds_remain = remain; + if(seconds_buffered) + *seconds_buffered = (double)buffered/rate; + if(seconds_total) + *seconds_total = length; + + return 0; +} /* Note about position info with buffering: @@ -168,20 +232,16 @@ void print_buf(const char* prefix, out123_handle *ao) void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar , struct parameter *param) { + if(print_stat_disabled) + return; static int old_term_width = -1; - size_t buffered; - off_t decoded; + double basevol, realvol; double elapsed; double remain; + double bufsec; double length; off_t frame; - off_t frames; off_t rframes; - int spf; - double basevol, realvol; - long inrate; - long rate; - int framesize; struct mpg123_frameinfo mi; char linebuf[256]; char *line = NULL; @@ -205,28 +265,12 @@ void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar #endif #endif #endif - if(mpg123_getformat(fr, &inrate, NULL, NULL)) + if(position_info(fr, offset, ao, &frame, &rframes, &elapsed, &remain, &bufsec, &length)) + { + debug("position_info() failed"); + print_stat_disabled=TRUE; return; - if(out123_getformat(ao, &rate, NULL, NULL, &framesize)) - return; - buffered = out123_buffered(ao)/framesize; - decoded = mpg123_tell(fr); - length = (double)mpg123_length(fr)/inrate; - frame = mpg123_tellframe(fr); - frames = mpg123_framelength(fr); - spf = mpg123_spf(fr); - if(decoded < 0 || length < 0 || frame < 0 || frames <= 0 || spf <= 0) - return; - /* Apply offset. */ - frame += offset; - if(frame < 0) - frame = 0; - /* Some sensible logic around offsets and time. - Buffering makes the relationships between the numbers non-trivial. */ - rframes = frames-frame; - // May be negative, a countdown. Buffer only confuses in paused (looping) mode, though. - elapsed = (double)(decoded + offset*spf)/inrate - (double)(paused ? 0 : buffered)/rate; - remain = elapsed > 0 ? length - elapsed : length; + } if( MPG123_OK == mpg123_info(fr, &mi) && MPG123_OK == mpg123_getvolume(fr, &basevol, &realvol, NULL) ) { @@ -268,7 +312,7 @@ void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar tim[0] = elapsed; tim[1] = remain; - tim[2] = (double)buffered/rate; + tim[2] = bufsec; for(ti=0; ti<3; ++ti) { if(tim[ti] < 0.){ sign[ti] = '-'; tim[ti] = -tim[ti]; } @@ -276,7 +320,7 @@ void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar } /* Taking pains to properly size the frame number fields. */ len = snprintf( framefmt, sizeof(framefmt) - , "%%0%d"OFF_P, (int)log10(frames)+1 ); + , "%%0%d"OFF_P, (int)log10(frame+rframes)+1 ); if(len < 0 || len >= sizeof(framefmt)) memcpy(framefmt, "%05"OFF_P, sizeof("%05"OFF_P)); snprintf( framestr[0], sizeof(framestr[0])-1, framefmt, (off_p)frame); @@ -288,7 +332,7 @@ void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar /* Start with position info. */ len = snprintf( line, linelen , "%c %s+%s %c%02lu:%02lu%c%02lu+%02lu:%02lu%c%02lu" - , stopped ? '_' : (paused ? '=' : '>') + , playsym[playstate] , framestr[0], framestr[1] , sign[0] , times[0][0], times[0][1], timesep[0], times[0][2] diff --git a/src/common.h b/src/common.h index fb8f113..c01da9c 100644 --- a/src/common.h +++ b/src/common.h @@ -1,7 +1,7 @@ /* common: anything can happen here... frame reading, output, messages - copyright ?-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2022 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ @@ -12,8 +12,13 @@ #include "mpg123app.h" #include "out123.h" -extern int stopped; -extern int paused; +enum player_state +{ + STATE_PLAYING=0 +, STATE_STOPPED, STATE_LOOPING, STATE_AB +, STATE_COUNT +}; +extern enum player_state playstate; extern int muted; void print_header(mpg123_handle *); @@ -22,6 +27,9 @@ void print_stat(mpg123_handle *fr, long offset, out123_handle *ao, int draw_bar , struct parameter *param); void print_buf(const char* prefix, out123_handle *ao); void clear_stat(); +// input: decoder and output handle, frame offset +// output: frames, frames_remain, seconds, seconds_remain, seconds_buffered, seconds_total +int position_info( mpg123_handle *, off_t, out123_handle *, off_t *, off_t *, double *, double *, double *, double *); /* for control_generic */ extern const char* remote_header_help; void print_remote_header(mpg123_handle *mh); diff --git a/src/compat/compat.c b/src/compat/compat.c index 494f60f..935b886 100644 --- a/src/compat/compat.c +++ b/src/compat/compat.c @@ -4,7 +4,7 @@ The mpg123 code is determined to keep it's legacy. A legacy of old, old UNIX. So anything possibly somewhat advanced should be considered to be put here, with proper #ifdef;-) - copyright 2007-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis, Windows Unicode stuff by JonY. */ @@ -43,23 +43,23 @@ #ifndef WINDOWS_UWP -char *compat_getenv(const char* name) +char *INT123_compat_getenv(const char* name) { char *ret = NULL; #ifdef WANT_WIN32_UNICODE wchar_t *env; wchar_t *wname = NULL; - if(win32_utf8_wide(name, &wname, NULL) > 0) + if(INT123_win32_utf8_wide(name, &wname, NULL) > 0) { env = _wgetenv(wname); free(wname); if(env) - win32_wide_utf8(env, &ret, NULL); + INT123_win32_wide_utf8(env, &ret, NULL); } #else ret = getenv(name); if(ret) - ret = compat_strdup(ret); + ret = INT123_compat_strdup(ret); #endif return ret; } @@ -69,7 +69,7 @@ char *compat_getenv(const char* name) #include "wpathconv.h" /* Always add a default permission mask in case of flags|O_CREAT. */ -int compat_open(const char *filename, int flags) +int INT123_compat_open(const char *filename, int flags) { int ret; #if defined (WANT_WIN32_UNICODE) @@ -105,8 +105,8 @@ open_ok: } /* Moved over from wav.c, logic with fallbacks added from the - example of compat_open(). */ -FILE* compat_fopen(const char *filename, const char *mode) + example of INT123_compat_open(). */ +FILE* INT123_compat_fopen(const char *filename, const char *mode) { FILE* stream = NULL; #ifdef WANT_WIN32_UNICODE @@ -117,7 +117,7 @@ FILE* compat_fopen(const char *filename, const char *mode) wname = u2wlongpath(filename); if(!wname) goto fopen_fallback; - cnt = win32_utf8_wide(mode, &wmode, NULL); + cnt = INT123_win32_utf8_wide(mode, &wmode, NULL); if( (wmode == NULL) || (cnt == 0)) goto fopen_fallback; @@ -136,12 +136,12 @@ fopen_ok: return stream; } -FILE* compat_fdopen(int fd, const char *mode) +FILE* INT123_compat_fdopen(int fd, const char *mode) { return fdopen(fd, mode); } -int compat_close(int infd) +int INT123_compat_close(int infd) { #if (defined(WIN32) && !defined (__CYGWIN__)) /* MSDN says POSIX function is deprecated beginning in Visual C++ 2005 */ return _close(infd); @@ -150,12 +150,12 @@ int compat_close(int infd) #endif } -int compat_fclose(FILE *stream) +int INT123_compat_fclose(FILE *stream) { return fclose(stream); } -void compat_binmode(int fd, int enable) +void INT123_compat_binmode(int fd, int enable) { #if defined(HAVE__SETMODE) _setmode(fd, enable ? _O_BINARY : _O_TEXT); @@ -183,7 +183,7 @@ void compat_binmode(int fd, int enable) typedef HRESULT (__stdcall *PCA_ptr)( const wchar_t *, const wchar_t*, unsigned long, wchar_t **); #endif -char* compat_catpath(const char *prefix, const char* path) +char* INT123_compat_catpath(const char *prefix, const char* path) { char *ret = NULL; #ifdef WANT_WIN32_UNICODE @@ -253,7 +253,7 @@ catpath_end: return ret; } -int compat_isdir(const char *path) +int INT123_compat_isdir(const char *path) { int ret = 0; #ifdef WANT_WIN32_UNICODE @@ -289,7 +289,7 @@ struct compat_dir #endif }; -struct compat_dir* compat_diropen(char *path) +struct compat_dir* INT123_compat_diropen(char *path) { struct compat_dir *cd; if(!path) @@ -302,7 +302,7 @@ struct compat_dir* compat_diropen(char *path) { char *pattern; wchar_t *wpattern; - pattern = compat_catpath(path, "*"); + pattern = INT123_compat_catpath(path, "*"); wpattern = u2wlongpath(pattern); if(wpattern) { @@ -329,17 +329,17 @@ struct compat_dir* compat_diropen(char *path) #endif if(cd) { - cd->path = compat_strdup(path); + cd->path = INT123_compat_strdup(path); if(!cd->path) { - compat_dirclose(cd); + INT123_compat_dirclose(cd); cd = NULL; } } return cd; } -void compat_dirclose(struct compat_dir *cd) +void INT123_compat_dirclose(struct compat_dir *cd) { if(cd) { @@ -353,7 +353,7 @@ void compat_dirclose(struct compat_dir *cd) } } -char* compat_nextfile(struct compat_dir *cd) +char* INT123_compat_nextfile(struct compat_dir *cd) { if(!cd) return NULL; @@ -364,7 +364,7 @@ char* compat_nextfile(struct compat_dir *cd) if(!(cd->d.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { char *ret; - win32_wide_utf8(cd->d.cFileName, &ret, NULL); + INT123_win32_wide_utf8(cd->d.cFileName, &ret, NULL); return ret; } } @@ -374,11 +374,11 @@ char* compat_nextfile(struct compat_dir *cd) while((dp = readdir(cd->dir))) { struct stat fst; - char *fullpath = compat_catpath(cd->path, dp->d_name); + char *fullpath = INT123_compat_catpath(cd->path, dp->d_name); if(fullpath && !stat(fullpath, &fst) && S_ISREG(fst.st_mode)) { free(fullpath); - return compat_strdup(dp->d_name); + return INT123_compat_strdup(dp->d_name); } free(fullpath); } @@ -387,7 +387,7 @@ char* compat_nextfile(struct compat_dir *cd) return NULL; } -char* compat_nextdir(struct compat_dir *cd) +char* INT123_compat_nextdir(struct compat_dir *cd) { if(!cd) return NULL; @@ -398,7 +398,7 @@ char* compat_nextdir(struct compat_dir *cd) if(cd->d.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { char *ret; - win32_wide_utf8(cd->d.cFileName, &ret, NULL); + INT123_win32_wide_utf8(cd->d.cFileName, &ret, NULL); return ret; } } @@ -408,11 +408,11 @@ char* compat_nextdir(struct compat_dir *cd) while((dp = readdir(cd->dir))) { struct stat fst; - char *fullpath = compat_catpath(cd->path, dp->d_name); + char *fullpath = INT123_compat_catpath(cd->path, dp->d_name); if(fullpath && !stat(fullpath, &fst) && S_ISDIR(fst.st_mode)) { free(fullpath); - return compat_strdup(dp->d_name); + return INT123_compat_strdup(dp->d_name); } free(fullpath); } @@ -438,14 +438,14 @@ char* compat_nextdir(struct compat_dir *cd) // because of a serious reason (maybe EOF, maybe out of disk space). You // can inspect errno. -size_t unintr_write(int fd, void const *buffer, size_t bytes) +size_t INT123_unintr_write(int fd, void const *buffer, size_t bytes) { size_t written = 0; errno = 0; while(bytes) { errno = 0; - ssize_t part = write(fd, (char*)buffer+written, bytes); + ptrdiff_t part = write(fd, (char*)buffer+written, bytes); // Just on short writes, we do not abort. Only when // there was no successful operation (even zero write) at all. // Any other error than EINTR ends things here. @@ -466,14 +466,14 @@ size_t unintr_write(int fd, void const *buffer, size_t bytes) } /* Same for reading the data. */ -size_t unintr_read(int fd, void *buffer, size_t bytes) +size_t INT123_unintr_read(int fd, void *buffer, size_t bytes) { size_t got = 0; errno = 0; while(bytes) { errno = 0; - ssize_t part = read(fd, (char*)buffer+got, bytes); + ptrdiff_t part = read(fd, (char*)buffer+got, bytes); if(part > 0) // == 0 is end of file { bytes -= part; @@ -489,7 +489,7 @@ size_t unintr_read(int fd, void *buffer, size_t bytes) } // and again for streams -size_t unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) +size_t INT123_unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = 0; errno = 0; @@ -509,7 +509,7 @@ size_t unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) #ifndef NO_CATCHSIGNAL #if (!defined(WIN32) || defined (__CYGWIN__)) && defined(HAVE_SIGNAL_H) -void (*catchsignal(int signum, void(*handler)()))() +void (*INT123_catchsignal(int signum, void(*handler)()))() { struct sigaction new_sa; struct sigaction old_sa; diff --git a/src/compat/compat.h b/src/compat/compat.h index f2b7af2..07f1775 100644 --- a/src/compat/compat.h +++ b/src/compat/compat.h @@ -6,7 +6,7 @@ It is envisioned to include this compat header instead of any of the "standard" headers, to catch compatibility issues. So, don't include stdlib.h or string.h ... include compat.h. - copyright 2007-21 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-23 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -26,6 +26,8 @@ #include #endif +#include + #include #include @@ -63,15 +65,34 @@ #ifndef SSIZE_MAX #define SSIZE_MAX ((size_t)-1/2) #endif +#ifndef PTRDIFF_MAX +#define PTRDIFF_MAX SSIZE_MAX +#endif #ifndef ULONG_MAX #define ULONG_MAX ((unsigned long)-1) #endif +#ifndef INT64_MAX +#define INT64_MAX 9223372036854775807LL +#endif +#ifndef INT64_MIN +#define INT64_MIN (-INT64_MAX - 1) +#endif +#ifndef INT32_MAX +#define INT32_MAX 2147483647L +#endif +#ifndef INT32_MIN +#define INT32_MIN (-INT32_MAX - 1) +#endif + #ifndef OFF_MAX +#undef OFF_MIN #if SIZEOF_OFF_T == 4 -#define OFF_MAX ((uint32_t)-1/2) +#define OFF_MAX INT32_MAX +#define OFF_MIN INT32_MIN #elif SIZEOF_OFF_T == 8 -#define OFF_MAX ((uint64_t)-1/2) +#define OFF_MAX INT64_MAX +#define OFF_MIN INT64_MIN #else #error "Unexpected width of off_t." #endif @@ -79,6 +100,7 @@ // Add two values (themselves assumed to be < limit), saturating to given limit. #define SATURATE_ADD(inout, add, limit) inout = (limit-add >= inout) ? inout+add : limit; +#define SATURATE_SUB(inout, sub, limit) inout = (limit+sub >= inout) ? inout-sub : limit; #ifdef HAVE_STRING_H #include @@ -99,7 +121,7 @@ #include #endif -/* compat_open makes little sense without */ +/* INT123_compat_open makes little sense without */ #include /* To parse big numbers... */ @@ -112,34 +134,21 @@ typedef unsigned char byte; #if defined(_MSC_VER) - // For _setmode(), at least. #include - -#if !defined(MPG123_DEF_SSIZE_T) -#define MPG123_DEF_SSIZE_T -#include -typedef ptrdiff_t ssize_t; #endif -#endif - -// Not too early, leave system headers alone (strerror). -#include "intsym.h" - /* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */ -void *safe_realloc(void *ptr, size_t size); +void *INT123_safe_realloc(void *ptr, size_t size); // Also freeing ptr if result is NULL. You can do -// ptr = safer_realloc(ptr, size) -// Also, ptr = safer_realloc(ptr, 0) will do free(ptr); ptr=NULL;. -void *safer_realloc(void *ptr, size_t size); -#ifndef HAVE_STRERROR -const char *strerror(int errnum); -#endif +// ptr = INT123_safer_realloc(ptr, size) +// Also, ptr = INT123_safer_realloc(ptr, 0) will do free(ptr); ptr=NULL;. +void *INT123_safer_realloc(void *ptr, size_t size); +const char *INT123_strerror(int errnum); /* Roll our own strdup() that does not depend on libc feature test macros and returns NULL on NULL input instead of crashing. */ -char* compat_strdup(const char *s); +char* INT123_compat_strdup(const char *s); /* If we have the size checks enabled, try to derive some sane printfs. Simple start: Use max integer type and format if long is not big enough. @@ -152,25 +161,21 @@ typedef intmax_t off_p; typedef long off_p; #endif -#if (defined SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > SIZEOF_LONG) && (defined PRIuMAX) +#if (defined SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > SIZEOF_LONG) && (defined PRIuMAX) && (defined PRIiMAX) # define SIZE_P PRIuMAX typedef uintmax_t size_p; +# define SSIZE_P PRIiMAX +typedef intmax_t ssize_p; #else # define SIZE_P "lu" typedef unsigned long size_p; -#endif - -#if (defined SIZEOF_SSIZE_T) && (SIZEOF_SSIZE_T > SIZEOF_LONG) && (defined PRIiMAX) -# define SSIZE_P PRIuMAX -typedef intmax_t ssize_p; -#else -# define SSIZE_P "li" +# define SSIZE_P "ld" typedef long ssize_p; #endif /* Get an environment variable, possibly converted to UTF-8 from wide string. The return value is a copy that you shall free. */ -char *compat_getenv(const char* name); +char *INT123_compat_getenv(const char* name); /** * Opening a file handle can be different. @@ -179,12 +184,12 @@ char *compat_getenv(const char* name); * @param[in] mbptr Pointer to multibyte string. * @return file descriptor (>=0) or error code. */ -int compat_open(const char *filename, int flags); -FILE* compat_fopen(const char *filename, const char *mode); +int INT123_compat_open(const char *filename, int flags); +FILE* INT123_compat_fopen(const char *filename, const char *mode); /** * Also fdopen to avoid having to define POSIX macros in various source files. */ -FILE* compat_fdopen(int fd, const char *mode); +FILE* INT123_compat_fdopen(int fd, const char *mode); /** * Closing a file handle can be platform specific. @@ -192,8 +197,8 @@ FILE* compat_fdopen(int fd, const char *mode); * @param[in] infd File descriptor to be closed. * @return 0 if the file was successfully closed. A return value of -1 indicates an error. */ -int compat_close(int infd); -int compat_fclose(FILE* stream); +int INT123_compat_close(int infd); +int INT123_compat_fclose(FILE* stream); /** @@ -201,7 +206,7 @@ int compat_fclose(FILE* stream); * We do not bother with errors. This has to work. * You can enable or disable binary mode. */ -void compat_binmode(int fd, int enable); +void INT123_compat_binmode(int fd, int enable); /* Those do make sense in a separate file, but I chose to include them in compat.c because that's the one source whose object is shared between mpg123 and libmpg123 -- and both need the functionality internally. */ @@ -217,7 +222,7 @@ void compat_binmode(int fd, int enable); * * WideCharToMultiByte - http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx */ -int win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen); +int INT123_win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen); /** * win32_uni2mbc @@ -230,7 +235,7 @@ int win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen); * * WideCharToMultiByte - http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx */ -int win32_wide_utf7(const wchar_t * const wptr, char **mbptr, size_t * buflen); +int INT123_win32_wide_utf7(const wchar_t * const wptr, char **mbptr, size_t * buflen); /** * win32_mbc2uni @@ -244,7 +249,7 @@ int win32_wide_utf7(const wchar_t * const wptr, char **mbptr, size_t * buflen); * MultiByteToWideChar - http://msdn.microsoft.com/en-us/library/dd319072(VS.85).aspx */ -int win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen); +int INT123_win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen); #endif /* @@ -270,11 +275,11 @@ int win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen); (meaning: for Windows), else they are preserved (on POSIX, actual file system access would be needed because of symlinks). */ -char* compat_catpath(const char *prefix, const char* path); +char* INT123_compat_catpath(const char *prefix, const char* path); /* Return 1 if the given path indicates an existing directory, 0 otherwise. */ -int compat_isdir(const char *path); +int INT123_compat_isdir(const char *path); /* Directory traversal. This talks ASCII/UTF-8 paths externally, converts @@ -286,14 +291,14 @@ struct compat_dir; /* Returns NULL if either directory failed to open or listing is empty. Listing can still be empty even if non-NULL, so always rely on the nextfile/nextdir functions. */ -struct compat_dir* compat_diropen(char *path); -void compat_dirclose(struct compat_dir*); +struct compat_dir* INT123_compat_diropen(char *path); +void INT123_compat_dirclose(struct compat_dir*); /* Get the next entry that is a file (or symlink to one). The returned string is a copy that needs to be freed after use. */ -char* compat_nextfile(struct compat_dir*); +char* INT123_compat_nextfile(struct compat_dir*); /* Get the next entry that is a directory (or symlink to one). The returned string is a copy that needs to be freed after use. */ -char* compat_nextdir (struct compat_dir*); +char* INT123_compat_nextdir (struct compat_dir*); #ifdef USE_MODULES /* @@ -303,17 +308,17 @@ char* compat_nextdir (struct compat_dir*); Use of absolute paths is a good idea if you want to be sure which file is openend, as default search paths vary. */ -void *compat_dlopen (const char *path); -void *compat_dlsym (void *handle, const char* name); -void compat_dlclose(void *handle); +void *INT123_compat_dlopen (const char *path); +void *INT123_compat_dlsym (void *handle, const char* name); +void INT123_compat_dlclose(void *handle); #endif /* Blocking write/read of data with signal resilience. They continue after being interrupted by signals and always return the amount of processed data (shortage indicating actual problem or EOF). */ -size_t unintr_write(int fd, void const *buffer, size_t bytes); -size_t unintr_read (int fd, void *buffer, size_t bytes); -size_t unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); +size_t INT123_unintr_write(int fd, void const *buffer, size_t bytes); +size_t INT123_unintr_read (int fd, void *buffer, size_t bytes); +size_t INT123_unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); /* OSX SDK defines an enum with "normal" as value. That clashes with optimize.h */ @@ -324,7 +329,7 @@ size_t unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); #include "true.h" #if (!defined(WIN32) || defined (__CYGWIN__)) && defined(HAVE_SIGNAL_H) -void (*catchsignal(int signum, void(*handler)()))(); +void (*INT123_catchsignal(int signum, void(*handler)()))(); #endif #endif diff --git a/src/compat/compat_dl.c b/src/compat/compat_dl.c index a6cbff6..e704d2c 100644 --- a/src/compat/compat_dl.c +++ b/src/compat/compat_dl.c @@ -62,7 +62,7 @@ clobbering each other when setting/restoring across different threads. */ -void *compat_dlopen(const char *path) +void *INT123_compat_dlopen(const char *path) { void *handle = NULL; #ifdef WANT_WIN32_UNICODE @@ -83,7 +83,7 @@ void *compat_dlopen(const char *path) return handle; } -void *compat_dlsym(void *handle, const char *name) +void *INT123_compat_dlsym(void *handle, const char *name) { void *sym = NULL; if(!handle) @@ -96,7 +96,7 @@ void *compat_dlsym(void *handle, const char *name) return sym; } -void compat_dlclose(void *handle) +void INT123_compat_dlclose(void *handle) { if(!handle) return; diff --git a/src/compat/compat_str.c b/src/compat/compat_str.c index 2bda813..27729f2 100644 --- a/src/compat/compat_str.c +++ b/src/compat/compat_str.c @@ -4,11 +4,13 @@ The mpg123 code is determined to keep it's legacy. A legacy of old, old UNIX. So anything possibly somewhat advanced should be considered to be put here, with proper #ifdef;-) - copyright 2007-2016 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project + free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis, Windows Unicode stuff by JonY. */ - +// Need POSIX 2008 for uselocale stuff. +#define _POSIX_C_SOURCE 200809L #include "compat.h" /* Win32 is only supported with unicode now. These headers also cover @@ -20,10 +22,14 @@ #include #endif +#if HAVE_LOCALE_H +#include +#endif + #include "debug.h" /* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */ -void *safe_realloc(void *ptr, size_t size) +void *INT123_safe_realloc(void *ptr, size_t size) { if(ptr == NULL) return malloc(size); else return realloc(ptr, size); @@ -31,25 +37,33 @@ void *safe_realloc(void *ptr, size_t size) // A more sensible variant of realloc: It deallocates the original memory if // realloc fails or if size zero was requested. -void *safer_realloc(void *ptr, size_t size) +void *INT123_safer_realloc(void *ptr, size_t size) { - void *nptr = size ? safe_realloc(ptr, size) : NULL; + void *nptr = size ? INT123_safe_realloc(ptr, size) : NULL; if(!nptr && ptr) free(ptr); return nptr; } -#ifndef HAVE_STRERROR -const char *strerror(int errnum) +const char *INT123_strerror(int errnum) { +#if defined(HAVE_STRERROR_L) && defined(HAVE_USELOCALE) + locale_t curloc = uselocale((locale_t)0); + if(curloc != LC_GLOBAL_LOCALE) + return strerror_l(errnum, curloc); +#endif +// Also fall back to strerror() in case of no set locale. +#if defined(HAVE_STRERROR) + return strerror(errnum); +#else extern int sys_nerr; extern char *sys_errlist[]; return (errnum < sys_nerr) ? sys_errlist[errnum] : ""; -} #endif +} -char* compat_strdup(const char *src) +char* INT123_compat_strdup(const char *src) { char *dest = NULL; if(src) @@ -85,17 +99,17 @@ int win32_wide_common(const wchar_t * const wptr, char **mbptr, size_t * buflen, return ret; } -int win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen) +int INT123_win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen) { return win32_wide_common(wptr, mbptr, buflen, CP_UTF8); } -int win32_wide_utf7(const wchar_t * const wptr, char **mbptr, size_t * buflen) +int INT123_win32_wide_utf7(const wchar_t * const wptr, char **mbptr, size_t * buflen) { return win32_wide_common(wptr, mbptr, buflen, CP_UTF7); } -int win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen) +int INT123_win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen) { size_t len; wchar_t *buf; diff --git a/src/compat/wpathconv.h b/src/compat/wpathconv.h index 7ee5dff..167440b 100644 --- a/src/compat/wpathconv.h +++ b/src/compat/wpathconv.h @@ -18,7 +18,7 @@ static wchar_t* u2wpath(const char *upath) { wchar_t* wpath, *p; - if(!upath || win32_utf8_wide(upath, &wpath, NULL) < 1) + if(!upath || INT123_win32_utf8_wide(upath, &wpath, NULL) < 1) return NULL; for(p=wpath; *p; ++p) if(*p == L'/') @@ -31,7 +31,7 @@ static wchar_t* u2wpath(const char *upath) static char* w2upath(const wchar_t *wpath) { char* upath, *p; - if(!wpath || win32_wide_utf8(wpath, &upath, NULL) < 1) + if(!wpath || INT123_win32_wide_utf8(wpath, &upath, NULL) < 1) return NULL; for(p=upath; *p; ++p) if(*p == '\\') @@ -111,7 +111,7 @@ static wchar_t* u2wlongpath(const char *upath) static wchar_t* u2wlongpath(const char *upath) { wchar_t* wpath, *p; - if (!upath || win32_utf8_wide(upath, &wpath, NULL) < 1) + if (!upath || INT123_win32_utf8_wide(upath, &wpath, NULL) < 1) return NULL; for (p = wpath; *p; ++p) if (*p == L'/') diff --git a/src/config.h.in b/src/config.h.in index 6ffd2e6..711df05 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -19,10 +19,6 @@ /* Define if .align takes 3 for alignment of 2^3=8 bytes instead of 8. */ #undef ASMALIGN_EXP -/* No suffixed symbols for large file support (only alias for backwards - compat.) */ -#undef BUILD_NO_LARGENAME - /* Define if __attribute__((aligned(16))) shall be used */ #undef CCALIGN @@ -83,6 +79,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_BYTESWAP_H +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + /* Define to 1 if you have the header file. */ #undef HAVE_CORESERVICES_CORESERVICES_H @@ -143,15 +142,15 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H +/* Define to 1 if you have the `lseek64' function. */ +#undef HAVE_LSEEK64 + /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_SOUNDCARD_H /* Define to 1 if you have the `mbstowcs' function. */ #undef HAVE_MBSTOWCS -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - /* Define to 1 if you have the `mkfifo' function. */ #undef HAVE_MKFIFO @@ -233,6 +232,9 @@ /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR +/* Define to 1 if you have the `strerror_l' function. */ +#undef HAVE_STRERROR_L + /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H @@ -296,6 +298,9 @@ /* Define to 1 if you have the `unsetenv' function. */ #undef HAVE_UNSETENV +/* Define to 1 if you have the `uselocale' function. */ +#undef HAVE_USELOCALE + /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H @@ -329,9 +334,11 @@ /* Define if IPV6 support is enabled. */ #undef IPV6 -/* Define this to the size of native offset type in bits, used for LFS alias - functions. */ -#undef LFS_ALIAS_BITS +/* Define if we use _LARGEFILE64_SOURCE with off64_t and lseek64. */ +#undef LFS_LARGEFILE_64 + +/* System redefines off_t when defining _FILE_OFFSET_BITS to 64. */ +#undef LFS_SENSITIVE /* Define to the extension used for runtime loadable modules, say, ".so". */ #undef LT_MODULE_EXT @@ -418,6 +425,9 @@ /* Define to disable warning messages. */ #undef NO_WARNING +/* Define to 0 if system does not have/need it. */ +#undef O_LARGEFILE + /* Name of package */ #undef PACKAGE @@ -439,6 +449,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define to only include portable library API (no off_t, no internal I/O). */ +#undef PORTABLE_API + /* Define if portaudio v18 API is wanted. */ #undef PORTAUDIO18 @@ -451,9 +464,6 @@ /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG -/* The size of `off64_t', as computed by sizeof. */ -#undef SIZEOF_OFF64_T - /* The size of `off_t', as computed by sizeof. */ #undef SIZEOF_OFF_T @@ -463,7 +473,9 @@ /* The size of `ssize_t', as computed by sizeof. */ #undef SIZEOF_SSIZE_T -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define to not duplicate some code for likely cases in libsyn123. */ @@ -511,17 +523,6 @@ /* Define for extreme debugging. */ #undef XDEBUG -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES - /* Windows Vista and later APIs */ #undef _WIN32_WINNT @@ -543,11 +544,8 @@ /* Define to `long long' if does not define. */ #undef int64_t -/* Define to the native offset type (long or actually off_t). */ -#undef lfs_alias_t - -/* Define to `long int' if does not define. */ -#undef off_t +/* Define to `long' if does not define. */ +#undef ptrdiff_t /* Define to `unsigned long' if does not define. */ #undef size_t diff --git a/src/control_generic.c b/src/control_generic.c index 7eda574..abd8f5f 100644 --- a/src/control_generic.c +++ b/src/control_generic.c @@ -1,7 +1,8 @@ /* control_generic.c: control interface for frontends and real console warriors - copyright 1997-99,2004-20 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1997-99,2004-23 by the mpg123 project + free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Andreas Neuhaus and Michael Hipp reworked by Thomas Orgis - it was the entry point for eventually becoming maintainer... @@ -57,6 +58,7 @@ FILE *outstream; int out_is_term = FALSE; static int mode = MODE_STOPPED; static int init = 0; +static int sendstat_disabled = FALSE; #include "debug.h" @@ -167,10 +169,18 @@ static void generic_send_lines(int is_utf8, const char* fmt, mpg123_string *inli void generic_sendstat (mpg123_handle *fr) { + if(sendstat_disabled) + return; off_t current_frame, frames_left; double current_seconds, seconds_left; - if(!mpg123_position(fr, 0, out123_buffered(ao), ¤t_frame, &frames_left, ¤t_seconds, &seconds_left)) + + if(!position_info(fr, 0, ao, ¤t_frame, &frames_left, ¤t_seconds, &seconds_left, NULL, NULL)) generic_sendmsg("F %"OFF_P" %"OFF_P" %3.2f %3.2f", (off_p)current_frame, (off_p)frames_left, current_seconds, seconds_left); + else + { + sendstat_disabled = TRUE; + generic_sendmsg("E Error getting position information, disabling playback status."); + } } // This is only valid as herlper to generic_sendv1, observe info memory usage! @@ -300,6 +310,7 @@ void generic_sendinfo (char *filename) static void generic_load(mpg123_handle *fr, char *arg, int state) { + sendstat_disabled = FALSE; out123_drop(ao); if(mode != MODE_STOPPED) { @@ -408,7 +419,7 @@ int control_generic (mpg123_handle *fr) #endif /* the command behaviour is different, so is the ID */ /* now also with version for command availability */ - fprintf(outstream, "@R MPG123 (ThOr) v10\n"); + fprintf(outstream, "@R MPG123 (ThOr) v11\n"); #ifdef FIFO if(param.fifo) { @@ -421,7 +432,7 @@ int control_generic (mpg123_handle *fr) unlink(param.fifo); if(mkfifo(param.fifo, 0666) == -1) { - error2("Failed to create FIFO at %s (%s)", param.fifo, strerror(errno)); + error2("Failed to create FIFO at %s (%s)", param.fifo, INT123_strerror(errno)); return 1; } debug("going to open named pipe ... blocking until someone gives command"); @@ -455,8 +466,34 @@ int control_generic (mpg123_handle *fr) if (n == 0) { if (!play_frame()) { - generic_sendmsg("P 3"); + size_t drain_block; + size_t buffered; + + // Ensure that prepared audio really got played, drain buffer. + // There is no control during draining. This mode was not planned for big buffers. + play_prebuffer(); + buffered = out123_buffered(ao); + if(buffered) + { + int framesize = 1; + long rate = 1; + out123_getformat(ao, &rate, NULL, NULL, &framesize); + generic_sendmsg("DRAIN %.1f", (double)buffered/framesize/rate); + if(silent == 0) + { + generic_sendstat(fr); + drain_block = 1152*framesize; + do + { + out123_ndrain(ao, drain_block); + generic_sendstat(fr); + } + while(out123_buffered(ao)); + } else + out123_drain(ao); + } out123_pause(ao); + generic_sendmsg("P 3"); /* When the track ended, user may want to keep it open (to seek back), so there is a decision between stopping and pausing at the end. */ if(param.keep_open) @@ -505,7 +542,7 @@ int control_generic (mpg123_handle *fr) /* on error */ if(n < 0) { - merror("waiting for command: %s", strerror(errno)); + merror("waiting for command: %s", INT123_strerror(errno)); return 1; } /* read & process commands */ @@ -536,11 +573,11 @@ int control_generic (mpg123_handle *fr) close(control_file); control_file = open(param.fifo,O_RDONLY|O_NONBLOCK); #endif - if(control_file < 0){ error1("open of fifo failed... %s", strerror(errno)); break; } + if(control_file < 0){ error1("open of fifo failed... %s", INT123_strerror(errno)); break; } continue; } #endif - if(len < 0) error1("command read error: %s", strerror(errno)); + if(len < 0) error1("command read error: %s", INT123_strerror(errno)); break; } @@ -600,26 +637,26 @@ int control_generic (mpg123_handle *fr) /* SILENCE */ if(!strcasecmp(comstr, "SILENCE")) { silent = 1; - generic_sendmsg("silence"); + generic_sendmsg("SILENCE"); continue; } /* PROGRESS, opposite of silence */ if(!strcasecmp(comstr, "PROGRESS")) { silent = 0; - generic_sendmsg("progress"); + generic_sendmsg("PROGRESS"); continue; } if(!strcasecmp(comstr, "MUTE")) { set_mute(ao, muted=TRUE); - generic_sendmsg("mute"); + generic_sendmsg("MUTE"); continue; } if(!strcasecmp(comstr, "UNMUTE")) { set_mute(ao, muted=FALSE); - generic_sendmsg("unmute"); + generic_sendmsg("UNMUTE"); continue; } @@ -690,6 +727,7 @@ int control_generic (mpg123_handle *fr) /* QUIT */ if (!strcasecmp(comstr, "Q") || !strcasecmp(comstr, "QUIT")){ + out123_drop(ao); alive = FALSE; continue; } diff --git a/src/filters.c b/src/filters.c index 32f2ca6..7174da8 100644 --- a/src/filters.c +++ b/src/filters.c @@ -1,7 +1,7 @@ /* filters: parse filter specifications - copyright 2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2020-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -91,7 +91,7 @@ static int store_filters(struct filterlist *fl, const char *spec) } if(errno) { - merror("Number parsing error on validated spec: %s", strerror(errno)); + merror("Number parsing error on validated spec: %s", INT123_strerror(errno)); return -1; } if(*spec) // Skip ":" diff --git a/src/getlopt.c b/src/getlopt.c index ac1a55b..c1b077d 100644 --- a/src/getlopt.c +++ b/src/getlopt.c @@ -44,7 +44,7 @@ static void setcharoption(topt *opt, char *value) free(*((char**)opt->var)); if(value) { - *((char **) opt->var) = compat_strdup(value); + *((char **) opt->var) = INT123_compat_strdup(value); opt->flags |= GLO_VAR_MEM; } else { diff --git a/src/httpget.c b/src/httpget.c index cb4741f..d3b4132 100644 --- a/src/httpget.c +++ b/src/httpget.c @@ -28,6 +28,7 @@ #include "mpg123app.h" #include "httpget.h" +#include "version.h" #ifdef NETWORK #include "resolver.h" @@ -329,7 +330,7 @@ int fill_request(mpg123_string *request, mpg123_string *host, mpg123_string *por if( !mpg123_add_string(request, " HTTP/1.0\r\nUser-Agent: ") || !mpg123_add_string(request, PACKAGE_NAME) || !mpg123_add_string(request, "/") - || !mpg123_add_string(request, PACKAGE_VERSION) + || !mpg123_add_string(request, MPG123_VERSION) || !mpg123_add_string(request, "\r\n") ) return FALSE; @@ -472,7 +473,7 @@ int http_open(const char* url, struct httpdata *hd, const char * const *client_h #ifdef WANT_WIN32_SOCKETS if(!win32_net_writestring (sock, &request)) #else - if(unintr_write(sock, request.p, request.fill-1) != request.fill-1) + if(INT123_unintr_write(sock, request.p, request.fill-1) != request.fill-1) #endif { http_failure; diff --git a/src/intsym.h b/src/intsym.h deleted file mode 100644 index cc975d4..0000000 --- a/src/intsym.h +++ /dev/null @@ -1,367 +0,0 @@ -#ifndef MPG123_INTSYM_H -#define MPG123_INTSYM_H -/* Mapping of internal mpg123 symbols to something that is less likely to - conflict in case of static linking. */ -#include "config.h" -#define COS9 INT123_COS9 -#define tfcos36 INT123_tfcos36 -#define pnts INT123_pnts -#define catchsignal INT123_catchsignal -#define safe_realloc INT123_safe_realloc -#define safer_realloc INT123_safer_realloc -#define compat_strdup INT123_compat_strdup -#define compat_getenv INT123_compat_getenv -#define compat_open INT123_compat_open -#define compat_fopen INT123_compat_fopen -#define compat_fdopen INT123_compat_fdopen -#define compat_close INT123_compat_close -#define compat_fclose INT123_compat_fclose -#define compat_binmode INT123_compat_binmode -#define win32_wide_utf8 INT123_win32_wide_utf8 -#define win32_wide_utf7 INT123_win32_wide_utf7 -#define win32_utf8_wide INT123_win32_utf8_wide -#define compat_catpath INT123_compat_catpath -#define compat_isdir INT123_compat_isdir -#define compat_diropen INT123_compat_diropen -#define compat_dirclose INT123_compat_dirclose -#define compat_nextfile INT123_compat_nextfile -#define compat_nextdir INT123_compat_nextdir -#define compat_dlopen INT123_compat_dlopen -#define compat_dlsym INT123_compat_dlsym -#define compat_dlclose INT123_compat_dlclose -#define unintr_write INT123_unintr_write -#define unintr_read INT123_unintr_read -#define unintr_fwrite INT123_unintr_fwrite -#define ntom_set_ntom INT123_ntom_set_ntom -#define synth_1to1 INT123_synth_1to1 -#define synth_1to1_dither INT123_synth_1to1_dither -#define synth_1to1_i386 INT123_synth_1to1_i386 -#define synth_1to1_i586 INT123_synth_1to1_i586 -#define synth_1to1_i586_dither INT123_synth_1to1_i586_dither -#define synth_1to1_mmx INT123_synth_1to1_mmx -#define synth_1to1_3dnow INT123_synth_1to1_3dnow -#define synth_1to1_sse INT123_synth_1to1_sse -#define synth_1to1_stereo_sse INT123_synth_1to1_stereo_sse -#define synth_1to1_3dnowext INT123_synth_1to1_3dnowext -#define synth_1to1_altivec INT123_synth_1to1_altivec -#define synth_1to1_stereo_altivec INT123_synth_1to1_stereo_altivec -#define synth_1to1_x86_64 INT123_synth_1to1_x86_64 -#define synth_1to1_stereo_x86_64 INT123_synth_1to1_stereo_x86_64 -#define synth_1to1_avx INT123_synth_1to1_avx -#define synth_1to1_stereo_avx INT123_synth_1to1_stereo_avx -#define synth_1to1_arm INT123_synth_1to1_arm -#define synth_1to1_neon INT123_synth_1to1_neon -#define synth_1to1_stereo_neon INT123_synth_1to1_stereo_neon -#define synth_1to1_neon64 INT123_synth_1to1_neon64 -#define synth_1to1_stereo_neon64 INT123_synth_1to1_stereo_neon64 -#define absynth_1to1_i486 INT123_absynth_1to1_i486 -#define synth_1to1_mono INT123_synth_1to1_mono -#define synth_1to1_m2s INT123_synth_1to1_m2s -#define synth_2to1 INT123_synth_2to1 -#define synth_2to1_dither INT123_synth_2to1_dither -#define synth_2to1_i386 INT123_synth_2to1_i386 -#define synth_2to1_mono INT123_synth_2to1_mono -#define synth_2to1_m2s INT123_synth_2to1_m2s -#define synth_4to1 INT123_synth_4to1 -#define synth_4to1_dither INT123_synth_4to1_dither -#define synth_4to1_i386 INT123_synth_4to1_i386 -#define synth_4to1_mono INT123_synth_4to1_mono -#define synth_4to1_m2s INT123_synth_4to1_m2s -#define synth_ntom INT123_synth_ntom -#define synth_ntom_mono INT123_synth_ntom_mono -#define synth_ntom_m2s INT123_synth_ntom_m2s -#define synth_1to1_8bit INT123_synth_1to1_8bit -#define synth_1to1_8bit_i386 INT123_synth_1to1_8bit_i386 -#define synth_1to1_8bit_wrap INT123_synth_1to1_8bit_wrap -#define synth_1to1_8bit_mono INT123_synth_1to1_8bit_mono -#define synth_1to1_8bit_m2s INT123_synth_1to1_8bit_m2s -#define synth_1to1_8bit_wrap_mono INT123_synth_1to1_8bit_wrap_mono -#define synth_1to1_8bit_wrap_m2s INT123_synth_1to1_8bit_wrap_m2s -#define synth_2to1_8bit INT123_synth_2to1_8bit -#define synth_2to1_8bit_i386 INT123_synth_2to1_8bit_i386 -#define synth_2to1_8bit_mono INT123_synth_2to1_8bit_mono -#define synth_2to1_8bit_m2s INT123_synth_2to1_8bit_m2s -#define synth_4to1_8bit INT123_synth_4to1_8bit -#define synth_4to1_8bit_i386 INT123_synth_4to1_8bit_i386 -#define synth_4to1_8bit_mono INT123_synth_4to1_8bit_mono -#define synth_4to1_8bit_m2s INT123_synth_4to1_8bit_m2s -#define synth_ntom_8bit INT123_synth_ntom_8bit -#define synth_ntom_8bit_mono INT123_synth_ntom_8bit_mono -#define synth_ntom_8bit_m2s INT123_synth_ntom_8bit_m2s -#define synth_1to1_real INT123_synth_1to1_real -#define synth_1to1_real_i386 INT123_synth_1to1_real_i386 -#define synth_1to1_real_sse INT123_synth_1to1_real_sse -#define synth_1to1_real_stereo_sse INT123_synth_1to1_real_stereo_sse -#define synth_1to1_real_x86_64 INT123_synth_1to1_real_x86_64 -#define synth_1to1_real_stereo_x86_64 INT123_synth_1to1_real_stereo_x86_64 -#define synth_1to1_real_avx INT123_synth_1to1_real_avx -#define synth_1to1_fltst_avx INT123_synth_1to1_fltst_avx -#define synth_1to1_real_altivec INT123_synth_1to1_real_altivec -#define synth_1to1_fltst_altivec INT123_synth_1to1_fltst_altivec -#define synth_1to1_real_neon INT123_synth_1to1_real_neon -#define synth_1to1_real_stereo_neon INT123_synth_1to1_real_stereo_neon -#define synth_1to1_real_neon64 INT123_synth_1to1_real_neon64 -#define synth_1to1_fltst_neon64 INT123_synth_1to1_fltst_neon64 -#define synth_1to1_real_mono INT123_synth_1to1_real_mono -#define synth_1to1_real_m2s INT123_synth_1to1_real_m2s -#define synth_2to1_real INT123_synth_2to1_real -#define synth_2to1_real_i386 INT123_synth_2to1_real_i386 -#define synth_2to1_real_mono INT123_synth_2to1_real_mono -#define synth_2to1_real_m2s INT123_synth_2to1_real_m2s -#define synth_4to1_real INT123_synth_4to1_real -#define synth_4to1_real_i386 INT123_synth_4to1_real_i386 -#define synth_4to1_real_mono INT123_synth_4to1_real_mono -#define synth_4to1_real_m2s INT123_synth_4to1_real_m2s -#define synth_ntom_real INT123_synth_ntom_real -#define synth_ntom_real_mono INT123_synth_ntom_real_mono -#define synth_ntom_real_m2s INT123_synth_ntom_real_m2s -#define synth_1to1_s32 INT123_synth_1to1_s32 -#define synth_1to1_s32_i386 INT123_synth_1to1_s32_i386 -#define synth_1to1_s32_sse INT123_synth_1to1_s32_sse -#define synth_1to1_s32_stereo_sse INT123_synth_1to1_s32_stereo_sse -#define synth_1to1_s32_x86_64 INT123_synth_1to1_s32_x86_64 -#define synth_1to1_s32_stereo_x86_64 INT123_synth_1to1_s32_stereo_x86_64 -#define synth_1to1_s32_avx INT123_synth_1to1_s32_avx -#define synth_1to1_s32_stereo_avx INT123_synth_1to1_s32_stereo_avx -#define synth_1to1_s32_altivec INT123_synth_1to1_s32_altivec -#define synth_1to1_s32_stereo_altivec INT123_synth_1to1_s32_stereo_altivec -#define synth_1to1_s32_neon INT123_synth_1to1_s32_neon -#define synth_1to1_s32_stereo_neon INT123_synth_1to1_s32_stereo_neon -#define synth_1to1_s32_neon64 INT123_synth_1to1_s32_neon64 -#define synth_1to1_s32st_neon64 INT123_synth_1to1_s32st_neon64 -#define synth_1to1_s32_mono INT123_synth_1to1_s32_mono -#define synth_1to1_s32_m2s INT123_synth_1to1_s32_m2s -#define synth_2to1_s32 INT123_synth_2to1_s32 -#define synth_2to1_s32_i386 INT123_synth_2to1_s32_i386 -#define synth_2to1_s32_mono INT123_synth_2to1_s32_mono -#define synth_2to1_s32_m2s INT123_synth_2to1_s32_m2s -#define synth_4to1_s32 INT123_synth_4to1_s32 -#define synth_4to1_s32_i386 INT123_synth_4to1_s32_i386 -#define synth_4to1_s32_mono INT123_synth_4to1_s32_mono -#define synth_4to1_s32_m2s INT123_synth_4to1_s32_m2s -#define synth_ntom_s32 INT123_synth_ntom_s32 -#define synth_ntom_s32_mono INT123_synth_ntom_s32_mono -#define synth_ntom_s32_m2s INT123_synth_ntom_s32_m2s -#define dct64 INT123_dct64 -#define dct64_i386 INT123_dct64_i386 -#define dct64_altivec INT123_dct64_altivec -#define dct64_i486 INT123_dct64_i486 -#define dct36 INT123_dct36 -#define dct36_3dnow INT123_dct36_3dnow -#define dct36_3dnowext INT123_dct36_3dnowext -#define dct36_x86_64 INT123_dct36_x86_64 -#define dct36_sse INT123_dct36_sse -#define dct36_avx INT123_dct36_avx -#define dct36_neon INT123_dct36_neon -#define dct36_neon64 INT123_dct36_neon64 -#define synth_ntom_set_step INT123_synth_ntom_set_step -#define ntom_val INT123_ntom_val -#define ntom_frame_outsamples INT123_ntom_frame_outsamples -#define ntom_frmouts INT123_ntom_frmouts -#define ntom_ins2outs INT123_ntom_ins2outs -#define ntom_frameoff INT123_ntom_frameoff -#define init_layer3 INT123_init_layer3 -#define init_layer3_gainpow2 INT123_init_layer3_gainpow2 -#define init_layer3_stuff INT123_init_layer3_stuff -#define init_layer12 INT123_init_layer12 -#define init_layer12_table INT123_init_layer12_table -#define init_layer12_stuff INT123_init_layer12_stuff -#define init_costabs INT123_init_costabs -#define make_decode_tables INT123_make_decode_tables -#define make_decode_tables_mmx INT123_make_decode_tables_mmx -#define init_layer3_gainpow2_mmx INT123_init_layer3_gainpow2_mmx -#define init_layer12_table_mmx INT123_init_layer12_table_mmx -#define make_conv16to8_table INT123_make_conv16to8_table -#define do_layer3 INT123_do_layer3 -#define do_layer2 INT123_do_layer2 -#define do_layer1 INT123_do_layer1 -#define do_equalizer INT123_do_equalizer -#define dither_table_init INT123_dither_table_init -#define frame_dither_init INT123_frame_dither_init -#define invalidate_format INT123_invalidate_format -#define frame_init INT123_frame_init -#define frame_init_par INT123_frame_init_par -#define frame_outbuffer INT123_frame_outbuffer -#define frame_output_format INT123_frame_output_format -#define frame_buffers INT123_frame_buffers -#define frame_reset INT123_frame_reset -#define frame_buffers_reset INT123_frame_buffers_reset -#define frame_exit INT123_frame_exit -#define frame_index_find INT123_frame_index_find -#define frame_index_setup INT123_frame_index_setup -#define do_volume INT123_do_volume -#define do_rva INT123_do_rva -#define frame_gapless_init INT123_frame_gapless_init -#define frame_gapless_realinit INT123_frame_gapless_realinit -#define frame_gapless_update INT123_frame_gapless_update -#define frame_gapless_bytify INT123_frame_gapless_bytify -#define frame_gapless_ignore INT123_frame_gapless_ignore -#define frame_expect_outsamples INT123_frame_expect_outsamples -#define frame_skip INT123_frame_skip -#define frame_ins2outs INT123_frame_ins2outs -#define frame_outs INT123_frame_outs -#define frame_expect_outsampels INT123_frame_expect_outsampels -#define frame_offset INT123_frame_offset -#define frame_set_frameseek INT123_frame_set_frameseek -#define frame_set_seek INT123_frame_set_seek -#define frame_tell_seek INT123_frame_tell_seek -#define frame_fill_toc INT123_frame_fill_toc -#define getcpuflags INT123_getcpuflags -#define icy2utf8 INT123_icy2utf8 -#define init_icy INT123_init_icy -#define clear_icy INT123_clear_icy -#define reset_icy INT123_reset_icy -#define init_id3 INT123_init_id3 -#define exit_id3 INT123_exit_id3 -#define reset_id3 INT123_reset_id3 -#define id3_link INT123_id3_link -#define parse_new_id3 INT123_parse_new_id3 -#define id3_to_utf8 INT123_id3_to_utf8 -#define fi_init INT123_fi_init -#define fi_exit INT123_fi_exit -#define fi_resize INT123_fi_resize -#define fi_add INT123_fi_add -#define fi_set INT123_fi_set -#define fi_reset INT123_fi_reset -#define decode_update INT123_decode_update -#define decoder_synth_bytes INT123_decoder_synth_bytes -#define samples_to_bytes INT123_samples_to_bytes -#define bytes_to_samples INT123_bytes_to_samples -#define outblock_bytes INT123_outblock_bytes -#define postprocess_buffer INT123_postprocess_buffer -#define open_fixed_pre INT123_open_fixed_pre -#define open_fixed_post INT123_open_fixed_post -#define frame_cpu_opt INT123_frame_cpu_opt -#define set_synth_functions INT123_set_synth_functions -#define dectype INT123_dectype -#define defdec INT123_defdec -#define decclass INT123_decclass -#define read_frame_init INT123_read_frame_init -#define frame_bitrate INT123_frame_bitrate -#define frame_freq INT123_frame_freq -#define read_frame_recover INT123_read_frame_recover -#define read_frame INT123_read_frame -#define set_pointer INT123_set_pointer -#define position_info INT123_position_info -#define compute_bpf INT123_compute_bpf -#define time_to_frame INT123_time_to_frame -#define get_songlen INT123_get_songlen -#define bc_prepare INT123_bc_prepare -#define bc_cleanup INT123_bc_cleanup -#define bc_poolsize INT123_bc_poolsize -#define bc_fill INT123_bc_fill -#define open_stream INT123_open_stream -#define open_stream_handle INT123_open_stream_handle -#define open_feed INT123_open_feed -#define feed_more INT123_feed_more -#define feed_forget INT123_feed_forget -#define feed_set_pos INT123_feed_set_pos -#define open_bad INT123_open_bad -#define open_module INT123_open_module -#define close_module INT123_close_module -#define list_modules INT123_list_modules -#define buffer_init INT123_buffer_init -#define buffer_exit INT123_buffer_exit -#define buffer_sync_param INT123_buffer_sync_param -#define buffer_open INT123_buffer_open -#define buffer_encodings INT123_buffer_encodings -#define buffer_formats INT123_buffer_formats -#define buffer_start INT123_buffer_start -#define buffer_ndrain INT123_buffer_ndrain -#define buffer_stop INT123_buffer_stop -#define buffer_close INT123_buffer_close -#define buffer_continue INT123_buffer_continue -#define buffer_ignore_lowmem INT123_buffer_ignore_lowmem -#define buffer_drain INT123_buffer_drain -#define buffer_end INT123_buffer_end -#define buffer_pause INT123_buffer_pause -#define buffer_drop INT123_buffer_drop -#define buffer_write INT123_buffer_write -#define buffer_fill INT123_buffer_fill -#define xfermem_init INT123_xfermem_init -#define xfermem_init_writer INT123_xfermem_init_writer -#define xfermem_init_reader INT123_xfermem_init_reader -#define xfermem_get_freespace INT123_xfermem_get_freespace -#define xfermem_get_usedspace INT123_xfermem_get_usedspace -#define xfermem_getcmd INT123_xfermem_getcmd -#define xfermem_getcmds INT123_xfermem_getcmds -#define xfermem_putcmd INT123_xfermem_putcmd -#define xfermem_writer_block INT123_xfermem_writer_block -#define xfermem_write INT123_xfermem_write -#define xfermem_done INT123_xfermem_done -#define au_open INT123_au_open -#define cdr_open INT123_cdr_open -#define raw_open INT123_raw_open -#define wav_open INT123_wav_open -#define wav_write INT123_wav_write -#define wav_close INT123_wav_close -#define au_close INT123_au_close -#define raw_close INT123_raw_close -#define cdr_formats INT123_cdr_formats -#define au_formats INT123_au_formats -#define raw_formats INT123_raw_formats -#define wav_formats INT123_wav_formats -#define wav_drain INT123_wav_drain -#define stringlists_add INT123_stringlists_add -#define check_neon INT123_check_neon -#define dct64_3dnow INT123_dct64_3dnow -#define dct64_3dnowext INT123_dct64_3dnowext -#define dct64_avx INT123_dct64_avx -#define dct64_real_avx INT123_dct64_real_avx -#define dct64_mmx INT123_dct64_mmx -#define dct64_MMX INT123_dct64_MMX -#define dct64_neon INT123_dct64_neon -#define dct64_neon64 INT123_dct64_neon64 -#define dct64_real_neon64 INT123_dct64_real_neon64 -#define dct64_real_neon INT123_dct64_real_neon -#define dct64_sse INT123_dct64_sse -#define dct64_real_sse INT123_dct64_real_sse -#define dct64_x86_64 INT123_dct64_x86_64 -#define dct64_real_x86_64 INT123_dct64_real_x86_64 -#define do_equalizer_3dnow INT123_do_equalizer_3dnow -#define synth_1to1_3dnow_asm INT123_synth_1to1_3dnow_asm -#define synth_1to1_arm_asm INT123_synth_1to1_arm_asm -#define synth_1to1_arm_accurate_asm INT123_synth_1to1_arm_accurate_asm -#define synth_1to1_i586_asm INT123_synth_1to1_i586_asm -#define synth_1to1_i586_asm_dither INT123_synth_1to1_i586_asm_dither -#define synth_1to1_MMX INT123_synth_1to1_MMX -#define synth_1to1_neon_asm INT123_synth_1to1_neon_asm -#define synth_1to1_neon64_asm INT123_synth_1to1_neon64_asm -#define synth_1to1_neon64_accurate_asm INT123_synth_1to1_neon64_accurate_asm -#define synth_1to1_real_neon64_asm INT123_synth_1to1_real_neon64_asm -#define synth_1to1_s32_neon64_asm INT123_synth_1to1_s32_neon64_asm -#define synth_1to1_neon_accurate_asm INT123_synth_1to1_neon_accurate_asm -#define synth_1to1_real_neon_asm INT123_synth_1to1_real_neon_asm -#define synth_1to1_s32_neon_asm INT123_synth_1to1_s32_neon_asm -#define synth_1to1_sse_accurate_asm INT123_synth_1to1_sse_accurate_asm -#define synth_1to1_real_sse_asm INT123_synth_1to1_real_sse_asm -#define synth_1to1_s32_sse_asm INT123_synth_1to1_s32_sse_asm -#define synth_1to1_s_avx_asm INT123_synth_1to1_s_avx_asm -#define synth_1to1_s_avx_accurate_asm INT123_synth_1to1_s_avx_accurate_asm -#define synth_1to1_real_s_avx_asm INT123_synth_1to1_real_s_avx_asm -#define synth_1to1_s32_s_avx_asm INT123_synth_1to1_s32_s_avx_asm -#define synth_1to1_s_neon_asm INT123_synth_1to1_s_neon_asm -#define synth_1to1_s_neon64_asm INT123_synth_1to1_s_neon64_asm -#define synth_1to1_s_neon64_accurate_asm INT123_synth_1to1_s_neon64_accurate_asm -#define synth_1to1_real_s_neon64_asm INT123_synth_1to1_real_s_neon64_asm -#define synth_1to1_s32_s_neon64_asm INT123_synth_1to1_s32_s_neon64_asm -#define synth_1to1_s_neon_accurate_asm INT123_synth_1to1_s_neon_accurate_asm -#define synth_1to1_real_s_neon_asm INT123_synth_1to1_real_s_neon_asm -#define synth_1to1_s32_s_neon_asm INT123_synth_1to1_s32_s_neon_asm -#define synth_1to1_s_sse_accurate_asm INT123_synth_1to1_s_sse_accurate_asm -#define synth_1to1_real_s_sse_asm INT123_synth_1to1_real_s_sse_asm -#define synth_1to1_s32_s_sse_asm INT123_synth_1to1_s32_s_sse_asm -#define synth_1to1_s_x86_64_asm INT123_synth_1to1_s_x86_64_asm -#define synth_1to1_s_x86_64_accurate_asm INT123_synth_1to1_s_x86_64_accurate_asm -#define synth_1to1_real_s_x86_64_asm INT123_synth_1to1_real_s_x86_64_asm -#define synth_1to1_s32_s_x86_64_asm INT123_synth_1to1_s32_s_x86_64_asm -#define synth_1to1_x86_64_asm INT123_synth_1to1_x86_64_asm -#define synth_1to1_x86_64_accurate_asm INT123_synth_1to1_x86_64_accurate_asm -#define synth_1to1_real_x86_64_asm INT123_synth_1to1_real_x86_64_asm -#define synth_1to1_s32_x86_64_asm INT123_synth_1to1_s32_x86_64_asm -#define costab_mmxsse INT123_costab_mmxsse -#define make_decode_tables_mmx_asm INT123_make_decode_tables_mmx_asm -#ifndef HAVE_STRERROR -#define strerror INT123_strerror -#endif -#endif diff --git a/src/libmpg123/Makemodule.am b/src/libmpg123/Makemodule.am index 1fa2523..48e3820 100644 --- a/src/libmpg123/Makemodule.am +++ b/src/libmpg123/Makemodule.am @@ -1,7 +1,5 @@ # Module for non-recursive mpg123 build system. -EXTRA_DIST += src/libmpg123/mpg123.h.in - EXTRA_PROGRAMS += src/libmpg123/testcpu src_libmpg123_testcpu_DEPENDENCIES = src/libmpg123/getcpuflags.$(OBJEXT) src_libmpg123_testcpu_SOURCES = src/libmpg123/testcpu.c @@ -20,9 +18,13 @@ src_libmpg123_calctables_LDADD = @LIBM@ # Necessary? #CLEANFILES += src/libmpg123/*.a +if BUILD_LIBMPG123 lib_LTLIBRARIES += src/libmpg123/libmpg123.la -nodist_include_HEADERS += src/libmpg123/mpg123.h +include_HEADERS += src/libmpg123/mpg123.h +endif +if NEED_FMT123 include_HEADERS += src/libmpg123/fmt123.h +endif src_libmpg123_libmpg123_la_CFLAGS = @LIB_CFLAGS@ @@ -66,6 +68,7 @@ src_libmpg123_libmpg123_la_SOURCES = \ src/libmpg123/optimize.h \ src/libmpg123/optimize.c \ src/libmpg123/readers.c \ + src/libmpg123/lfs_wrap.h \ src/libmpg123/costabs.h \ src/libmpg123/tabinit.c \ src/libmpg123/libmpg123.c \ @@ -110,7 +113,6 @@ src_libmpg123_libmpg123_la_SOURCES = \ #SYNTH16 synth.c #SYNTH32 synth_s32.c #SYNTHREAL synth_real.c -#LFS_ALIAS lfs_alias.c #LFS_WRAP lfs_wrap.c #ICY icy.c icy2utf8.c #FEATURE feature.c @@ -206,10 +208,6 @@ if HAVE_SYNTHREAL src_libmpg123_libmpg123_la_SOURCES += src/libmpg123/synth_real.c endif -if HAVE_LFS_ALIAS -src_libmpg123_libmpg123_la_SOURCES += src/libmpg123/lfs_alias.c -endif - if HAVE_LFS_WRAP src_libmpg123_libmpg123_la_SOURCES += src/libmpg123/lfs_wrap.c endif @@ -538,8 +536,7 @@ AVX_OBJS = $(AVX_SRCS:.S=.@OBJEXT@) ASM_DEPS = \ src/libmpg123/mangle.h \ - $(top_builddir)/src/config.h \ - src/intsym.h + $(top_builddir)/src/config.h $(AVX_OBJS): %.@OBJEXT@: %.S $(ASM_DEPS) $(CPP) $(DEFAULT_INCLUDES) $(INCLUDES) -DASMALIGN_BALIGN $< | @YASM@ - @YASMFLAGS@ @YASM_FORMAT@ -o $@ diff --git a/src/libmpg123/abi_align.h b/src/libmpg123/abi_align.h index 9ae46f4..7e5117b 100644 --- a/src/libmpg123/abi_align.h +++ b/src/libmpg123/abi_align.h @@ -1,8 +1,11 @@ /* - abi_align: An attempt to avoid breakage because of mixing - compilers with different alignment. + abi_align: ABI and alignment stuff for library builds. - copyright 1995-2015 by the mpg123 project + Original use was the definitions for avoiding breakage because of mixing + compilers with different alignment. Then, the switchery for building + DLLs got lumped in. + + copyright 1995-2023 by the mpg123 project free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -16,6 +19,12 @@ #include "config.h" +// Building any of our libs on/for Windows needs this before +// including the main API header (define MPG123_EXPORT). +#if defined(WIN32) && defined(DYNAMIC_BUILD) +#define BUILD_MPG123_DLL +#endif + /* ABI conformance for other compilers. mpg123 needs 16byte-aligned (or more) stack for SSE and friends. gcc provides that, but others don't necessarily. */ diff --git a/src/libmpg123/calctables.c b/src/libmpg123/calctables.c index da15696..9d61d28 100644 --- a/src/libmpg123/calctables.c +++ b/src/libmpg123/calctables.c @@ -40,9 +40,9 @@ static double ispow[8207]; // scale with SCALE_POW43 static double aa_ca[8],aa_cs[8]; static double win[4][36]; static double win1[4][36]; -double COS9[9]; /* dct36_3dnow wants to use that */ +double INT123_COS9[9]; /* INT123_dct36_3dnow wants to use that */ static double COS6_1,COS6_2; -double tfcos36[9]; /* dct36_3dnow wants to use that */ +double INT123_tfcos36[9]; /* INT123_dct36_3dnow wants to use that */ static double tfcos12[3]; static double cos9[3],cos18[3]; @@ -117,7 +117,7 @@ static void print_value( int fixed, double fixed_scale if(fixed) printf("%ld;\n", (long)(DOUBLE_TO_REAL(fixed_scale*val))); else - printf("%15.8e;\n", val); + printf("%15.8ef;\n", val); } // I feal uneasy about inf appearing as literal. @@ -143,7 +143,7 @@ static void print_array( int statick, int fixed, double fixed_scale , statick ? "static " : "", name, count ); return; } - size_t block = 72/17; + size_t block = 72/18; size_t i = 0; if(name) printf( "%sconst%s real %s[%zu] = \n", statick ? "static " : "" @@ -157,7 +157,7 @@ static void print_array( int statick, int fixed, double fixed_scale printf( "%s%c%11ld", i ? "," : "", j ? ' ' : '\t' , (long)(DOUBLE_TO_REAL(fixed_scale*tab[i])) ); else for(size_t j=0; j=0;i--) @@ -39,7 +39,7 @@ void dct64(real *out0,real *out1,real *samples) *bs++ = REAL_MUL((*--b2 - *b1++), *--costab); b1 = bufs; - costab = pnts[1]+8; + costab = INT123_pnts[1]+8; b2 = b1 + 16; { @@ -57,7 +57,7 @@ void dct64(real *out0,real *out1,real *samples) } bs = bufs; - costab = pnts[2]; + costab = INT123_pnts[2]; b2 = b1 + 8; for(j=2;j;j--) @@ -75,7 +75,7 @@ void dct64(real *out0,real *out1,real *samples) } b1 = bufs; - costab = pnts[3]; + costab = INT123_pnts[3]; b2 = b1 + 4; for(j=4;j;j--) @@ -92,7 +92,7 @@ void dct64(real *out0,real *out1,real *samples) b2 += 8; } bs = bufs; - costab = pnts[4]; + costab = INT123_pnts[4]; for(j=8;j;j--) { diff --git a/src/libmpg123/dct64_3dnow.S b/src/libmpg123/dct64_3dnow.S index 5265a87..57c2ebb 100644 --- a/src/libmpg123/dct64_3dnow.S +++ b/src/libmpg123/dct64_3dnow.S @@ -14,9 +14,9 @@ #include "mangle.h" - .globl ASM_NAME(dct64_3dnow) -/* .type ASM_NAME(dct64_3dnow),@function */ -ASM_NAME(dct64_3dnow): + .globl ASM_NAME(INT123_dct64_3dnow) +/* .type ASM_NAME(INT123_dct64_3dnow),@function */ +ASM_NAME(INT123_dct64_3dnow): subl $256,%esp pushl %ebp pushl %edi @@ -37,10 +37,10 @@ ASM_NAME(dct64_3dnow): /* 1 */ #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(pnts),%eax + movl GLOBAL_VAR_PTR(INT123_pnts),%eax movl (%eax),%eax #else - movl GLOBAL_VAR(pnts),%eax + movl GLOBAL_VAR(INT123_pnts),%eax #endif movq 0(%edi),%mm0 movq %mm0,%mm1 @@ -141,10 +141,10 @@ ASM_NAME(dct64_3dnow): /* 2 */ #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(pnts),%eax + movl GLOBAL_VAR_PTR(INT123_pnts),%eax movl 4(%eax),%eax #else - movl 4+GLOBAL_VAR(pnts),%eax + movl 4+GLOBAL_VAR(INT123_pnts),%eax #endif /* 0,14 */ movq 0(%ebx),%mm0 @@ -249,10 +249,10 @@ ASM_NAME(dct64_3dnow): /* 3 */ #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(pnts),%eax + movl GLOBAL_VAR_PTR(INT123_pnts),%eax movl 8(%eax),%eax #else - movl 8+GLOBAL_VAR(pnts),%eax + movl 8+GLOBAL_VAR(INT123_pnts),%eax #endif movq 0(%eax),%mm0 movq 8(%eax),%mm1 @@ -355,10 +355,10 @@ ASM_NAME(dct64_3dnow): /* 4 */ #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(pnts),%eax + movl GLOBAL_VAR_PTR(INT123_pnts),%eax movl 12(%eax),%eax #else - movl 12+GLOBAL_VAR(pnts),%eax + movl 12+GLOBAL_VAR(INT123_pnts),%eax #endif movq 0(%eax),%mm0 /* 0 */ @@ -470,10 +470,10 @@ ASM_NAME(dct64_3dnow): movd %eax,%mm1 pi2fd %mm1,%mm1 #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(pnts),%eax + movl GLOBAL_VAR_PTR(INT123_pnts),%eax movl 16(%eax),%eax #else - movl 16+GLOBAL_VAR(pnts),%eax + movl 16+GLOBAL_VAR(INT123_pnts),%eax #endif movd 0(%eax),%mm2 /* 1.0 | cos0 */ @@ -741,8 +741,8 @@ ASM_NAME(dct64_3dnow): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__pointers,non_lazy_symbol_pointers -L_pnts: - .indirect_symbol ASM_NAME(pnts) +L_INT123_pnts: + .indirect_symbol ASM_NAME(INT123_pnts) .long 0 #endif diff --git a/src/libmpg123/dct64_3dnowext.S b/src/libmpg123/dct64_3dnowext.S index 69367bf..d432141 100644 --- a/src/libmpg123/dct64_3dnowext.S +++ b/src/libmpg123/dct64_3dnowext.S @@ -37,9 +37,9 @@ x_plus_minus_3dnow: .text ALIGN32 -.globl ASM_NAME(dct64_3dnowext) - /* .type ASM_NAME(dct64_3dnowext), @function */ -ASM_NAME(dct64_3dnowext): +.globl ASM_NAME(INT123_dct64_3dnowext) + /* .type ASM_NAME(INT123_dct64_3dnowext), @function */ +ASM_NAME(INT123_dct64_3dnowext): pushl %ebp movl %esp, %ebp pushl %edi @@ -57,9 +57,9 @@ ASM_NAME(dct64_3dnowext): movl 8(%ebp),%esi movl 12(%ebp),%edi #if defined(PIC) && defined(__APPLE__) - movl GLOBAL_VAR_PTR(costab_mmxsse),%ebx + movl GLOBAL_VAR_PTR(INT123_costab_mmxsse),%ebx #else - leal GLOBAL_VAR(costab_mmxsse),%ebx + leal GLOBAL_VAR(INT123_costab_mmxsse),%ebx #endif leal -268(%ebp),%ecx movq (%eax), %mm0 @@ -723,12 +723,12 @@ ASM_NAME(dct64_3dnowext): popl %edi leave ret - /* .size ASM_NAME(dct64_3dnowext), .-ASM_NAME(dct64_3dnowext) */ + /* .size ASM_NAME(INT123_dct64_3dnowext), .-ASM_NAME(INT123_dct64_3dnowext) */ #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__pointers,non_lazy_symbol_pointers -L_costab_mmxsse: - .indirect_symbol ASM_NAME(costab_mmxsse) +L_INT123_costab_mmxsse: + .indirect_symbol ASM_NAME(INT123_costab_mmxsse) .long 0 #endif diff --git a/src/libmpg123/dct64_altivec.c b/src/libmpg123/dct64_altivec.c index 3d6c7e1..bd599d7 100644 --- a/src/libmpg123/dct64_altivec.c +++ b/src/libmpg123/dct64_altivec.c @@ -1,5 +1,5 @@ /* - dct64_altivec.c: Discrete Cosine Tansform (DCT) for Altivec + INT123_dct64_altivec.c: Discrete Cosine Tansform (DCT) for Altivec copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -24,7 +24,7 @@ #include #endif -void dct64_altivec(real *out0,real *out1,real *samples) +void INT123_dct64_altivec(real *out0,real *out1,real *samples) { ALIGNED(16) real bufs[32]; @@ -37,7 +37,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) vector float vbs9,vbs10,vbs11,vbs12,vbs13,vbs14,vbs15,vbs16; vector float vzero; b1 = samples; - costab = pnts[0]; + costab = INT123_pnts[0]; vzero = vec_xor(vzero,vzero); #ifdef __APPLE__ @@ -93,7 +93,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) vbs5 = vec_perm(vbs5,vbs5,vinvert); - costab = pnts[1]; + costab = INT123_pnts[1]; v1 = vec_perm(vbs4,vbs4,vinvert); vbs9 = vec_add(vbs1,v1); @@ -114,7 +114,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) vbs16 = vec_madd(v8,v5,vzero); - costab = pnts[2]; + costab = INT123_pnts[2]; v1 = vec_perm(vbs10,vbs10,vinvert); v5 = vec_perm(vbs14,vbs14,vinvert); @@ -140,7 +140,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) vbs8 = vec_perm(vbs8,vbs8,vinvert); - costab = pnts[3]; + costab = INT123_pnts[3]; #ifdef __APPLE__ vperm1 = (vector unsigned char)(0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23); @@ -189,7 +189,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) vbs16 = vec_perm(v3,v5,vperm4); - costab = pnts[4]; + costab = INT123_pnts[4]; v1 = vec_lde(0,costab); #ifdef __APPLE__ diff --git a/src/libmpg123/dct64_avx.S b/src/libmpg123/dct64_avx.S index 3a8468e..0c75de2 100644 --- a/src/libmpg123/dct64_avx.S +++ b/src/libmpg123/dct64_avx.S @@ -58,8 +58,8 @@ costab_avx: .long 0 .text ALIGN16 -.globl ASM_NAME(dct64_avx) -ASM_NAME(dct64_avx): +.globl ASM_NAME(INT123_dct64_avx) +ASM_NAME(INT123_dct64_avx): #ifdef IS_MSABI push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/dct64_avx_float.S b/src/libmpg123/dct64_avx_float.S index e4c024e..b6fa78c 100644 --- a/src/libmpg123/dct64_avx_float.S +++ b/src/libmpg123/dct64_avx_float.S @@ -58,8 +58,8 @@ costab_avx: .long 0 .text ALIGN16 -.globl ASM_NAME(dct64_real_avx) -ASM_NAME(dct64_real_avx): +.globl ASM_NAME(INT123_dct64_real_avx) +ASM_NAME(INT123_dct64_real_avx): #ifdef IS_MSABI push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/dct64_i386.c b/src/libmpg123/dct64_i386.c index 7c61014..52a45ab 100644 --- a/src/libmpg123/dct64_i386.c +++ b/src/libmpg123/dct64_i386.c @@ -1,5 +1,5 @@ /* - dct64_i386.c: DCT64, a C variant for i386 + INT123_dct64_i386.c: DCT64, a C variant for i386 copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -10,7 +10,7 @@ * Discrete Cosine Tansform (DCT) for subband synthesis * optimized for machines with no auto-increment. * The performance is highly compiler dependend. Maybe - * the dct64.c version for 'normal' processor may be faster + * the INT123_dct64.c version for 'normal' processor may be faster * even for Intel processors. */ @@ -19,7 +19,7 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) { { - register const real *costab = pnts[0]; + register const real *costab = INT123_pnts[0]; b1[0x00] = samples[0x00] + samples[0x1F]; b1[0x01] = samples[0x01] + samples[0x1E]; @@ -65,7 +65,7 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) { - register const real *costab = pnts[1]; + register const real *costab = INT123_pnts[1]; b2[0x00] = b1[0x00] + b1[0x0F]; b2[0x01] = b1[0x01] + b1[0x0E]; @@ -111,7 +111,7 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) } { - register const real *costab = pnts[2]; + register const real *costab = INT123_pnts[2]; b1[0x00] = b2[0x00] + b2[0x07]; b1[0x07] = REAL_MUL(b2[0x00] - b2[0x07], costab[0]); @@ -151,8 +151,8 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) } { - register real const cos0 = pnts[3][0]; - register real const cos1 = pnts[3][1]; + register real const cos0 = INT123_pnts[3][0]; + register real const cos1 = INT123_pnts[3][1]; b2[0x00] = b1[0x00] + b1[0x03]; b2[0x03] = REAL_MUL(b1[0x00] - b1[0x03], cos0); @@ -196,7 +196,7 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) } { - register real const cos0 = pnts[4][0]; + register real const cos0 = INT123_pnts[4][0]; b1[0x00] = b2[0x00] + b2[0x01]; b1[0x01] = REAL_MUL(b2[0x00] - b2[0x01], cos0); @@ -325,10 +325,10 @@ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) } /* - * the call via dct64 is a trick to force GCC to use + * the call via INT123_dct64 is a trick to force GCC to use * (new) registers for the b1,b2 pointer to the bufs[xx] field */ -void dct64_i386(real *a,real *b,real *c) +void INT123_dct64_i386(real *a,real *b,real *c) { real bufs[0x40]; dct64_1(a,b,bufs,bufs+0x20,c); diff --git a/src/libmpg123/dct64_i486.c b/src/libmpg123/dct64_i486.c index b81d060..34d2765 100644 --- a/src/libmpg123/dct64_i486.c +++ b/src/libmpg123/dct64_i486.c @@ -1,5 +1,5 @@ /* - dct64_i486.c: DCT64, a plain C variant for i486 + INT123_dct64_i486.c: DCT64, a plain C variant for i486 copyright 1998-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -314,10 +314,10 @@ void dct64_1_486(int *out0,int *out1,int *b1,int *b2) /* - * the call via dct64 is a trick to force GCC to use + * the call via INT123_dct64 is a trick to force GCC to use * (new) registers for the b1,b2 pointer to the bufs[xx] field */ -void dct64_i486(int *a,int *b,real *samples) +void INT123_dct64_i486(int *a,int *b,real *samples) { int bufs[64]; int i; diff --git a/src/libmpg123/dct64_mmx.S b/src/libmpg123/dct64_mmx.S index 95d426c..5721cdc 100644 --- a/src/libmpg123/dct64_mmx.S +++ b/src/libmpg123/dct64_mmx.S @@ -11,12 +11,12 @@ .text ALIGN32 -.globl ASM_NAME(dct64_mmx) -ASM_NAME(dct64_mmx): +.globl ASM_NAME(INT123_dct64_mmx) +ASM_NAME(INT123_dct64_mmx): xorl %ecx,%ecx -.globl ASM_NAME(dct64_MMX) -ASM_NAME(dct64_MMX): +.globl ASM_NAME(INT123_dct64_MMX) +ASM_NAME(INT123_dct64_MMX): pushl %ebx pushl %esi pushl %edi @@ -33,9 +33,9 @@ ASM_NAME(dct64_MMX): movl 276(%esp),%edi flds 4(%eax) #ifdef PIC_GLOBAL_PTR - movl GLOBAL_VAR_PTR(costab_mmxsse),%ebx + movl GLOBAL_VAR_PTR(INT123_costab_mmxsse),%ebx #else - leal GLOBAL_VAR(costab_mmxsse),%ebx + leal GLOBAL_VAR(INT123_costab_mmxsse),%ebx #endif fadds 120(%eax) orl %ecx,%ecx @@ -817,8 +817,8 @@ ASM_NAME(dct64_MMX): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__pointers,non_lazy_symbol_pointers -L_costab_mmxsse: - .indirect_symbol ASM_NAME(costab_mmxsse) +L_INT123_costab_mmxsse: + .indirect_symbol ASM_NAME(INT123_costab_mmxsse) .long 0 #endif diff --git a/src/libmpg123/dct64_neon.S b/src/libmpg123/dct64_neon.S index de8c363..94b2de7 100644 --- a/src/libmpg123/dct64_neon.S +++ b/src/libmpg123/dct64_neon.S @@ -51,11 +51,11 @@ costab_arm: .word 1060439283 .word 1060439283 ALIGN4 - GLOBAL_SYMBOL ASM_NAME(dct64_neon) + GLOBAL_SYMBOL ASM_NAME(INT123_dct64_neon) #ifdef __ELF__ - .type ASM_NAME(dct64_neon), %function + .type ASM_NAME(INT123_dct64_neon), %function #endif -ASM_NAME(dct64_neon): +ASM_NAME(INT123_dct64_neon): vpush {q4-q7} adr r3, costab_arm diff --git a/src/libmpg123/dct64_neon64.S b/src/libmpg123/dct64_neon64.S index 32b8a0b..a180304 100644 --- a/src/libmpg123/dct64_neon64.S +++ b/src/libmpg123/dct64_neon64.S @@ -49,11 +49,11 @@ costab_neon_aarch64: .word 1060439283 .text ALIGN4 - .globl ASM_NAME(dct64_neon64) + .globl ASM_NAME(INT123_dct64_neon64) #ifdef __ELF__ - .type ASM_NAME(dct64_neon64), %function + .type ASM_NAME(INT123_dct64_neon64), %function #endif -ASM_NAME(dct64_neon64): +ASM_NAME(INT123_dct64_neon64): add x3, x2, #64 adrp x4, AARCH64_PCREL_HI(costab_neon_aarch64) add x4, x4, AARCH64_PCREL_LO(costab_neon_aarch64) diff --git a/src/libmpg123/dct64_neon64_float.S b/src/libmpg123/dct64_neon64_float.S index 0e557e5..0b81a4c 100644 --- a/src/libmpg123/dct64_neon64_float.S +++ b/src/libmpg123/dct64_neon64_float.S @@ -49,11 +49,11 @@ costab_neon_aarch64: .word 1060439283 .text ALIGN4 - .globl ASM_NAME(dct64_real_neon64) + .globl ASM_NAME(INT123_dct64_real_neon64) #ifdef __ELF__ - .type ASM_NAME(dct64_real_neon64), %function + .type ASM_NAME(INT123_dct64_real_neon64), %function #endif -ASM_NAME(dct64_real_neon64): +ASM_NAME(INT123_dct64_real_neon64): add x3, x2, #64 adrp x4, AARCH64_PCREL_HI(costab_neon_aarch64) add x4, x4, AARCH64_PCREL_LO(costab_neon_aarch64) diff --git a/src/libmpg123/dct64_neon_float.S b/src/libmpg123/dct64_neon_float.S index 36d640f..9ee8a25 100644 --- a/src/libmpg123/dct64_neon_float.S +++ b/src/libmpg123/dct64_neon_float.S @@ -51,11 +51,11 @@ costab_arm: .word 1060439283 .word 1060439283 ALIGN4 - GLOBAL_SYMBOL ASM_NAME(dct64_real_neon) + GLOBAL_SYMBOL ASM_NAME(INT123_dct64_real_neon) #ifdef __ELF__ - .type ASM_NAME(dct64_real_neon), %function + .type ASM_NAME(INT123_dct64_real_neon), %function #endif -ASM_NAME(dct64_real_neon): +ASM_NAME(INT123_dct64_real_neon): vpush {q4-q7} adr r3, costab_arm diff --git a/src/libmpg123/dct64_sse.S b/src/libmpg123/dct64_sse.S index fd1802f..d3ebde3 100644 --- a/src/libmpg123/dct64_sse.S +++ b/src/libmpg123/dct64_sse.S @@ -36,8 +36,8 @@ mask: .text ALIGN16 -.globl ASM_NAME(dct64_sse) -ASM_NAME(dct64_sse): +.globl ASM_NAME(INT123_dct64_sse) +ASM_NAME(INT123_dct64_sse): pushl %ebp movl %esp, %ebp @@ -78,9 +78,9 @@ ASM_NAME(dct64_sse): subps %xmm1, %xmm4 #ifdef PIC_GLOBAL_PTR - mov GLOBAL_VAR_PTR(costab_mmxsse), %ecx + mov GLOBAL_VAR_PTR(INT123_costab_mmxsse), %ecx #else - lea GLOBAL_VAR(costab_mmxsse), %ecx + lea GLOBAL_VAR(INT123_costab_mmxsse), %ecx #endif mulps (%ecx), %xmm7 mulps 16(%ecx), %xmm6 @@ -464,8 +464,8 @@ ASM_NAME(dct64_sse): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__pointers,non_lazy_symbol_pointers -L_costab_mmxsse: - .indirect_symbol ASM_NAME(costab_mmxsse) +L_INT123_costab_mmxsse: + .indirect_symbol ASM_NAME(INT123_costab_mmxsse) .long 0 #endif diff --git a/src/libmpg123/dct64_sse_float.S b/src/libmpg123/dct64_sse_float.S index 1dbd0df..b7f4208 100644 --- a/src/libmpg123/dct64_sse_float.S +++ b/src/libmpg123/dct64_sse_float.S @@ -36,8 +36,8 @@ mask: .text ALIGN16 -.globl ASM_NAME(dct64_real_sse) -ASM_NAME(dct64_real_sse): +.globl ASM_NAME(INT123_dct64_real_sse) +ASM_NAME(INT123_dct64_real_sse): pushl %ebp movl %esp, %ebp @@ -78,9 +78,9 @@ ASM_NAME(dct64_real_sse): subps %xmm1, %xmm4 #ifdef PIC_GLOBAL_PTR - mov GLOBAL_VAR_PTR(costab_mmxsse), %eax + mov GLOBAL_VAR_PTR(INT123_costab_mmxsse), %eax #else - lea GLOBAL_VAR(costab_mmxsse), %eax + lea GLOBAL_VAR(INT123_costab_mmxsse), %eax #endif mulps (%eax), %xmm7 mulps 16(%eax), %xmm6 @@ -409,8 +409,8 @@ ASM_NAME(dct64_real_sse): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__pointers,non_lazy_symbol_pointers -L_costab_mmxsse: - .indirect_symbol ASM_NAME(costab_mmxsse) +L_INT123_costab_mmxsse: + .indirect_symbol ASM_NAME(INT123_costab_mmxsse) .long 0 #endif diff --git a/src/libmpg123/dct64_x86_64.S b/src/libmpg123/dct64_x86_64.S index 9d85862..a9b2bef 100644 --- a/src/libmpg123/dct64_x86_64.S +++ b/src/libmpg123/dct64_x86_64.S @@ -34,7 +34,7 @@ .data #endif ALIGN32 -ASM_NAME(costab_x86_64): +ASM_NAME(INT123_costab_x86_64): .long 1056974725 .long 1057056395 .long 1057223771 @@ -69,8 +69,8 @@ ASM_NAME(costab_x86_64): .long 0 .text ALIGN16 -.globl ASM_NAME(dct64_x86_64) -ASM_NAME(dct64_x86_64): +.globl ASM_NAME(INT123_dct64_x86_64) +ASM_NAME(INT123_dct64_x86_64): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $168, %rsp /* stack alignment + 10 xmm registers */ @@ -86,7 +86,7 @@ ASM_NAME(dct64_x86_64): movaps %xmm15, 144(%rsp) #endif - leaq ASM_NAME(costab_x86_64)(%rip), %rcx + leaq ASM_NAME(INT123_costab_x86_64)(%rip), %rcx MOVUAPS (ARG2), %xmm15 MOVUAPS 16(ARG2), %xmm14 diff --git a/src/libmpg123/dct64_x86_64_float.S b/src/libmpg123/dct64_x86_64_float.S index 5197e4c..9e5c444 100644 --- a/src/libmpg123/dct64_x86_64_float.S +++ b/src/libmpg123/dct64_x86_64_float.S @@ -34,7 +34,7 @@ .data #endif ALIGN32 -ASM_NAME(costab_x86_64): +ASM_NAME(INT123_costab_x86_64): .long 1056974725 .long 1057056395 .long 1057223771 @@ -69,8 +69,8 @@ ASM_NAME(costab_x86_64): .long 0 .text ALIGN16 -.globl ASM_NAME(dct64_real_x86_64) -ASM_NAME(dct64_real_x86_64): +.globl ASM_NAME(INT123_dct64_real_x86_64) +ASM_NAME(INT123_dct64_real_x86_64): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $168, %rsp /* stack alignment + 10 xmm registers */ @@ -86,7 +86,7 @@ ASM_NAME(dct64_real_x86_64): movaps %xmm15, 144(%rsp) #endif - leaq ASM_NAME(costab_x86_64)(%rip), %rcx + leaq ASM_NAME(INT123_costab_x86_64)(%rip), %rcx MOVUAPS (ARG2), %xmm15 MOVUAPS 16(ARG2), %xmm14 diff --git a/src/libmpg123/decode.h b/src/libmpg123/decode.h index e32940c..9850f10 100644 --- a/src/libmpg123/decode.h +++ b/src/libmpg123/decode.h @@ -4,7 +4,7 @@ This file is strongly tied with optimize.h concerning the synth functions. Perhaps one should restructure that a bit. - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis, taking WRITE_SAMPLE from decode.c */ @@ -30,7 +30,7 @@ #define NTOM_MAX 8 /* maximum allowed factor for upsampling */ #define NTOM_MAX_FREQ 96000 /* maximum frequency to upsample to / downsample from */ #define NTOM_MUL (32768) -void ntom_set_ntom(mpg123_handle *fr, off_t num); +void INT123_ntom_set_ntom(mpg123_handle *fr, int64_t num); #endif /* Let's collect all possible synth functions here, for an overview. @@ -39,84 +39,84 @@ void ntom_set_ntom(mpg123_handle *fr, off_t num); #ifndef NO_16BIT /* The signed-16bit-producing variants. */ -int synth_1to1 (real*, int, mpg123_handle*, int); -int synth_1to1_dither (real*, int, mpg123_handle*, int); -int synth_1to1_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_i586 (real*, int, mpg123_handle*, int); -int synth_1to1_i586_dither(real*, int, mpg123_handle*, int); -int synth_1to1_mmx (real*, int, mpg123_handle*, int); -int synth_1to1_3dnow (real*, int, mpg123_handle*, int); -int synth_1to1_sse (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_3dnowext (real*, int, mpg123_handle*, int); -int synth_1to1_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_altivec(real*, real*, mpg123_handle*); -int synth_1to1_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_avx (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_avx (real*, real*, mpg123_handle*); -int synth_1to1_arm (real*, int, mpg123_handle*, int); -int synth_1to1_neon (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_neon(real*, real*, mpg123_handle*); -int synth_1to1_neon64 (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_neon64(real*, real*, mpg123_handle*); +int INT123_synth_1to1 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_dither (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_i586 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_i586_dither(real*, int, mpg123_handle*, int); +int INT123_synth_1to1_mmx (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_3dnow (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_sse (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_sse (real*, real*, mpg123_handle*); +int INT123_synth_1to1_3dnowext (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_altivec (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_altivec(real*, real*, mpg123_handle*); +int INT123_synth_1to1_x86_64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_x86_64(real*, real*, mpg123_handle*); +int INT123_synth_1to1_avx (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_avx (real*, real*, mpg123_handle*); +int INT123_synth_1to1_arm (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_neon (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_neon(real*, real*, mpg123_handle*); +int INT123_synth_1to1_neon64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_stereo_neon64(real*, real*, mpg123_handle*); /* This is different, special usage in layer3.c only. Hence, the name... and now forget about it. Never use it outside that special portion of code inside layer3.c! */ -int absynth_1to1_i486(real*, int, mpg123_handle*, int); +int INT123_absynth_1to1_i486(real*, int, mpg123_handle*, int); /* These mono/stereo converters use one of the above for the grunt work. */ -int synth_1to1_mono (real*, mpg123_handle*); -int synth_1to1_m2s(real*, mpg123_handle*); +int INT123_synth_1to1_mono (real*, mpg123_handle*); +int INT123_synth_1to1_m2s(real*, mpg123_handle*); /* Sample rate decimation comes in less flavours. */ #ifndef NO_DOWNSAMPLE -int synth_2to1 (real*, int, mpg123_handle*, int); -int synth_2to1_dither (real*, int, mpg123_handle*, int); -int synth_2to1_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_mono (real*, mpg123_handle*); -int synth_2to1_m2s(real*, mpg123_handle*); -int synth_4to1 (real *,int, mpg123_handle*, int); -int synth_4to1_dither (real *,int, mpg123_handle*, int); -int synth_4to1_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_mono (real*, mpg123_handle*); -int synth_4to1_m2s(real*, mpg123_handle*); +int INT123_synth_2to1 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_dither (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_mono (real*, mpg123_handle*); +int INT123_synth_2to1_m2s(real*, mpg123_handle*); +int INT123_synth_4to1 (real *,int, mpg123_handle*, int); +int INT123_synth_4to1_dither (real *,int, mpg123_handle*, int); +int INT123_synth_4to1_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_mono (real*, mpg123_handle*); +int INT123_synth_4to1_m2s(real*, mpg123_handle*); #endif #ifndef NO_NTOM /* NtoM is really just one implementation. */ -int synth_ntom (real *,int, mpg123_handle*, int); -int synth_ntom_mono (real *, mpg123_handle *); -int synth_ntom_m2s (real *, mpg123_handle *); +int INT123_synth_ntom (real *,int, mpg123_handle*, int); +int INT123_synth_ntom_mono (real *, mpg123_handle *); +int INT123_synth_ntom_m2s (real *, mpg123_handle *); #endif #endif #ifndef NO_8BIT /* The 8bit-producing variants. */ /* There are direct 8-bit synths and wrappers over a possibly optimized 16bit one. */ -int synth_1to1_8bit (real*, int, mpg123_handle*, int); -int synth_1to1_8bit_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_8bit (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_8bit_i386 (real*, int, mpg123_handle*, int); #ifndef NO_16BIT -int synth_1to1_8bit_wrap (real*, int, mpg123_handle*, int); -int synth_1to1_8bit_mono (real*, mpg123_handle*); +int INT123_synth_1to1_8bit_wrap (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_8bit_mono (real*, mpg123_handle*); #endif -int synth_1to1_8bit_m2s(real*, mpg123_handle*); +int INT123_synth_1to1_8bit_m2s(real*, mpg123_handle*); #ifndef NO_16BIT -int synth_1to1_8bit_wrap_mono (real*, mpg123_handle*); -int synth_1to1_8bit_wrap_m2s(real*, mpg123_handle*); +int INT123_synth_1to1_8bit_wrap_mono (real*, mpg123_handle*); +int INT123_synth_1to1_8bit_wrap_m2s(real*, mpg123_handle*); #endif #ifndef NO_DOWNSAMPLE -int synth_2to1_8bit (real*, int, mpg123_handle*, int); -int synth_2to1_8bit_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_8bit_mono (real*, mpg123_handle*); -int synth_2to1_8bit_m2s(real*, mpg123_handle*); -int synth_4to1_8bit (real*, int, mpg123_handle*, int); -int synth_4to1_8bit_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_8bit_mono (real*, mpg123_handle*); -int synth_4to1_8bit_m2s(real*, mpg123_handle*); +int INT123_synth_2to1_8bit (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_8bit_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_8bit_mono (real*, mpg123_handle*); +int INT123_synth_2to1_8bit_m2s(real*, mpg123_handle*); +int INT123_synth_4to1_8bit (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_8bit_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_8bit_mono (real*, mpg123_handle*); +int INT123_synth_4to1_8bit_m2s(real*, mpg123_handle*); #endif #ifndef NO_NTOM -int synth_ntom_8bit (real*, int, mpg123_handle*, int); -int synth_ntom_8bit_mono (real*, mpg123_handle*); -int synth_ntom_8bit_m2s(real*, mpg123_handle*); +int INT123_synth_ntom_8bit (real*, int, mpg123_handle*, int); +int INT123_synth_ntom_8bit_mono (real*, mpg123_handle*); +int INT123_synth_ntom_8bit_m2s(real*, mpg123_handle*); #endif #endif @@ -124,153 +124,153 @@ int synth_ntom_8bit_m2s(real*, mpg123_handle*); #ifndef NO_REAL /* The real-producing variants. */ -int synth_1to1_real (real*, int, mpg123_handle*, int); -int synth_1to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_real_sse (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_real_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_real_avx (real*, int, mpg123_handle*, int); -int synth_1to1_fltst_avx (real*, real*, mpg123_handle*); -int synth_1to1_real_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_fltst_altivec(real*, real*, mpg123_handle*); -int synth_1to1_real_neon (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_neon(real*, real*, mpg123_handle*); -int synth_1to1_real_neon64 (real*, int, mpg123_handle*, int); -int synth_1to1_fltst_neon64(real*, real*, mpg123_handle*); -int synth_1to1_real_mono (real*, mpg123_handle*); -int synth_1to1_real_m2s(real*, mpg123_handle*); +int INT123_synth_1to1_real (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_real_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_real_sse (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_real_stereo_sse (real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_x86_64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_real_stereo_x86_64(real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_avx (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_fltst_avx (real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_altivec (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_fltst_altivec(real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_neon (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_real_stereo_neon(real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_neon64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_fltst_neon64(real*, real*, mpg123_handle*); +int INT123_synth_1to1_real_mono (real*, mpg123_handle*); +int INT123_synth_1to1_real_m2s(real*, mpg123_handle*); #ifndef NO_DOWNSAMPLE -int synth_2to1_real (real*, int, mpg123_handle*, int); -int synth_2to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_real_mono (real*, mpg123_handle*); -int synth_2to1_real_m2s(real*, mpg123_handle*); -int synth_4to1_real (real*, int, mpg123_handle*, int); -int synth_4to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_real_mono (real*, mpg123_handle*); -int synth_4to1_real_m2s(real*, mpg123_handle*); +int INT123_synth_2to1_real (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_real_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_real_mono (real*, mpg123_handle*); +int INT123_synth_2to1_real_m2s(real*, mpg123_handle*); +int INT123_synth_4to1_real (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_real_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_real_mono (real*, mpg123_handle*); +int INT123_synth_4to1_real_m2s(real*, mpg123_handle*); #endif #ifndef NO_NTOM -int synth_ntom_real (real*, int, mpg123_handle*, int); -int synth_ntom_real_mono (real*, mpg123_handle*); -int synth_ntom_real_m2s(real*, mpg123_handle*); +int INT123_synth_ntom_real (real*, int, mpg123_handle*, int); +int INT123_synth_ntom_real_mono (real*, mpg123_handle*); +int INT123_synth_ntom_real_m2s(real*, mpg123_handle*); #endif #endif #ifndef NO_32BIT /* 32bit integer */ -int synth_1to1_s32 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_sse (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_s32_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_s32_avx (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_avx (real*, real*, mpg123_handle*); -int synth_1to1_s32_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_altivec(real*, real*, mpg123_handle*); -int synth_1to1_s32_neon (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_neon(real*, real*, mpg123_handle*); -int synth_1to1_s32_neon64 (real*, int, mpg123_handle*, int); -int synth_1to1_s32st_neon64(real*, real*, mpg123_handle*); -int synth_1to1_s32_mono (real*, mpg123_handle*); -int synth_1to1_s32_m2s(real*, mpg123_handle*); +int INT123_synth_1to1_s32 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_sse (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_stereo_sse (real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_x86_64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_stereo_x86_64(real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_avx (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_stereo_avx (real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_altivec (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_stereo_altivec(real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_neon (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32_stereo_neon(real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_neon64 (real*, int, mpg123_handle*, int); +int INT123_synth_1to1_s32st_neon64(real*, real*, mpg123_handle*); +int INT123_synth_1to1_s32_mono (real*, mpg123_handle*); +int INT123_synth_1to1_s32_m2s(real*, mpg123_handle*); #ifndef NO_DOWNSAMPLE -int synth_2to1_s32 (real*, int, mpg123_handle*, int); -int synth_2to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_s32_mono (real*, mpg123_handle*); -int synth_2to1_s32_m2s(real*, mpg123_handle*); -int synth_4to1_s32 (real*, int, mpg123_handle*, int); -int synth_4to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_s32_mono (real*, mpg123_handle*); -int synth_4to1_s32_m2s(real*, mpg123_handle*); +int INT123_synth_2to1_s32 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_s32_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_2to1_s32_mono (real*, mpg123_handle*); +int INT123_synth_2to1_s32_m2s(real*, mpg123_handle*); +int INT123_synth_4to1_s32 (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_s32_i386 (real*, int, mpg123_handle*, int); +int INT123_synth_4to1_s32_mono (real*, mpg123_handle*); +int INT123_synth_4to1_s32_m2s(real*, mpg123_handle*); #endif #ifndef NO_NTOM -int synth_ntom_s32 (real*, int, mpg123_handle*, int); -int synth_ntom_s32_mono (real*, mpg123_handle*); -int synth_ntom_s32_m2s(real*, mpg123_handle*); +int INT123_synth_ntom_s32 (real*, int, mpg123_handle*, int); +int INT123_synth_ntom_s32_mono (real*, mpg123_handle*); +int INT123_synth_ntom_s32_m2s(real*, mpg123_handle*); #endif #endif #endif /* FIXED */ -/* Inside these synth functions, some dct64 variants may be used. +/* Inside these synth functions, some INT123_dct64 variants may be used. The special optimized ones that only appear in assembler code are not mentioned here. And, generally, these functions are only employed in a matching synth function. */ -void dct64 (real *,real *,real *); -void dct64_i386 (real *,real *,real *); -void dct64_altivec(real *,real *,real *); -void dct64_i486(int*, int* , real*); /* Yeah, of no use outside of synth_i486.c .*/ +void INT123_dct64 (real *,real *,real *); +void INT123_dct64_i386 (real *,real *,real *); +void INT123_dct64_altivec(real *,real *,real *); +void INT123_dct64_i486(int*, int* , real*); /* Yeah, of no use outside of synth_i486.c .*/ /* This is used by the layer 3 decoder, one generic function and 3DNow variants. */ -void dct36 (real *,real *,real *,const real *,real *); -void dct36_3dnow (real *,real *,real *,const real *,real *); -void dct36_3dnowext(real *,real *,real *,const real *,real *); -void dct36_x86_64 (real *,real *,real *,const real *,real *); -void dct36_sse (real *,real *,real *,const real *,real *); -void dct36_avx (real *,real *,real *,const real *,real *); -void dct36_neon (real *,real *,real *,const real *,real *); -void dct36_neon64 (real *,real *,real *,const real *,real *); +void INT123_dct36 (real *,real *,real *,const real *,real *); +void INT123_dct36_3dnow (real *,real *,real *,const real *,real *); +void INT123_dct36_3dnowext(real *,real *,real *,const real *,real *); +void INT123_dct36_x86_64 (real *,real *,real *,const real *,real *); +void INT123_dct36_sse (real *,real *,real *,const real *,real *); +void INT123_dct36_avx (real *,real *,real *,const real *,real *); +void INT123_dct36_neon (real *,real *,real *,const real *,real *); +void INT123_dct36_neon64 (real *,real *,real *,const real *,real *); /* Tools for NtoM resampling synth, defined in ntom.c . */ -int synth_ntom_set_step(mpg123_handle *fr); /* prepare ntom decoding */ -unsigned long ntom_val(mpg123_handle *fr, off_t frame); /* compute ntom_val for frame offset */ +int INT123_synth_ntom_set_step(mpg123_handle *fr); /* prepare ntom decoding */ +unsigned long INT123_ntom_val(mpg123_handle *fr, int64_t frame); /* compute INT123_ntom_val for frame offset */ /* Frame and sample offsets. */ #ifndef NO_NTOM /* Outsamples of _this_ frame. - To be exact: The samples to be expected from the next frame decode (using the current ntom_val). When you already decoded _this_ frame, this is the number of samples to be expected from the next one. + To be exact: The samples to be expected from the next frame decode (using the current INT123_ntom_val). When you already decoded _this_ frame, this is the number of samples to be expected from the next one. */ -off_t ntom_frame_outsamples(mpg123_handle *fr); +int64_t INT123_ntom_frame_outsamples(mpg123_handle *fr); /* Total out/insample offset. */ -off_t ntom_frmouts(mpg123_handle *fr, off_t frame); -off_t ntom_ins2outs(mpg123_handle *fr, off_t ins); -off_t ntom_frameoff(mpg123_handle *fr, off_t soff); +int64_t INT123_ntom_frmouts(mpg123_handle *fr, int64_t frame); +int64_t INT123_ntom_ins2outs(mpg123_handle *fr, int64_t ins); +int64_t INT123_ntom_frameoff(mpg123_handle *fr, int64_t soff); #endif /* Initialization of any static data that majy be needed at runtime. Make sure you call these once before it is too late. */ #ifndef NO_LAYER3 #ifdef RUNTIME_TABLES -void init_layer3(void); +void INT123_init_layer3(void); #endif -real init_layer3_gainpow2(mpg123_handle *fr, int i); -void init_layer3_stuff(mpg123_handle *fr, real (*gainpow2)(mpg123_handle *fr, int i)); +real INT123_init_layer3_gainpow2(mpg123_handle *fr, int i); +void INT123_init_layer3_stuff(mpg123_handle *fr, real (*gainpow2)(mpg123_handle *fr, int i)); #endif #ifndef NO_LAYER12 #ifdef RUNTIME_TABLES -void init_layer12(void); +void INT123_init_layer12(void); #endif -real* init_layer12_table(mpg123_handle *fr, real *table, int m); -void init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m)); +real* INT123_init_layer12_table(mpg123_handle *fr, real *table, int m); +void INT123_init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m)); #endif #ifdef RUNTIME_TABLES -void init_costabs(void); +void INT123_init_costabs(void); #else const #endif -extern real *pnts[5]; /* costab.h provides, dct64 needs */ +extern real *INT123_pnts[5]; /* costab.h provides, INT123_dct64 needs */ /* Runtime (re)init functions; needed more often. */ -void make_decode_tables(mpg123_handle *fr); /* For every volume change. */ -/* Stuff needed after updating synth setup (see set_synth_functions()). */ +void INT123_make_decode_tables(mpg123_handle *fr); /* For every volume change. */ +/* Stuff needed after updating synth setup (see INT123_set_synth_functions()). */ #ifdef OPT_MMXORSSE /* Special treatment for mmx-like decoders, these functions go into the slots below. */ -void make_decode_tables_mmx(mpg123_handle *fr); +void INT123_make_decode_tables_mmx(mpg123_handle *fr); #ifndef NO_LAYER3 -real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i); +real INT123_init_layer3_gainpow2_mmx(mpg123_handle *fr, int i); #endif #ifndef NO_LAYER12 -real* init_layer12_table_mmx(mpg123_handle *fr, real *table, int m); +real* INT123_init_layer12_table_mmx(mpg123_handle *fr, real *table, int m); #endif #endif #ifndef NO_8BIT /* Needed when switching to 8bit output. */ -int make_conv16to8_table(mpg123_handle *fr); +int INT123_make_conv16to8_table(mpg123_handle *fr); #endif /* These are the actual workers. @@ -278,15 +278,15 @@ int make_conv16to8_table(mpg123_handle *fr); The synth functions defined above are called from inside the layer handlers. */ #ifndef NO_LAYER3 -int do_layer3(mpg123_handle *fr); +int INT123_do_layer3(mpg123_handle *fr); #endif #ifndef NO_LAYER2 -int do_layer2(mpg123_handle *fr); +int INT123_do_layer2(mpg123_handle *fr); #endif #ifndef NO_LAYER1 -int do_layer1(mpg123_handle *fr); +int INT123_do_layer1(mpg123_handle *fr); #endif /* There's an 3DNow counterpart in asm. */ -void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); +void INT123_do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); #endif diff --git a/src/libmpg123/dither.c b/src/libmpg123/dither.c index 329a4de..c698b79 100644 --- a/src/libmpg123/dither.c +++ b/src/libmpg123/dither.c @@ -1,3 +1,2 @@ /* Hack to allow building the same code with and without libtool. */ -#include "intsym.h" #include "dither_impl.h" diff --git a/src/libmpg123/dither.h b/src/libmpg123/dither.h index 6a6cb3e..e1fa4ab 100644 --- a/src/libmpg123/dither.h +++ b/src/libmpg123/dither.h @@ -18,6 +18,6 @@ enum mpg123_noise_type }; void mpg123_noise(float* table, size_t count, enum mpg123_noise_type noisetype); -void dither_table_init(float *dithertable); +void INT123_dither_table_init(float *dithertable); #endif diff --git a/src/libmpg123/dither_impl.h b/src/libmpg123/dither_impl.h index 30dbdd1..87eaad6 100644 --- a/src/libmpg123/dither_impl.h +++ b/src/libmpg123/dither_impl.h @@ -113,7 +113,7 @@ void mpg123_noise(float* table, size_t count, enum mpg123_noise_type noisetype) } /* Generate white noise and shape it with a high pass filter. */ -void dither_table_init(float *dithertable) +void INT123_dither_table_init(float *dithertable) { highpass_tpdf_noise(dithertable, DITHERSIZE); } diff --git a/src/libmpg123/equalizer.c b/src/libmpg123/equalizer.c index bc5d5d9..5bb411a 100644 --- a/src/libmpg123/equalizer.c +++ b/src/libmpg123/equalizer.c @@ -9,7 +9,7 @@ #include "mpg123lib_intern.h" -void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]) +void INT123_do_equalizer(real *bandPtr,int channel, real equalizer[2][32]) { int i; for(i=0;i<32;i++) diff --git a/src/libmpg123/equalizer_3dnow.S b/src/libmpg123/equalizer_3dnow.S index 471a0ed..378e7ee 100644 --- a/src/libmpg123/equalizer_3dnow.S +++ b/src/libmpg123/equalizer_3dnow.S @@ -10,10 +10,10 @@ .text ALIGN4 -.globl ASM_NAME(do_equalizer_3dnow) -/* .type ASM_NAME(do_equalizer_3dnow),@function */ +.globl ASM_NAME(INT123_do_equalizer_3dnow) +/* .type ASM_NAME(INT123_do_equalizer_3dnow),@function */ /* void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); */ -ASM_NAME(do_equalizer_3dnow): +ASM_NAME(INT123_do_equalizer_3dnow): pushl %esi pushl %ebx /* bandPtr */ diff --git a/src/libmpg123/format.c b/src/libmpg123/format.c index a482e65..60936aa 100644 --- a/src/libmpg123/format.c +++ b/src/libmpg123/format.c @@ -1,7 +1,7 @@ /* format: routines to deal with audio (output) format - copyright 2008-20 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2008-23 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis, starting with parts of the old audio.c, with only faintly manage to show now @@ -223,7 +223,7 @@ eend: /* match constraints against supported audio formats, store possible setup in frame return: -1: error; 0: no format change; 1: format change */ -int frame_output_format(mpg123_handle *fr) +int INT123_frame_output_format(mpg123_handle *fr) { struct audioformat nf; int f0=0; @@ -232,7 +232,7 @@ int frame_output_format(mpg123_handle *fr) int try_float = (p->flags & MPG123_FLOAT_FALLBACK) ? 0 : 1; /* initialize new format, encoding comes later */ nf.channels = fr->stereo; - mdebug("native frame format: %d ch @ %ld Hz", fr->stereo, frame_freq(fr)); + mdebug("native frame format: %d ch @ %ld Hz", fr->stereo, INT123_frame_freq(fr)); // I intended the forcing stuff to be weaved into the format support table, // but this probably will never happen, as this would change library behaviour. // One could introduce an additional effective format table that takes for @@ -287,30 +287,30 @@ int frame_output_format(mpg123_handle *fr) } #endif // Native decoder rate first. - if(enc_chan_fit(p, frame_freq(fr)>>p->down_sample, &nf, f0, f2, try_float)) + if(enc_chan_fit(p, INT123_frame_freq(fr)>>p->down_sample, &nf, f0, f2, try_float)) goto end; // Then downsamplings. if(p->flags & MPG123_AUTO_RESAMPLE && p->down_sample < 2) { - if(enc_chan_fit( p, frame_freq(fr)>>(p->down_sample+1), &nf + if(enc_chan_fit( p, INT123_frame_freq(fr)>>(p->down_sample+1), &nf , f0, f2, try_float )) goto end; - if(p->down_sample < 1 && enc_chan_fit( p, frame_freq(fr)>>2, &nf + if(p->down_sample < 1 && enc_chan_fit( p, INT123_frame_freq(fr)>>2, &nf , f0, f2, try_float )) goto end; } // And again the whole deal with float fallback. if(!try_float) { - if(enc_chan_fit(p, frame_freq(fr)>>p->down_sample, &nf, f0, f2, TRUE)) + if(enc_chan_fit(p, INT123_frame_freq(fr)>>p->down_sample, &nf, f0, f2, TRUE)) goto end; // Then downsamplings. if(p->flags & MPG123_AUTO_RESAMPLE && p->down_sample < 2) { - if(enc_chan_fit( p, frame_freq(fr)>>(p->down_sample+1), &nf + if(enc_chan_fit( p, INT123_frame_freq(fr)>>(p->down_sample+1), &nf , f0, f2, TRUE )) goto end; - if(p->down_sample < 1 && enc_chan_fit( p, frame_freq(fr)>>2, &nf + if(p->down_sample < 1 && enc_chan_fit( p, INT123_frame_freq(fr)>>2, &nf , f0, f2, TRUE )) goto end; } @@ -320,7 +320,7 @@ int frame_output_format(mpg123_handle *fr) if( p->flags & MPG123_AUTO_RESAMPLE && fr->p.down_sample == 0) { int i; - int rn = rate2num(p, frame_freq(fr)); + int rn = rate2num(p, INT123_frame_freq(fr)); int rrn; if(rn < 0) return 0; /* Try higher rates first. */ @@ -352,9 +352,9 @@ int frame_output_format(mpg123_handle *fr) (p->flags & MPG123_FORCE_MONO ? "mono, " : "") ) , ( p->flags & MPG123_FORCE_FLOAT ? "float, " : (p->flags & MPG123_FORCE_8BIT ? "8bit, " : "") ) - , frame_freq(fr)>>p->down_sample - , frame_freq(fr)>>(p->down_sample ? p->down_sample : 1) - , frame_freq(fr)>>2 ); + , INT123_frame_freq(fr)>>p->down_sample + , INT123_frame_freq(fr)>>(p->down_sample ? p->down_sample : 1) + , INT123_frame_freq(fr)>>2 ); /* if(NOQUIET && p->verbose <= 1) print_capabilities(fr); */ fr->err = MPG123_BAD_OUTFORMAT; @@ -549,7 +549,7 @@ int attribute_align_arg mpg123_fmt_support(mpg123_pars *mp, long rate, int encod } /* Call this one to ensure that any valid format will be something different than this. */ -void invalidate_format(struct audioformat *af) +void INT123_invalidate_format(struct audioformat *af) { af->encoding = 0; af->rate = 0; @@ -557,25 +557,25 @@ void invalidate_format(struct audioformat *af) } /* Number of bytes the decoder produces. */ -off_t decoder_synth_bytes(mpg123_handle *fr, off_t s) +int64_t INT123_decoder_synth_bytes(mpg123_handle *fr, int64_t s) { return s * fr->af.dec_encsize * fr->af.channels; } /* Samples/bytes for output buffer after post-processing. */ /* take into account: channels, bytes per sample -- NOT resampling!*/ -off_t samples_to_bytes(mpg123_handle *fr , off_t s) +int64_t INT123_samples_to_bytes(mpg123_handle *fr , int64_t s) { return s * fr->af.encsize * fr->af.channels; } -off_t bytes_to_samples(mpg123_handle *fr , off_t b) +int64_t INT123_bytes_to_samples(mpg123_handle *fr , int64_t b) { return b / fr->af.encsize / fr->af.channels; } /* Number of bytes needed for decoding _and_ post-processing. */ -off_t outblock_bytes(mpg123_handle *fr, off_t s) +int64_t INT123_outblock_bytes(mpg123_handle *fr, int64_t s) { int encsize = (fr->af.encoding & MPG123_ENC_24) ? 4 /* Intermediate 32 bit. */ @@ -636,7 +636,7 @@ static void conv_s16_to_u16(struct outbuffer *buf) #ifndef NO_REAL static void conv_s16_to_f32(struct outbuffer *buf) { - ssize_t i; + ptrdiff_t i; int16_t *in = (int16_t*) buf->data; float *out = (float*) buf->data; size_t count = buf->fill/sizeof(int16_t); @@ -662,7 +662,7 @@ static void conv_s16_to_f32(struct outbuffer *buf) #ifndef NO_32BIT static void conv_s16_to_s32(struct outbuffer *buf) { - ssize_t i; + ptrdiff_t i; int16_t *in = (int16_t*) buf->data; int32_t *out = (int32_t*) buf->data; size_t count = buf->fill/sizeof(int16_t); @@ -699,7 +699,7 @@ void swap_endian(struct outbuffer *buf, int block) } } -void postprocess_buffer(mpg123_handle *fr) +void INT123_postprocess_buffer(mpg123_handle *fr) { /* This caters for the final output formats that are never produced by diff --git a/src/libmpg123/frame.c b/src/libmpg123/frame.c index f818bc5..9e38ace 100644 --- a/src/libmpg123/frame.c +++ b/src/libmpg123/frame.c @@ -1,7 +1,7 @@ /* frame: Heap of routines dealing with the core mpg123 data structure. - copyright 2008-2021 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2008-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -68,12 +68,12 @@ static void frame_default_pars(mpg123_pars *mp) mp->freeformat_framesize = -1; } -void frame_init(mpg123_handle *fr) +void INT123_frame_init(mpg123_handle *fr) { - frame_init_par(fr, NULL); + INT123_frame_init_par(fr, NULL); } -void frame_init_par(mpg123_handle *fr, mpg123_pars *mp) +void INT123_frame_init_par(mpg123_handle *fr, mpg123_pars *mp) { fr->own_buffer = TRUE; fr->buffer.data = NULL; @@ -98,37 +98,34 @@ void frame_init_par(mpg123_handle *fr, mpg123_pars *mp) #ifdef OPT_CPU_FLAGS wrap_getcpuflags(&(fr->cpu_flags)); #endif - fr->cpu_opts.type = defdec(); - fr->cpu_opts.class = decclass(fr->cpu_opts.type); + fr->cpu_opts.type = INT123_defdec(); + fr->cpu_opts.class = INT123_decclass(fr->cpu_opts.type); #ifndef NO_NTOM - /* these two look unnecessary, check guarantee for synth_ntom_set_step (in control_generic, even)! */ - fr->ntom_val[0] = NTOM_MUL>>1; - fr->ntom_val[1] = NTOM_MUL>>1; + /* these two look unnecessary, check guarantee for INT123_synth_ntom_set_step (in control_generic, even)! */ + fr->INT123_ntom_val[0] = NTOM_MUL>>1; + fr->INT123_ntom_val[1] = NTOM_MUL>>1; fr->ntom_step = NTOM_MUL; #endif /* unnecessary: fr->buffer.size = fr->buffer.fill = 0; */ mpg123_reset_eq(fr); - init_icy(&fr->icy); - init_id3(fr); - /* frame_outbuffer is missing... */ - /* frame_buffers is missing... that one needs cpu opt setting! */ - /* after these... frame_reset is needed before starting full decode */ - invalidate_format(&fr->af); - fr->rdat.r_read = NULL; - fr->rdat.r_lseek = NULL; + INT123_init_icy(&fr->icy); + INT123_init_id3(fr); + /* INT123_frame_outbuffer is missing... */ + /* INT123_frame_buffers is missing... that one needs cpu opt setting! */ + /* after these... INT123_frame_reset is needed before starting full decode */ + INT123_invalidate_format(&fr->af); fr->rdat.iohandle = NULL; - fr->rdat.r_read_handle = NULL; - fr->rdat.r_lseek_handle = NULL; + fr->rdat.r_read64 = NULL; + fr->rdat.r_lseek64 = NULL; fr->rdat.cleanup_handle = NULL; fr->wrapperdata = NULL; - fr->wrapperclean = NULL; fr->decoder_change = 1; fr->err = MPG123_OK; if(mp == NULL) frame_default_pars(&fr->p); else memcpy(&fr->p, mp, sizeof(struct mpg123_pars_struct)); #ifndef NO_FEEDER - bc_prepare(&fr->rdat.buffer, fr->p.feedpool, fr->p.feedbuffer); + INT123_bc_prepare(&fr->rdat.buffer, fr->p.feedpool, fr->p.feedbuffer); #endif fr->down_sample = 0; /* Initialize to silence harmless errors when debugging. */ @@ -136,10 +133,10 @@ void frame_init_par(mpg123_handle *fr, mpg123_pars *mp) frame_fixed_reset(fr); /* Reset only the fixed data, dynamic buffers are not there yet! */ fr->synth = NULL; fr->synth_mono = NULL; - fr->make_decode_tables = NULL; + fr->INT123_make_decode_tables = NULL; #ifdef FRAME_INDEX - fi_init(&fr->index); - frame_index_setup(fr); /* Apply the size setting. */ + INT123_fi_init(&fr->index); + INT123_frame_index_setup(fr); /* Apply the size setting. */ #endif #ifndef NO_MOREINFO fr->pinfo = NULL; @@ -149,7 +146,7 @@ void frame_init_par(mpg123_handle *fr, mpg123_pars *mp) #ifdef OPT_DITHER /* Also, only allocate the memory for the table on demand. In future, one could create special noise for different sampling frequencies(?). */ -int frame_dither_init(mpg123_handle *fr) +int INT123_frame_dither_init(mpg123_handle *fr) { /* run-time dither noise table generation */ if(fr->dithernoise == NULL) @@ -157,7 +154,7 @@ int frame_dither_init(mpg123_handle *fr) fr->dithernoise = malloc(sizeof(float)*DITHERSIZE); if(fr->dithernoise == NULL) return 0; - dither_table_init(fr->dithernoise); + INT123_dither_table_init(fr->dithernoise); } return 1; } @@ -187,7 +184,7 @@ int attribute_align_arg mpg123_reset_eq(mpg123_handle *mh) return MPG123_OK; } -int frame_outbuffer(mpg123_handle *fr) +int INT123_frame_outbuffer(mpg123_handle *fr) { size_t size = fr->outblock; if(!fr->own_buffer) @@ -243,19 +240,19 @@ int attribute_align_arg mpg123_replace_buffer(mpg123_handle *mh, void *data, siz } #ifdef FRAME_INDEX -int frame_index_setup(mpg123_handle *fr) +int INT123_frame_index_setup(mpg123_handle *fr) { int ret = MPG123_ERR; if(fr->p.index_size >= 0) { /* Simple fixed index. */ fr->index.grow_size = 0; - ret = fi_resize(&fr->index, (size_t)fr->p.index_size); + ret = INT123_fi_resize(&fr->index, (size_t)fr->p.index_size); } else { /* A growing index. We give it a start, though. */ fr->index.grow_size = (size_t)(- fr->p.index_size); if(fr->index.size < fr->index.grow_size) - ret = fi_resize(&fr->index, fr->index.grow_size); + ret = INT123_fi_resize(&fr->index, fr->index.grow_size); else ret = MPG123_OK; /* We have minimal size already... and since growing is OK... */ } @@ -272,7 +269,7 @@ static void frame_decode_buffers_reset(mpg123_handle *fr) memset(fr->rawbuffs, 0, fr->rawbuffss); } -int frame_buffers(mpg123_handle *fr) +int INT123_frame_buffers(mpg123_handle *fr) { int buffssize = 0; debug1("frame %p buffer", (void*)fr); @@ -445,7 +442,7 @@ int frame_buffers(mpg123_handle *fr) return 0; } -int frame_buffers_reset(mpg123_handle *fr) +int INT123_frame_buffers_reset(mpg123_handle *fr) { fr->buffer.fill = 0; /* hm, reset buffer fill... did we do a flush? */ fr->bsnum = 0; @@ -477,7 +474,7 @@ static void frame_free_toc(mpg123_handle *fr) } /* Just copy the Xing TOC over... */ -int frame_fill_toc(mpg123_handle *fr, unsigned char* in) +int INT123_frame_fill_toc(mpg123_handle *fr, unsigned char* in) { if(fr->xing_toc == NULL) fr->xing_toc = malloc(100); if(fr->xing_toc != NULL) @@ -498,13 +495,13 @@ int frame_fill_toc(mpg123_handle *fr, unsigned char* in) /* Prepare the handle for a new track. Reset variables, buffers... */ -int frame_reset(mpg123_handle* fr) +int INT123_frame_reset(mpg123_handle* fr) { - frame_buffers_reset(fr); + INT123_frame_buffers_reset(fr); frame_fixed_reset(fr); frame_free_toc(fr); #ifdef FRAME_INDEX - fi_reset(&fr->index); + INT123_fi_reset(&fr->index); #endif return 0; @@ -514,7 +511,7 @@ int frame_reset(mpg123_handle* fr) static void frame_fixed_reset(mpg123_handle *fr) { frame_icy_reset(fr); - open_bad(fr); + INT123_open_bad(fr); fr->to_decode = FALSE; fr->to_ignore = FALSE; fr->metaflags = 0; @@ -552,7 +549,7 @@ static void frame_fixed_reset(mpg123_handle *fr) fr->fresh = 1; fr->new_format = 0; #ifdef GAPLESS - frame_gapless_init(fr,-1,0,0); + INT123_frame_gapless_init(fr,-1,0,0); fr->lastoff = 0; fr->firstoff = 0; #endif @@ -563,8 +560,8 @@ static void frame_fixed_reset(mpg123_handle *fr) #ifdef OPT_DITHER fr->ditherindex = 0; #endif - reset_id3(fr); - reset_icy(&fr->icy); + INT123_reset_id3(fr); + INT123_reset_icy(&fr->icy); /* ICY stuff should go into icy.c, eh? */ #ifndef NO_ICY fr->icy.interval = 0; @@ -597,7 +594,7 @@ static void frame_free_buffers(mpg123_handle *fr) if(fr->layerscratch != NULL) free(fr->layerscratch); } -void frame_exit(mpg123_handle *fr) +void INT123_frame_exit(mpg123_handle *fr) { if(fr->buffer.rdata != NULL) { @@ -608,7 +605,7 @@ void frame_exit(mpg123_handle *fr) frame_free_buffers(fr); frame_free_toc(fr); #ifdef FRAME_INDEX - fi_exit(&fr->index); + INT123_fi_exit(&fr->index); #endif #ifdef OPT_DITHER if(fr->dithernoise != NULL) @@ -617,16 +614,10 @@ void frame_exit(mpg123_handle *fr) fr->dithernoise = NULL; } #endif - exit_id3(fr); - clear_icy(&fr->icy); - /* Clean up possible mess from LFS wrapper. */ - if(fr->wrapperclean != NULL) - { - fr->wrapperclean(fr->wrapperdata); - fr->wrapperdata = NULL; - } + INT123_exit_id3(fr); + INT123_clear_icy(&fr->icy); #ifndef NO_FEEDER - bc_cleanup(&fr->rdat.buffer); + INT123_bc_cleanup(&fr->rdat.buffer); #endif } @@ -662,10 +653,10 @@ int attribute_align_arg mpg123_set_moreinfo( mpg123_handle *mh - guess wildly from mean framesize and offset of first frame / beginning of file. */ -static off_t frame_fuzzy_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame) +static int64_t frame_fuzzy_find(mpg123_handle *fr, int64_t want_frame, int64_t* get_frame) { /* Default is to go to the beginning. */ - off_t ret = fr->audio_start; + int64_t ret = fr->audio_start; *get_frame = 0; /* But we try to find something better. */ @@ -681,12 +672,12 @@ static off_t frame_fuzzy_find(mpg123_handle *fr, off_t want_frame, off_t* get_fr if(toc_entry > 99) toc_entry = 99; /* Now estimate back what frame we get. */ - *get_frame = (off_t) ((double)toc_entry/100. * fr->track_frames); + *get_frame = (int64_t) ((double)toc_entry/100. * fr->track_frames); fr->state_flags &= ~FRAME_ACCURATE; fr->silent_resync = 1; /* Question: Is the TOC for whole file size (with/without ID3) or the "real" audio data only? ID3v1 info could also matter. */ - ret = (off_t) ((double)fr->xing_toc[toc_entry]/256.* fr->rdat.filelen); + ret = (int64_t) ((double)fr->xing_toc[toc_entry]/256.* fr->rdat.filelen); } else if(fr->mean_framesize > 0) { /* Just guess with mean framesize (may be exact with CBR files). */ @@ -694,26 +685,28 @@ static off_t frame_fuzzy_find(mpg123_handle *fr, off_t want_frame, off_t* get_fr fr->state_flags &= ~FRAME_ACCURATE; /* Fuzzy! */ fr->silent_resync = 1; *get_frame = want_frame; - ret = (off_t) (fr->audio_start+fr->mean_framesize*want_frame); + ret = (int64_t) (fr->audio_start+fr->mean_framesize*want_frame); } - debug5("fuzzy: want %li of %li, get %li at %li B of %li B", - (long)want_frame, (long)fr->track_frames, (long)*get_frame, (long)ret, (long)(fr->rdat.filelen-fr->audio_start)); + debug5("fuzzy: want %" PRIi64 " of %" PRIi64 + ", get %" PRIi64 " at %" PRIi64 " B of %" PRIi64 " B" + , want_frame, fr->track_frames, *get_frame, ret + , (fr->rdat.filelen-fr->audio_start)); return ret; } /* find the best frame in index just before the wanted one, seek to there - then step to just before wanted one with read_frame + then step to just before wanted one with INT123_read_frame do not care tabout the stuff that was in buffer but not played back everything that left the decoder is counted as played Decide if you want low latency reaction and accurate timing info or stable long-time playback with buffer! */ -off_t frame_index_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame) +int64_t INT123_frame_index_find(mpg123_handle *fr, int64_t want_frame, int64_t* get_frame) { /* default is file start if no index position */ - off_t gopos = 0; + int64_t gopos = 0; *get_frame = 0; #ifdef FRAME_INDEX /* Possibly use VBRI index, too? I'd need an example for this... */ @@ -751,13 +744,13 @@ off_t frame_index_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame) #ifdef FRAME_INDEX } #endif - debug2("index: 0x%lx for frame %li", (unsigned long)gopos, (long) *get_frame); + debug2("index: 0x%" PRIx64 " for frame %" PRIi64, (uint64_t)gopos, *get_frame); return gopos; } -off_t frame_ins2outs(mpg123_handle *fr, off_t ins) +int64_t INT123_frame_ins2outs(mpg123_handle *fr, int64_t ins) { - off_t outs = 0; + int64_t outs = 0; switch(fr->down_sample) { case 0: @@ -768,7 +761,7 @@ off_t frame_ins2outs(mpg123_handle *fr, off_t ins) outs = ins>>fr->down_sample; break; # ifndef NO_NTOM - case 3: outs = ntom_ins2outs(fr, ins); break; + case 3: outs = INT123_ntom_ins2outs(fr, ins); break; # endif default: if(NOQUIET) merror( "Bad down_sample (%i) ... should not be possible!!" @@ -777,9 +770,9 @@ off_t frame_ins2outs(mpg123_handle *fr, off_t ins) return outs; } -off_t frame_outs(mpg123_handle *fr, off_t num) +int64_t INT123_frame_outs(mpg123_handle *fr, int64_t num) { - off_t outs = 0; + int64_t outs = 0; switch(fr->down_sample) { case 0: @@ -790,7 +783,7 @@ off_t frame_outs(mpg123_handle *fr, off_t num) outs = (fr->spf>>fr->down_sample)*num; break; #ifndef NO_NTOM - case 3: outs = ntom_frmouts(fr, num); break; + case 3: outs = INT123_ntom_frmouts(fr, num); break; #endif default: if(NOQUIET) merror( "Bad down_sample (%i) ... should not be possible!!" @@ -801,9 +794,9 @@ off_t frame_outs(mpg123_handle *fr, off_t num) /* Compute the number of output samples we expect from this frame. This is either simple spf() or a tad more elaborate for ntom. */ -off_t frame_expect_outsamples(mpg123_handle *fr) +int64_t INT123_frame_expect_outsamples(mpg123_handle *fr) { - off_t outs = 0; + int64_t outs = 0; switch(fr->down_sample) { case 0: @@ -814,7 +807,7 @@ off_t frame_expect_outsamples(mpg123_handle *fr) outs = fr->spf>>fr->down_sample; break; #ifndef NO_NTOM - case 3: outs = ntom_frame_outsamples(fr); break; + case 3: outs = INT123_ntom_frame_outsamples(fr); break; #endif default: if(NOQUIET) merror( "Bad down_sample (%i) ... should not be possible!!" @@ -823,9 +816,9 @@ off_t frame_expect_outsamples(mpg123_handle *fr) return outs; } -off_t frame_offset(mpg123_handle *fr, off_t outs) +int64_t INT123_frame_offset(mpg123_handle *fr, int64_t outs) { - off_t num = 0; + int64_t num = 0; switch(fr->down_sample) { case 0: @@ -836,7 +829,7 @@ off_t frame_offset(mpg123_handle *fr, off_t outs) num = outs/(fr->spf>>fr->down_sample); break; #ifndef NO_NTOM - case 3: num = ntom_frameoff(fr, outs); break; + case 3: num = INT123_ntom_frameoff(fr, outs); break; #endif default: if(NOQUIET) error("Bad down_sample ... should not be possible!!"); @@ -846,9 +839,9 @@ off_t frame_offset(mpg123_handle *fr, off_t outs) #ifdef GAPLESS /* input in _input_ samples */ -void frame_gapless_init(mpg123_handle *fr, off_t framecount, off_t bskip, off_t eskip) +void INT123_frame_gapless_init(mpg123_handle *fr, int64_t framecount, int64_t bskip, int64_t eskip) { - debug3("frame_gapless_init: given %"OFF_P" frames, skip %"OFF_P" and %"OFF_P, (off_p)framecount, (off_p)bskip, (off_p)eskip); + debug3("INT123_frame_gapless_init: given %"PRIi64" frames, skip %"PRIi64" and %"PRIi64, framecount, bskip, eskip); fr->gapless_frames = framecount; if(fr->gapless_frames > 0 && bskip >=0 && eskip >= 0) { @@ -860,40 +853,42 @@ void frame_gapless_init(mpg123_handle *fr, off_t framecount, off_t bskip, off_t fr->begin_os = 0; fr->end_os = 0; fr->fullend_os = 0; - debug2("frame_gapless_init: from %"OFF_P" to %"OFF_P" samples", (off_p)fr->begin_s, (off_p)fr->end_s); + debug2("INT123_frame_gapless_init: from %"PRIi64" to %"PRIi64" samples", fr->begin_s, fr->end_s); } -void frame_gapless_realinit(mpg123_handle *fr) +void INT123_frame_gapless_realinit(mpg123_handle *fr) { - fr->begin_os = frame_ins2outs(fr, fr->begin_s); - fr->end_os = frame_ins2outs(fr, fr->end_s); + fr->begin_os = INT123_frame_ins2outs(fr, fr->begin_s); + fr->end_os = INT123_frame_ins2outs(fr, fr->end_s); if(fr->gapless_frames > 0) - fr->fullend_os = frame_ins2outs(fr, fr->gapless_frames*fr->spf); + fr->fullend_os = INT123_frame_ins2outs(fr, fr->gapless_frames*fr->spf); else fr->fullend_os = 0; - debug4("frame_gapless_realinit: from %"OFF_P" to %"OFF_P" samples (%"OFF_P", %"OFF_P")", (off_p)fr->begin_os, (off_p)fr->end_os, (off_p)fr->fullend_os, (off_p)fr->gapless_frames); + debug4("INT123_frame_gapless_realinit: from %"PRIi64" to %"PRIi64" samples (%"PRIi64", %"PRIi64")" + , fr->begin_os, fr->end_os, fr->fullend_os, fr->gapless_frames); } /* At least note when there is trouble... */ -void frame_gapless_update(mpg123_handle *fr, off_t total_samples) +void INT123_frame_gapless_update(mpg123_handle *fr, int64_t total_samples) { - off_t gapless_samples = fr->gapless_frames*fr->spf; + int64_t gapless_samples = fr->gapless_frames*fr->spf; if(fr->gapless_frames < 1) return; - debug2("gapless update with new sample count %"OFF_P" as opposed to known %"OFF_P, (off_p)total_samples, (off_p)gapless_samples); + debug2("gapless update with new sample count %"PRIi64" as opposed to known %"PRIi64, total_samples, gapless_samples); if(NOQUIET && total_samples != gapless_samples) - fprintf(stderr, "\nWarning: Real sample count %"OFF_P" differs from given gapless sample count %"OFF_P". Frankenstein stream?\n" - , (off_p)total_samples, (off_p)gapless_samples); + fprintf(stderr, "\nWarning: Real sample count %" PRIi64 + " differs from given gapless sample count %" PRIi64 + ". Frankenstein stream?\n", total_samples, gapless_samples); if(gapless_samples > total_samples) { if(NOQUIET) - merror( "End sample count smaller than gapless end! (%"OFF_P - " < %"OFF_P"). Disabling gapless mode from now on." - , (off_p)total_samples, (off_p)fr->end_s ); + merror( "End sample count smaller than gapless end! (%" PRIi64 + " < %"PRIi64"). Disabling gapless mode from now on." + , total_samples, fr->end_s ); /* This invalidates the current position... but what should I do? */ - frame_gapless_init(fr, -1, 0, 0); - frame_gapless_realinit(fr); + INT123_frame_gapless_init(fr, -1, 0, 0); + INT123_frame_gapless_realinit(fr); fr->lastframe = -1; fr->lastoff = 0; } @@ -902,9 +897,9 @@ void frame_gapless_update(mpg123_handle *fr, off_t total_samples) #endif /* Compute the needed frame to ignore from, for getting accurate/consistent output for intended firstframe. */ -static off_t ignoreframe(mpg123_handle *fr) +static int64_t ignoreframe(mpg123_handle *fr) { - off_t preshift = fr->p.preframes; + int64_t preshift = fr->p.preframes; /* Layer 3 _really_ needs at least one frame before. */ if(fr->lay==3 && preshift < 1) preshift = 1; /* Layer 1 & 2 reall do not need more than 2. */ @@ -917,64 +912,68 @@ static off_t ignoreframe(mpg123_handle *fr) Seek to frame offset 1 may be just seek to 200 samples offset in output since the beginning of first frame is delay/padding. Hm, is that right? OK for the padding stuff, but actually, should the decoder delay be better totally hidden or not? With gapless, even the whole frame position could be advanced further than requested (since Homey don't play dat). */ -void frame_set_frameseek(mpg123_handle *fr, off_t fe) +void INT123_frame_set_frameseek(mpg123_handle *fr, int64_t fe) { fr->firstframe = fe; #ifdef GAPLESS if(fr->p.flags & MPG123_GAPLESS && fr->gapless_frames > 0) { /* Take care of the beginning... */ - off_t beg_f = frame_offset(fr, fr->begin_os); + int64_t beg_f = INT123_frame_offset(fr, fr->begin_os); if(fe <= beg_f) { fr->firstframe = beg_f; - fr->firstoff = fr->begin_os - frame_outs(fr, beg_f); + fr->firstoff = fr->begin_os - INT123_frame_outs(fr, beg_f); } else fr->firstoff = 0; - /* The end is set once for a track at least, on the frame_set_frameseek called in get_next_frame() */ + /* The end is set once for a track at least, on the INT123_frame_set_frameseek called in get_next_frame() */ if(fr->end_os > 0) { - fr->lastframe = frame_offset(fr,fr->end_os); - fr->lastoff = fr->end_os - frame_outs(fr, fr->lastframe); + fr->lastframe = INT123_frame_offset(fr,fr->end_os); + fr->lastoff = fr->end_os - INT123_frame_outs(fr, fr->lastframe); } else {fr->lastframe = -1; fr->lastoff = 0; } } else { fr->firstoff = fr->lastoff = 0; fr->lastframe = -1; } #endif fr->ignoreframe = ignoreframe(fr); #ifdef GAPLESS - debug5("frame_set_frameseek: begin at %li frames and %li samples, end at %li and %li; ignore from %li", - (long) fr->firstframe, (long) fr->firstoff, - (long) fr->lastframe, (long) fr->lastoff, (long) fr->ignoreframe); + debug5("INT123_frame_set_frameseek: begin at %" PRIi64 " frames and %" PRIi64 + " samples, end at %" PRIi64 " and %" PRIi64 "; ignore from %" PRIi64, + fr->firstframe, fr->firstoff + , fr->lastframe, fr->lastoff, fr->ignoreframe); #else - debug3("frame_set_frameseek: begin at %li frames, end at %li; ignore from %li", - (long) fr->firstframe, (long) fr->lastframe, (long) fr->ignoreframe); + debug3("INT123_frame_set_frameseek: begin at %" PRIi64 " frames, end at %" PRIi64 + "; ignore from %" PRIi64 + , fr->firstframe, fr->lastframe, fr->ignoreframe); #endif } -void frame_skip(mpg123_handle *fr) +void INT123_frame_skip(mpg123_handle *fr) { #ifndef NO_LAYER3 - if(fr->lay == 3) set_pointer(fr, 1, 512); + if(fr->lay == 3) INT123_set_pointer(fr, 1, 512); #endif } /* Sample accurate seek prepare for decoder. */ /* This gets unadjusted output samples and takes resampling into account */ -void frame_set_seek(mpg123_handle *fr, off_t sp) +void INT123_frame_set_seek(mpg123_handle *fr, int64_t sp) { - fr->firstframe = frame_offset(fr, sp); - debug1("frame_set_seek: from %"OFF_P, fr->num); + fr->firstframe = INT123_frame_offset(fr, sp); + debug1("INT123_frame_set_seek: from %" PRIi64, fr->num); #ifndef NO_NTOM - if(fr->down_sample == 3) ntom_set_ntom(fr, fr->firstframe); + if(fr->down_sample == 3) INT123_ntom_set_ntom(fr, fr->firstframe); #endif fr->ignoreframe = ignoreframe(fr); #ifdef GAPLESS /* The sample offset is used for non-gapless mode, too! */ - fr->firstoff = sp - frame_outs(fr, fr->firstframe); - debug5("frame_set_seek: begin at %li frames and %li samples, end at %li and %li; ignore from %li", - (long) fr->firstframe, (long) fr->firstoff, - (long) fr->lastframe, (long) fr->lastoff, (long) fr->ignoreframe); + fr->firstoff = sp - INT123_frame_outs(fr, fr->firstframe); + debug5("INT123_frame_set_seek: begin at %" PRIi64 " frames and %" PRIi64 + " samples, end at %" PRIi64 " and %" PRIi64 "; ignore from %" PRIi64, + fr->firstframe, fr->firstoff + , fr->lastframe, fr->lastoff, fr->ignoreframe); #else - debug3("frame_set_seek: begin at %li frames, end at %li; ignore from %li", - (long) fr->firstframe, (long) fr->lastframe, (long) fr->ignoreframe); + debug3("INT123_frame_set_seek: begin at %" PRIi64 " frames, end at %" PRIi64 + "; ignore from %" PRIi64 + , fr->firstframe, fr->lastframe, fr->ignoreframe); #endif } @@ -997,7 +996,7 @@ int attribute_align_arg mpg123_volume(mpg123_handle *mh, double vol) if(vol >= 0) mh->p.outscale = vol; else mh->p.outscale = 0.; - do_rva(mh); + INT123_do_rva(mh); return MPG123_OK; } @@ -1024,7 +1023,7 @@ static int get_rva(mpg123_handle *fr, double *peak, double *gain) } /* adjust the volume, taking both fr->outscale and rva values into account */ -void do_rva(mpg123_handle *fr) +void INT123_do_rva(mpg123_handle *fr) { double peak = 0; double gain = 0; @@ -1050,7 +1049,7 @@ void do_rva(mpg123_handle *fr) debug3("changing scale value from %f to %f (peak estimated to %f)", fr->lastscale != -1 ? fr->lastscale : fr->p.outscale, newscale, (double) (newscale*peak)); fr->lastscale = newscale; /* It may be too early, actually. */ - if(fr->make_decode_tables != NULL) fr->make_decode_tables(fr); /* the actual work */ + if(fr->INT123_make_decode_tables != NULL) fr->INT123_make_decode_tables(fr); /* the actual work */ } } @@ -1064,7 +1063,7 @@ int attribute_align_arg mpg123_getvolume(mpg123_handle *mh, double *base, double return MPG123_OK; } -off_t attribute_align_arg mpg123_framepos(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_framepos64(mpg123_handle *mh) { if(mh == NULL) return MPG123_ERR; diff --git a/src/libmpg123/frame.h b/src/libmpg123/frame.h index e34ea16..07dfec5 100644 --- a/src/libmpg123/frame.h +++ b/src/libmpg123/frame.h @@ -1,7 +1,7 @@ /* frame: Central data structures and opmitization hooks. - copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -24,7 +24,7 @@ #ifdef OPT_DITHER #include "dither.h" -int frame_dither_init(mpg123_handle *fr); +int INT123_frame_dither_init(mpg123_handle *fr); #endif /* max = 1728 */ @@ -56,7 +56,7 @@ struct audioformat long rate; }; -void invalidate_format(struct audioformat *af); +void INT123_invalidate_format(struct audioformat *af); struct mpg123_pars_struct { @@ -151,7 +151,7 @@ struct mpg123_handle_struct #ifndef NO_NTOM /* decode_ntom */ - unsigned long ntom_val[2]; + unsigned long INT123_ntom_val[2]; unsigned long ntom_step; #endif /* special i486 fun */ @@ -188,7 +188,7 @@ struct mpg123_handle_struct func_synth_stereo synth_stereo; func_synth_mono synth_mono; /* Yes, this function is runtime-switched, too. */ - void (*make_decode_tables)(mpg123_handle *fr); /* That is the volume control. */ + void (*INT123_make_decode_tables)(mpg123_handle *fr); /* That is the volume control. */ int stereo; /* I _think_ 1 for mono and 2 for stereo */ int jsbound; @@ -220,10 +220,10 @@ struct mpg123_handle_struct int framesize; /* computed framesize */ int freesize; /* free format frame size */ enum mpg123_vbr vbr; /* 1 if variable bitrate was detected */ - off_t num; /* frame offset ... */ - off_t input_offset; /* byte offset of this frame in input stream */ - off_t playnum; /* playback offset... includes repetitions, reset at seeks */ - off_t audio_start; /* The byte offset in the file where audio data begins. */ + int64_t num; /* frame offset ... */ + int64_t input_offset; /* byte offset of this frame in input stream */ + int64_t playnum; /* playback offset... includes repetitions, reset at seeks */ + int64_t audio_start; /* The byte offset in the file where audio data begins. */ int state_flags; char silent_resync; /* Do not complain for the next n resyncs. */ unsigned char* xing_toc; /* The seek TOC from Xing header. */ @@ -250,10 +250,10 @@ struct mpg123_handle_struct } rva; /* input data */ - off_t track_frames; - off_t track_samples; + int64_t track_frames; + int64_t track_samples; double mean_framesize; - off_t mean_frames; + int64_t mean_frames; int fsizeold; int ssize; unsigned int bitreservoir; @@ -277,18 +277,18 @@ struct mpg123_handle_struct size_t outblock; /* number of bytes that this frame produces (upper bound) */ int to_decode; /* this frame holds data to be decoded */ int to_ignore; /* the same, somehow */ - off_t firstframe; /* start decoding from here */ - off_t lastframe; /* last frame to decode (for gapless or num_frames limit) */ - off_t ignoreframe; /* frames to decode but discard before firstframe */ + int64_t firstframe; /* start decoding from here */ + int64_t lastframe; /* last frame to decode (for gapless or num_frames limit) */ + int64_t ignoreframe; /* frames to decode but discard before firstframe */ #ifdef GAPLESS - off_t gapless_frames; /* frame count for the gapless part */ - off_t firstoff; /* number of samples to ignore from firstframe */ - off_t lastoff; /* number of samples to use from lastframe */ - off_t begin_s; /* overall begin offset in samples */ - off_t begin_os; - off_t end_s; /* overall end offset in samples */ - off_t end_os; - off_t fullend_os; /* gapless_frames translated to output samples */ + int64_t gapless_frames; /* frame count for the gapless part */ + int64_t firstoff; /* number of samples to ignore from firstframe */ + int64_t lastoff; /* number of samples to use from lastframe */ + int64_t begin_s; /* overall begin offset in samples */ + int64_t begin_os; + int64_t end_s; /* overall end offset in samples */ + int64_t end_os; + int64_t fullend_os; /* gapless_frames translated to output samples */ #endif unsigned int crc; /* Well, I need a safe 16bit type, actually. But wider doesn't hurt. */ struct reader *rd; /* pointer to the reading functions */ @@ -342,8 +342,6 @@ struct mpg123_handle_struct /* A place for storing additional data for the large file wrapper. This is cruft! */ void *wrapperdata; - /* A callback used to properly destruct the wrapper data. */ - void (*wrapperclean)(void*); int enc_delay; int enc_padding; #ifndef NO_MOREINFO @@ -352,27 +350,27 @@ struct mpg123_handle_struct }; /* generic init, does not include dynamic buffers */ -void frame_init(mpg123_handle *fr); -void frame_init_par(mpg123_handle *fr, mpg123_pars *mp); +void INT123_frame_init(mpg123_handle *fr); +void INT123_frame_init_par(mpg123_handle *fr, mpg123_pars *mp); /* output buffer and format */ -int frame_outbuffer(mpg123_handle *fr); -int frame_output_format(mpg123_handle *fr); +int INT123_frame_outbuffer(mpg123_handle *fr); +int INT123_frame_output_format(mpg123_handle *fr); -int frame_buffers(mpg123_handle *fr); /* various decoder buffers, needed once */ -int frame_reset(mpg123_handle* fr); /* reset for next track */ -int frame_buffers_reset(mpg123_handle *fr); -void frame_exit(mpg123_handle *fr); /* end, free all buffers */ +int INT123_frame_buffers(mpg123_handle *fr); /* various decoder buffers, needed once */ +int INT123_frame_reset(mpg123_handle* fr); /* reset for next track */ +int INT123_frame_buffers_reset(mpg123_handle *fr); +void INT123_frame_exit(mpg123_handle *fr); /* end, free all buffers */ /* Index functions... */ /* Well... print it... */ int mpg123_print_index(mpg123_handle *fr, FILE* out); /* Find a seek position in index. */ -off_t frame_index_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame); +int64_t INT123_frame_index_find(mpg123_handle *fr, int64_t want_frame, int64_t* get_frame); /* Apply index_size setting. */ -int frame_index_setup(mpg123_handle *fr); +int INT123_frame_index_setup(mpg123_handle *fr); -void do_volume(mpg123_handle *fr, double factor); -void do_rva(mpg123_handle *fr); +void INT123_do_volume(mpg123_handle *fr, double factor); +void INT123_do_rva(mpg123_handle *fr); /* samples per frame ... Layer I @@ -396,20 +394,20 @@ MPEG 2.5 // The value is needed for mpg123_getstate() in any build. #define GAPLESS_DELAY 529 #ifdef GAPLESS -void frame_gapless_init(mpg123_handle *fr, off_t framecount, off_t bskip, off_t eskip); -void frame_gapless_realinit(mpg123_handle *fr); -void frame_gapless_update(mpg123_handle *mh, off_t total_samples); +void INT123_frame_gapless_init(mpg123_handle *fr, int64_t framecount, int64_t bskip, int64_t eskip); +void INT123_frame_gapless_realinit(mpg123_handle *fr); +void INT123_frame_gapless_update(mpg123_handle *mh, int64_t total_samples); /*void frame_gapless_position(mpg123_handle* fr); -void frame_gapless_bytify(mpg123_handle *fr); -void frame_gapless_ignore(mpg123_handle *fr, off_t frames);*/ +void INT123_frame_gapless_bytify(mpg123_handle *fr); +void INT123_frame_gapless_ignore(mpg123_handle *fr, int64_t frames);*/ /* void frame_gapless_buffercheck(mpg123_handle *fr); */ #endif /* Number of samples the decoding of the current frame should yield. */ -off_t frame_expect_outsamples(mpg123_handle *fr); +int64_t INT123_frame_expect_outsamples(mpg123_handle *fr); /* Skip this frame... do some fake action to get away without actually decoding it. */ -void frame_skip(mpg123_handle *fr); +void INT123_frame_skip(mpg123_handle *fr); /* Seeking core functions: @@ -418,14 +416,14 @@ void frame_skip(mpg123_handle *fr); - get leading frame offset for output sample offset The offsets are "unadjusted"/internal; resampling is being taken care of. */ -off_t frame_ins2outs(mpg123_handle *fr, off_t ins); -off_t frame_outs(mpg123_handle *fr, off_t num); +int64_t INT123_frame_ins2outs(mpg123_handle *fr, int64_t ins); +int64_t INT123_frame_outs(mpg123_handle *fr, int64_t num); /* This one just computes the expected sample count for _this_ frame. */ -off_t frame_expect_outsampels(mpg123_handle *fr); -off_t frame_offset(mpg123_handle *fr, off_t outs); -void frame_set_frameseek(mpg123_handle *fr, off_t fe); -void frame_set_seek(mpg123_handle *fr, off_t sp); -off_t frame_tell_seek(mpg123_handle *fr); +int64_t INT123_frame_expect_outsampels(mpg123_handle *fr); +int64_t INT123_frame_offset(mpg123_handle *fr, int64_t outs); +void INT123_frame_set_frameseek(mpg123_handle *fr, int64_t fe); +void INT123_frame_set_seek(mpg123_handle *fr, int64_t sp); +int64_t INT123_frame_tell_seek(mpg123_handle *fr); /* Take a copy of the Xing VBR TOC for fuzzy seeking. */ -int frame_fill_toc(mpg123_handle *fr, unsigned char* in); +int INT123_frame_fill_toc(mpg123_handle *fr, unsigned char* in); #endif diff --git a/src/libmpg123/gapless.h b/src/libmpg123/gapless.h index a98b86b..58e3d66 100644 --- a/src/libmpg123/gapless.h +++ b/src/libmpg123/gapless.h @@ -1,7 +1,7 @@ /* sampleadjust: gapless sample offset math - copyright 1995-2012 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org This is no stand-alone header, precisely to be able to fool it into using fake handle types for testing the math. @@ -11,9 +11,9 @@ #ifdef GAPLESS /* From internal sample number to external. */ -static off_t sample_adjust(mpg123_handle *mh, off_t x) +static int64_t sample_adjust(mpg123_handle *mh, int64_t x) { - off_t s; + int64_t s; if(mh->p.flags & MPG123_GAPLESS) { /* It's a bit tricky to do this computation for the padding samples. @@ -35,9 +35,9 @@ static off_t sample_adjust(mpg123_handle *mh, off_t x) } /* from external samples to internal */ -static off_t sample_unadjust(mpg123_handle *mh, off_t x) +static int64_t sample_unadjust(mpg123_handle *mh, int64_t x) { - off_t s; + int64_t s; if(mh->p.flags & MPG123_GAPLESS) { s = x + mh->begin_os; @@ -74,24 +74,29 @@ static void frame_buffercheck(mpg123_handle *fr) if(fr->lastframe > -1 && fr->num >= fr->lastframe) { /* There can be more than one frame of padding at the end, so we ignore the whole frame if we are beyond lastframe. */ - off_t byteoff = (fr->num == fr->lastframe) ? samples_to_bytes(fr, fr->lastoff) : 0; - if((off_t)fr->buffer.fill > byteoff) + int64_t byteoff = (fr->num == fr->lastframe) ? INT123_samples_to_bytes(fr, fr->lastoff) : 0; + if((int64_t)fr->buffer.fill > byteoff) { fr->buffer.fill = byteoff; } - if(VERBOSE3) fprintf(stderr, "\nNote: Cut frame %"OFF_P" buffer on end of stream to %"OFF_P" samples, fill now %"SIZE_P" bytes.\n", (off_p)fr->num, (off_p)(fr->num == fr->lastframe ? fr->lastoff : 0), (size_p)fr->buffer.fill); + if(VERBOSE3) + fprintf(stderr, "\nNote: Cut frame %" PRIi64 " buffer on end of stream to %" + PRIi64 " samples, fill now %"SIZE_P" bytes.\n" + , fr->num, (fr->num == fr->lastframe ? fr->lastoff : 0), (size_p)fr->buffer.fill); } /* The first interesting frame: Skip some leading samples. */ if(fr->firstoff && fr->num == fr->firstframe) { - off_t byteoff = samples_to_bytes(fr, fr->firstoff); - if((off_t)fr->buffer.fill > byteoff) + int64_t byteoff = INT123_samples_to_bytes(fr, fr->firstoff); + if((int64_t)fr->buffer.fill > byteoff) { fr->buffer.fill -= byteoff; /* buffer.p != buffer.data only for own buffer */ - debug6("cutting %li samples/%li bytes on begin, own_buffer=%i at %p=%p, buf[1]=%i", - (long)fr->firstoff, (long)byteoff, fr->own_buffer, (void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]); + debug6("cutting %" PRIi64 " samples/%" PRIi64 + " bytes on begin, own_buffer=%i at %p=%p, buf[1]=%i" + , fr->firstoff, byteoff, fr->own_buffer + , (void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]); if(fr->own_buffer) fr->buffer.p = fr->buffer.data + byteoff; else memmove(fr->buffer.data, fr->buffer.data + byteoff, fr->buffer.fill); debug3("done cutting, buffer at %p =? %p, buf[1]=%i", @@ -99,7 +104,10 @@ static void frame_buffercheck(mpg123_handle *fr) } else fr->buffer.fill = 0; - if(VERBOSE3) fprintf(stderr, "\nNote: Cut frame %"OFF_P" buffer on beginning of stream by %"OFF_P" samples, fill now %"SIZE_P" bytes.\n", (off_p)fr->num, (off_p)fr->firstoff, (size_p)fr->buffer.fill); + if(VERBOSE3) + fprintf(stderr, "\nNote: Cut frame %" PRIi64 + " buffer on beginning of stream by %" PRIi64 " samples, fill now %zu bytes.\n" + , fr->num, fr->firstoff, fr->buffer.fill); /* We can only reach this frame again by seeking. And on seeking, firstoff will be recomputed. So it is safe to null it here (and it makes the if() decision abort earlier). */ fr->firstoff = 0; diff --git a/src/libmpg123/getcpuflags.S b/src/libmpg123/getcpuflags.S index 50a9d00..67716d9 100644 --- a/src/libmpg123/getcpuflags.S +++ b/src/libmpg123/getcpuflags.S @@ -20,9 +20,9 @@ .text ALIGN4 -.globl ASM_NAME(getcpuflags) -/* .type ASM_NAME(getcpuflags),@function */ -ASM_NAME(getcpuflags): +.globl ASM_NAME(INT123_getcpuflags) +/* .type ASM_NAME(INT123_getcpuflags),@function */ +ASM_NAME(INT123_getcpuflags): pushl %ebp movl %esp,%ebp pushl %edx diff --git a/src/libmpg123/getcpuflags.h b/src/libmpg123/getcpuflags.h index fd7d080..eb21b71 100644 --- a/src/libmpg123/getcpuflags.h +++ b/src/libmpg123/getcpuflags.h @@ -42,7 +42,9 @@ struct cpuflags #endif }; -unsigned int getcpuflags(struct cpuflags* cf); +unsigned int INT123_getcpuflags(struct cpuflags* cf); + +#if ((defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64)) && (defined OPT_MULTI) #ifdef WANT_GETCPUFLAGS #include @@ -51,12 +53,10 @@ unsigned int getcpuflags(struct cpuflags* cf); static unsigned int wrap_getcpuflags(struct cpuflags* cf) { memset(cf, 0, sizeof(*cf)); - return getcpuflags(cf); + return INT123_getcpuflags(cf); } #endif -#if ((defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64)) && (defined OPT_MULTI) - // We really evaluate the CPU flags. #define OPT_CPU_FLAGS diff --git a/src/libmpg123/getcpuflags_arm.c b/src/libmpg123/getcpuflags_arm.c index a0bbf43..342c217 100644 --- a/src/libmpg123/getcpuflags_arm.c +++ b/src/libmpg123/getcpuflags_arm.c @@ -11,7 +11,7 @@ #include "mpg123lib_intern.h" #include "getcpuflags.h" -extern void check_neon(void); +extern void INT123_check_neon(void); #ifndef _M_ARM static sigjmp_buf jmpbuf; @@ -28,7 +28,7 @@ static void mpg123_arm_catch_sigill(int sig) #endif } -unsigned int getcpuflags(struct cpuflags* cf) +unsigned int INT123_getcpuflags(struct cpuflags* cf) { #ifndef _M_ARM struct sigaction act, act_old; @@ -40,7 +40,7 @@ unsigned int getcpuflags(struct cpuflags* cf) cf->has_neon = 0; if(!sigsetjmp(jmpbuf, 1)) { - check_neon(); + INT123_check_neon(); cf->has_neon = 1; } @@ -50,7 +50,7 @@ unsigned int getcpuflags(struct cpuflags* cf) if (!setjmp(jmpbuf)) { signal(SIGILL, mpg123_arm_catch_sigill); - check_neon(); + INT123_check_neon(); cf->has_neon = 1; } diff --git a/src/libmpg123/getcpuflags_x86_64.S b/src/libmpg123/getcpuflags_x86_64.S index 92fb765..9393818 100644 --- a/src/libmpg123/getcpuflags_x86_64.S +++ b/src/libmpg123/getcpuflags_x86_64.S @@ -10,8 +10,8 @@ .text ALIGN4 - .globl ASM_NAME(getcpuflags) -ASM_NAME(getcpuflags): + .globl ASM_NAME(INT123_getcpuflags) +ASM_NAME(INT123_getcpuflags): push %rbp mov %rsp, %rbp push %rbx diff --git a/src/libmpg123/icy.c b/src/libmpg123/icy.c index 1c287e7..1dddb61 100644 --- a/src/libmpg123/icy.c +++ b/src/libmpg123/icy.c @@ -1,30 +1,29 @@ /* icy: Puny code to pretend for a serious ICY data structure. - copyright 2007-2015 by the mpg123 project + copyright 2007-2023 by the mpg123 project -= free software under the terms of the LGPL 2.1 =- see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ -#include "intsym.h" #include "icy.h" -void init_icy(struct icy_meta *icy) +void INT123_init_icy(struct icy_meta *icy) { icy->data = NULL; } -void clear_icy(struct icy_meta *icy) +void INT123_clear_icy(struct icy_meta *icy) { if(icy->data != NULL) free(icy->data); - init_icy(icy); + INT123_init_icy(icy); } -void reset_icy(struct icy_meta *icy) +void INT123_reset_icy(struct icy_meta *icy) { - clear_icy(icy); - init_icy(icy); + INT123_clear_icy(icy); + INT123_init_icy(icy); } /*void set_icy(struct icy_meta *icy, char* new_data) { diff --git a/src/libmpg123/icy.h b/src/libmpg123/icy.h index a5fd64e..104c7ff 100644 --- a/src/libmpg123/icy.h +++ b/src/libmpg123/icy.h @@ -1,7 +1,7 @@ /* icy: support for SHOUTcast ICY meta info, an attempt to keep it organized - copyright 2006-7 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2006-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis and modelled after patch by Honza */ @@ -16,22 +16,22 @@ struct icy_meta { char* data; - off_t interval; - off_t next; + int64_t interval; + int64_t next; }; -void init_icy(struct icy_meta *); -void clear_icy(struct icy_meta *); -void reset_icy(struct icy_meta *); +void INT123_init_icy(struct icy_meta *); +void INT123_clear_icy(struct icy_meta *); +void INT123_reset_icy(struct icy_meta *); #else -#undef init_icy -#define init_icy(a) -#undef clear_icy -#define clear_icy(a) -#undef reset_icy -#define reset_icy(a) +#undef INT123_init_icy +#define INT123_init_icy(a) +#undef INT123_clear_icy +#define INT123_clear_icy(a) +#undef INT123_reset_icy +#define INT123_reset_icy(a) #endif /* NO_ICY */ diff --git a/src/libmpg123/icy2utf8.c b/src/libmpg123/icy2utf8.c index 71605d2..cfda64e 100644 --- a/src/libmpg123/icy2utf8.c +++ b/src/libmpg123/icy2utf8.c @@ -27,7 +27,6 @@ */ #include "config.h" -#include "intsym.h" /* Includes string and stdlib headers... */ #include "compat.h" @@ -375,7 +374,7 @@ is_utf8(const char* src) ICY in CP-1252 (or UTF-8 alreay) to UTF-8 encoded string. If force is applied, it will always encode to UTF-8, without checking. */ char * -icy2utf8(const char *src, int force) +INT123_icy2utf8(const char *src, int force) { const uint8_t *s = (const uint8_t *)src; size_t srclen, dstlen, i, k; @@ -384,7 +383,7 @@ icy2utf8(const char *src, int force) /* Some funny streams from Apple/iTunes give ICY info in UTF-8 already. So, be prepared and don't try to re-encode such. Unless forced. */ - if(!force && is_utf8(src)) return (compat_strdup(src)); + if(!force && is_utf8(src)) return (INT123_compat_strdup(src)); srclen = strlen(src) + 1; /* allocate conservatively */ @@ -419,13 +418,13 @@ main(void) { char *t, *t2; - if ((t = icy2utf8(intext, 0)) == NULL) { + if ((t = INT123_icy2utf8(intext, 0)) == NULL) { fprintf(stderr, "out of memory\n"); return (1); } /* make sure it won't be converted twice */ - if ((t2 = icy2utf8(t), 0) == NULL) { + if ((t2 = INT123_icy2utf8(t), 0) == NULL) { fprintf(stderr, "out of memory\n"); return (1); } diff --git a/src/libmpg123/icy2utf8.h b/src/libmpg123/icy2utf8.h index aeec012..202f9e6 100644 --- a/src/libmpg123/icy2utf8.h +++ b/src/libmpg123/icy2utf8.h @@ -4,7 +4,7 @@ #ifndef NO_ICY /* (string, force conversion) */ -char *icy2utf8(const char *, int); +char *INT123_icy2utf8(const char *, int); #endif #endif diff --git a/src/libmpg123/id3.c b/src/libmpg123/id3.c index 84c8bd2..ff6ce6b 100644 --- a/src/libmpg123/id3.c +++ b/src/libmpg123/id3.c @@ -1,7 +1,7 @@ /* id3: ID3v2.3 and ID3v2.4 parsing (a relevant subset) - copyright 2006-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2006-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis @@ -126,7 +126,7 @@ static void null_id3_links(mpg123_handle *fr) fr->id3v2.comment = NULL; } -void init_id3(mpg123_handle *fr) +void INT123_init_id3(mpg123_handle *fr) { fr->id3v2.version = 0; /* nothing there */ null_id3_links(fr); @@ -241,7 +241,7 @@ static mpg123_text *add_id3_text( mpg123_text **list, size_t *size } mdebug("add_id3_text: append to list of %zu", *size); // Nothing found, add new one. - mpg123_text *x = safe_realloc(*list, sizeof(mpg123_text)*(*size+1)); + mpg123_text *x = INT123_safe_realloc(*list, sizeof(mpg123_text)*(*size+1)); if(x == NULL) return NULL; /* bad */ *list = x; @@ -269,7 +269,7 @@ static mpg123_picture *add_id3_picture(mpg123_picture **list, size_t *size, char return entry; } // Append a new one. - mpg123_picture *x = safe_realloc(*list, sizeof(mpg123_picture)*(*size+1)); + mpg123_picture *x = INT123_safe_realloc(*list, sizeof(mpg123_picture)*(*size+1)); if(x == NULL) return NULL; /* bad */ *list = x; @@ -281,7 +281,7 @@ static mpg123_picture *add_id3_picture(mpg123_picture **list, size_t *size, char /* OK, back to the higher level functions. */ -void exit_id3(mpg123_handle *fr) +void INT123_exit_id3(mpg123_handle *fr) { free_picture(fr); free_comment(fr); @@ -289,14 +289,14 @@ void exit_id3(mpg123_handle *fr) free_text(fr); } -void reset_id3(mpg123_handle *fr) +void INT123_reset_id3(mpg123_handle *fr) { - exit_id3(fr); - init_id3(fr); + INT123_exit_id3(fr); + INT123_init_id3(fr); } /* Set the id3v2.artist id3v2.title ... links to elements of the array. */ -void id3_link(mpg123_handle *fr) +void INT123_id3_link(mpg123_handle *fr) { size_t i; mpg123_id3v2 *v2 = &fr->id3v2; @@ -363,7 +363,7 @@ static void store_id3_text(mpg123_string *sb, unsigned char *source, size_t sour error1("Unknown text encoding %u, I take no chances, sorry!", encoding); return; } - id3_to_utf8(sb, encoding, source+1, source_size-1, noquiet); + INT123_id3_to_utf8(sb, encoding, source+1, source_size-1, noquiet); if(sb->fill) debug1("UTF-8 string (the first one): %s", sb->p); else if(noquiet) error("unable to convert string to UTF-8 (out of memory, junk input?)!"); @@ -371,7 +371,7 @@ static void store_id3_text(mpg123_string *sb, unsigned char *source, size_t sour /* On error, sb->size is 0. */ /* Also, encoding has been checked already! */ -void id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet) +void INT123_id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet) { unsigned int bwidth; if(sb) @@ -403,9 +403,12 @@ static unsigned char *next_text(unsigned char* prev, unsigned char encoding, siz unsigned char *text = prev; size_t width = encoding_widths[encoding]; + if(limit > PTRDIFF_MAX) + return NULL; + /* So I go lengths to find zero or double zero... Remember bug 2834636: Only check for aligned NULLs! */ - while(text-prev < (ssize_t)limit) + while(text-prev < (ptrdiff_t)limit) { if(text[0] == 0) { @@ -494,7 +497,7 @@ static void process_picture(mpg123_handle *fr, unsigned char *realdata, size_t r error("Unable to get mime type for picture; skipping picture."); return; } - id3_to_utf8(&mime, 0, realdata, workpoint - realdata, NOQUIET); + INT123_id3_to_utf8(&mime, 0, realdata, workpoint - realdata, NOQUIET); realsize -= workpoint - realdata; realdata = workpoint; /* get picture type */ @@ -509,7 +512,7 @@ static void process_picture(mpg123_handle *fr, unsigned char *realdata, size_t r mpg123_free_string(&mime); return; } - id3_to_utf8(&description, encoding, realdata, workpoint - realdata, NOQUIET); + INT123_id3_to_utf8(&description, encoding, realdata, workpoint - realdata, NOQUIET); realsize -= workpoint - realdata; if(realsize) image_data = (unsigned char*)malloc(realsize); @@ -795,7 +798,7 @@ int store_id3v2( mpg123_handle *fr , unsigned long first4bytes, unsigned char buf[6], unsigned long length ) { int ret = 1; - off_t ret2; + int64_t ret2; unsigned long fullen = 10+length; if(fr->id3v2_raw) free(fr->id3v2_raw); @@ -842,7 +845,7 @@ int store_id3v2( mpg123_handle *fr 1: good, (possibly) new tag info <0: reader error (may need more data feed, try again) */ -int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) +int INT123_parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) { #define UNSYNC_FLAG 128 #define EXTHEAD_FLAG 64 /* ID3v2.3+ */ @@ -855,7 +858,7 @@ int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) unsigned long length=0; unsigned char flags = 0; int ret = 1; - off_t ret2; + int64_t ret2; int storetag = 0; unsigned int footlen = 0; #ifndef NO_ID3V2 @@ -961,7 +964,7 @@ int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) { if(VERBOSE3) fprintf(stderr, "Note: skipped tag clearing possibly existing ID3v2 data"); - reset_id3(fr); // Old data is invalid. + INT123_reset_id3(fr); // Old data is invalid. #endif if(!storetag && (ret2=fr->rd->skip_bytes(fr,length+footlen))<0) ret=ret2; @@ -1025,7 +1028,7 @@ int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) { if(VERBOSE3) fprintf(stderr, "Note: non-update tag replacing existing ID3v2 data\n"); - reset_id3(fr); + INT123_reset_id3(fr); } if(ret > 0) { @@ -1274,13 +1277,13 @@ int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes) { if(VERBOSE3) fprintf(stderr, "Note: faulty ID3v2 tag still clearing old data\n"); - reset_id3(fr); + INT123_reset_id3(fr); } } else // No new data, but still there was a tag that invalidates old data. { if(VERBOSE3) fprintf(stderr, "Note: empty ID3v2 clearing old data\n"); - reset_id3(fr); + INT123_reset_id3(fr); } tagparse_cleanup: /* Get rid of stored raw data that should not be kept. */ diff --git a/src/libmpg123/id3.h b/src/libmpg123/id3.h index 3a56694..6a65fd0 100644 --- a/src/libmpg123/id3.h +++ b/src/libmpg123/id3.h @@ -13,31 +13,31 @@ #include "frame.h" #ifdef NO_ID3V2 -# ifdef init_id3 -# undef init_id3 +# ifdef INT123_init_id3 +# undef INT123_init_id3 # endif -# define init_id3(fr) -# ifdef exit_id3 -# undef exit_id3 +# define INT123_init_id3(fr) +# ifdef INT123_exit_id3 +# undef INT123_exit_id3 # endif -# define exit_id3(fr) -# ifdef reset_id3 -# undef reset_id3 +# define INT123_exit_id3(fr) +# ifdef INT123_reset_id3 +# undef INT123_reset_id3 # endif -# define reset_id3(fr) -# ifdef id3_link -# undef id3_link +# define INT123_reset_id3(fr) +# ifdef INT123_id3_link +# undef INT123_id3_link # endif -# define id3_link(fr) +# define INT123_id3_link(fr) #else -void init_id3(mpg123_handle *fr); -void exit_id3(mpg123_handle *fr); -void reset_id3(mpg123_handle *fr); -void id3_link(mpg123_handle *fr); +void INT123_init_id3(mpg123_handle *fr); +void INT123_exit_id3(mpg123_handle *fr); +void INT123_reset_id3(mpg123_handle *fr); +void INT123_id3_link(mpg123_handle *fr); #endif -int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes); +int INT123_parse_new_id3(mpg123_handle *fr, unsigned long first4bytes); /* Convert text from some ID3 encoding to UTf-8. On error, sb->fill is 0. The noquiet flag enables warning/error messages. */ -void id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet); +void INT123_id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet); #endif diff --git a/src/libmpg123/index.c b/src/libmpg123/index.c index f8d94de..2f1d0b7 100644 --- a/src/libmpg123/index.c +++ b/src/libmpg123/index.c @@ -1,20 +1,19 @@ /* index: frame index data structure and functions - copyright 2007-2020 by the mpg123 project + copyright 2007-2023 by the mpg123 project -= free software under the terms of the LGPL 2.1 =- see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ -#include "intsym.h" #include "index.h" #include "debug.h" /* The next expected frame offset, one step ahead. */ -static off_t fi_next(struct frame_index *fi) +static int64_t fi_next(struct frame_index *fi) { - return (off_t)fi->fill*fi->step; + return (int64_t)fi->fill*fi->step; } /* Shrink down the used index to the half. @@ -36,7 +35,7 @@ static void fi_shrink(struct frame_index *fi) fi->next = fi_next(fi); } -void fi_init(struct frame_index *fi) +void INT123_fi_init(struct frame_index *fi) { fi->data = NULL; fi->step = 1; @@ -46,17 +45,17 @@ void fi_init(struct frame_index *fi) fi->next = fi_next(fi); } -void fi_exit(struct frame_index *fi) +void INT123_fi_exit(struct frame_index *fi) { - debug2("fi_exit: %p and %lu", (void*)fi->data, (unsigned long)fi->size); + debug2("INT123_fi_exit: %p and %lu", (void*)fi->data, (unsigned long)fi->size); if(fi->size && fi->data != NULL) free(fi->data); - fi_init(fi); /* Be prepared for further fun, still. */ + INT123_fi_init(fi); /* Be prepared for further fun, still. */ } -int fi_resize(struct frame_index *fi, size_t newsize) +int INT123_fi_resize(struct frame_index *fi, size_t newsize) { - off_t *newdata = NULL; + int64_t *newdata = NULL; if(newsize == fi->size) return 0; if(newsize > 0 && newsize < fi->size) @@ -64,7 +63,7 @@ int fi_resize(struct frame_index *fi, size_t newsize) while(fi->fill > newsize){ fi_shrink(fi); } } - newdata = safe_realloc(fi->data, newsize*sizeof(off_t)); + newdata = INT123_safe_realloc(fi->data, newsize*sizeof(int64_t)); if(newsize == 0 || newdata != NULL) { fi->data = newdata; @@ -78,15 +77,15 @@ int fi_resize(struct frame_index *fi, size_t newsize) return -1; } -void fi_add(struct frame_index *fi, off_t pos) +void INT123_fi_add(struct frame_index *fi, int64_t pos) { debug3("wanting to add to fill %lu, step %lu, size %lu", (unsigned long)fi->fill, (unsigned long)fi->step, (unsigned long)fi->size); if(fi->fill == fi->size) { /* Index is full, we need to shrink... or grow. */ /* Store the current frame number to check later if we still want it. */ - off_t framenum = fi->fill*fi->step; + int64_t framenum = fi->fill*fi->step; /* If we want not / cannot grow, we shrink. */ - if( !(fi->grow_size && fi_resize(fi, fi->size+fi->grow_size)==0) ) + if( !(fi->grow_size && INT123_fi_resize(fi, fi->size+fi->grow_size)==0) ) fi_shrink(fi); /* Now check if we still want to add this frame (could be that not, because of changed step). */ @@ -103,13 +102,13 @@ void fi_add(struct frame_index *fi, off_t pos) } } -int fi_set(struct frame_index *fi, off_t *offsets, off_t step, size_t fill) +int INT123_fi_set(struct frame_index *fi, int64_t *offsets, int64_t step, size_t fill) { - if(fi_resize(fi, fill) == -1) return -1; + if(INT123_fi_resize(fi, fill) == -1) return -1; fi->step = step; if(offsets != NULL) { - memcpy(fi->data, offsets, fill*sizeof(off_t)); + memcpy(fi->data, offsets, fill*sizeof(int64_t)); fi->fill = fill; } else @@ -123,7 +122,7 @@ int fi_set(struct frame_index *fi, off_t *offsets, off_t step, size_t fill) return 0; } -void fi_reset(struct frame_index *fi) +void INT123_fi_reset(struct frame_index *fi) { debug1("reset with size %"SIZE_P, (size_p)fi->size); fi->fill = 0; diff --git a/src/libmpg123/index.h b/src/libmpg123/index.h index 3e1ca64..b187259 100644 --- a/src/libmpg123/index.h +++ b/src/libmpg123/index.h @@ -15,7 +15,7 @@ In this manner we maintain a good resolution with the given maximum index size while covering the whole stream. - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -25,35 +25,35 @@ struct frame_index { - off_t *data; /* actual data, the frame positions */ - off_t step; /* advancement in frame number per index point */ - off_t next; /* frame offset supposed to come next into the index */ + int64_t *data; /* actual data, the frame positions */ + int64_t step; /* advancement in frame number per index point */ + int64_t next; /* frame offset supposed to come next into the index */ size_t size; /* total number of possible entries */ size_t fill; /* number of used entries */ size_t grow_size; /* if > 0: index allowed to grow on need with these steps, instead of lowering resolution */ }; /* The condition for a framenum to be appended to the index. - if(FI_NEXT(fr->index, fr->num)) fi_add(offset); */ + if(FI_NEXT(fr->index, fr->num)) INT123_fi_add(offset); */ #define FI_NEXT(fi, framenum) ((fi).size && framenum == (fi).next) /* Initialize stuff, set things to zero and NULL... */ -void fi_init(struct frame_index *fi); +void INT123_fi_init(struct frame_index *fi); /* Deallocate/zero things. */ -void fi_exit(struct frame_index *fi); +void INT123_fi_exit(struct frame_index *fi); /* Prepare a given size, preserving current fill, if possible. If the new size is smaller than fill, the entry density is reduced. Return 0 on success. */ -int fi_resize(struct frame_index *fi, size_t newsize); +int INT123_fi_resize(struct frame_index *fi, size_t newsize); /* Append a frame position, reducing index density if needed. */ -void fi_add(struct frame_index *fi, off_t pos); +void INT123_fi_add(struct frame_index *fi, int64_t pos); /* Replace the frame index */ -int fi_set(struct frame_index *fi, off_t *offsets, off_t step, size_t fill); +int INT123_fi_set(struct frame_index *fi, int64_t *offsets, int64_t step, size_t fill); /* Empty the index (setting fill=0 and step=1), but keep current size. */ -void fi_reset(struct frame_index *fi); +void INT123_fi_reset(struct frame_index *fi); #endif diff --git a/src/libmpg123/init_costabs.h b/src/libmpg123/init_costabs.h index 9709557..300ac87 100644 --- a/src/libmpg123/init_costabs.h +++ b/src/libmpg123/init_costabs.h @@ -8,7 +8,7 @@ The type clreal is either double or float, COS() is cos() or cosf() for runtime. */ -void init_costabs(void) +void INT123_init_costabs(void) { clreal *cpnts[] = { cos64,cos32,cos16,cos8,cos4 }; int i,k,kr,divv; diff --git a/src/libmpg123/init_layer12.h b/src/libmpg123/init_layer12.h index b8de19b..ce3ce0f 100644 --- a/src/libmpg123/init_layer12.h +++ b/src/libmpg123/init_layer12.h @@ -8,7 +8,7 @@ The type clreal is either double or float. POW() is pow() or powf(). */ -void init_layer12(void) +void INT123_init_layer12(void) { const clreal mulmul[27] = { @@ -19,8 +19,8 @@ void init_layer12(void) -4.0/5.0 , -2.0/5.0 , 2.0/5.0, 4.0/5.0 , -8.0/9.0 , -4.0/9.0 , -2.0/9.0 , 2.0/9.0 , 4.0/9.0 , 8.0/9.0 }; - // void init_layer12_stuff() - // real* init_layer12_table() + // void INT123_init_layer12_stuff() + // real* INT123_init_layer12_table() for(int k=0;k<27;k++) { int i,j; @@ -30,7 +30,7 @@ void init_layer12(void) *table++ = 0.0; } - // void init_layer12() + // void INT123_init_layer12() const unsigned char base[3][9] = { { 1 , 0, 2 , } , diff --git a/src/libmpg123/init_layer3.h b/src/libmpg123/init_layer3.h index 2ad9db1..ff8aabe 100644 --- a/src/libmpg123/init_layer3.h +++ b/src/libmpg123/init_layer3.h @@ -9,7 +9,7 @@ */ // init tables for layer-3 ... specific with the downsampling... -void init_layer3(void) +void INT123_init_layer3(void) { int i,j,k,l; @@ -41,10 +41,10 @@ void init_layer3(void) } for(i=0;i<9;i++) - COS9[i] = COS( M_PI / 18.0 * (clreal) i); + INT123_COS9[i] = COS( M_PI / 18.0 * (clreal) i); for(i=0;i<9;i++) - tfcos36[i] = 0.5 / COS( M_PI * (clreal) (i*2+1) / 36.0 ); + INT123_tfcos36[i] = 0.5 / COS( M_PI * (clreal) (i*2+1) / 36.0 ); for(i=0;i<3;i++) tfcos12[i] = 0.5 / COS( M_PI * (clreal) (i*2+1) / 12.0 ); diff --git a/src/libmpg123/l12tabs.h b/src/libmpg123/l12tabs.h index 8b49c6e..4e1466d 100644 --- a/src/libmpg123/l12tabs.h +++ b/src/libmpg123/l12tabs.h @@ -27,490 +27,490 @@ static unsigned char grp_9tab[3072]; static const ALIGNED(16) real layer12_table[27][64] = { { - 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 + 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f } , { - -1.33333333e+00, -1.05826737e+00, -8.39947367e-01, -6.66666667e-01 - , -5.29133684e-01, -4.19973683e-01, -3.33333333e-01, -2.64566842e-01 - , -2.09986842e-01, -1.66666667e-01, -1.32283421e-01, -1.04993421e-01 - , -8.33333333e-02, -6.61417105e-02, -5.24967104e-02, -4.16666667e-02 - , -3.30708552e-02, -2.62483552e-02, -2.08333333e-02, -1.65354276e-02 - , -1.31241776e-02, -1.04166667e-02, -8.26771381e-03, -6.56208880e-03 - , -5.20833333e-03, -4.13385691e-03, -3.28104440e-03, -2.60416667e-03 - , -2.06692845e-03, -1.64052220e-03, -1.30208333e-03, -1.03346423e-03 - , -8.20261100e-04, -6.51041667e-04, -5.16732113e-04, -4.10130550e-04 - , -3.25520833e-04, -2.58366057e-04, -2.05065275e-04, -1.62760417e-04 - , -1.29183028e-04, -1.02532638e-04, -8.13802083e-05, -6.45915142e-05 - , -5.12663188e-05, -4.06901042e-05, -3.22957571e-05, -2.56331594e-05 - , -2.03450521e-05, -1.61478785e-05, -1.28165797e-05, -1.01725260e-05 - , -8.07393927e-06, -6.40828985e-06, -5.08626302e-06, -4.03696963e-06 - , -3.20414492e-06, -2.54313151e-06, -2.01848482e-06, -1.60207246e-06 - , -1.27156576e-06, -1.00924241e-06, -8.01036231e-07, 0.00000000e+00 + -1.33333333e+00f, -1.05826737e+00f, -8.39947367e-01f, -6.66666667e-01f + , -5.29133684e-01f, -4.19973683e-01f, -3.33333333e-01f, -2.64566842e-01f + , -2.09986842e-01f, -1.66666667e-01f, -1.32283421e-01f, -1.04993421e-01f + , -8.33333333e-02f, -6.61417105e-02f, -5.24967104e-02f, -4.16666667e-02f + , -3.30708552e-02f, -2.62483552e-02f, -2.08333333e-02f, -1.65354276e-02f + , -1.31241776e-02f, -1.04166667e-02f, -8.26771381e-03f, -6.56208880e-03f + , -5.20833333e-03f, -4.13385691e-03f, -3.28104440e-03f, -2.60416667e-03f + , -2.06692845e-03f, -1.64052220e-03f, -1.30208333e-03f, -1.03346423e-03f + , -8.20261100e-04f, -6.51041667e-04f, -5.16732113e-04f, -4.10130550e-04f + , -3.25520833e-04f, -2.58366057e-04f, -2.05065275e-04f, -1.62760417e-04f + , -1.29183028e-04f, -1.02532638e-04f, -8.13802083e-05f, -6.45915142e-05f + , -5.12663188e-05f, -4.06901042e-05f, -3.22957571e-05f, -2.56331594e-05f + , -2.03450521e-05f, -1.61478785e-05f, -1.28165797e-05f, -1.01725260e-05f + , -8.07393927e-06f, -6.40828985e-06f, -5.08626302e-06f, -4.03696963e-06f + , -3.20414492e-06f, -2.54313151e-06f, -2.01848482e-06f, -1.60207246e-06f + , -1.27156576e-06f, -1.00924241e-06f, -8.01036231e-07f, 0.00000000e+00f } , { - 1.33333333e+00, 1.05826737e+00, 8.39947367e-01, 6.66666667e-01 - , 5.29133684e-01, 4.19973683e-01, 3.33333333e-01, 2.64566842e-01 - , 2.09986842e-01, 1.66666667e-01, 1.32283421e-01, 1.04993421e-01 - , 8.33333333e-02, 6.61417105e-02, 5.24967104e-02, 4.16666667e-02 - , 3.30708552e-02, 2.62483552e-02, 2.08333333e-02, 1.65354276e-02 - , 1.31241776e-02, 1.04166667e-02, 8.26771381e-03, 6.56208880e-03 - , 5.20833333e-03, 4.13385691e-03, 3.28104440e-03, 2.60416667e-03 - , 2.06692845e-03, 1.64052220e-03, 1.30208333e-03, 1.03346423e-03 - , 8.20261100e-04, 6.51041667e-04, 5.16732113e-04, 4.10130550e-04 - , 3.25520833e-04, 2.58366057e-04, 2.05065275e-04, 1.62760417e-04 - , 1.29183028e-04, 1.02532638e-04, 8.13802083e-05, 6.45915142e-05 - , 5.12663188e-05, 4.06901042e-05, 3.22957571e-05, 2.56331594e-05 - , 2.03450521e-05, 1.61478785e-05, 1.28165797e-05, 1.01725260e-05 - , 8.07393927e-06, 6.40828985e-06, 5.08626302e-06, 4.03696963e-06 - , 3.20414492e-06, 2.54313151e-06, 2.01848482e-06, 1.60207246e-06 - , 1.27156576e-06, 1.00924241e-06, 8.01036231e-07, 0.00000000e+00 + 1.33333333e+00f, 1.05826737e+00f, 8.39947367e-01f, 6.66666667e-01f + , 5.29133684e-01f, 4.19973683e-01f, 3.33333333e-01f, 2.64566842e-01f + , 2.09986842e-01f, 1.66666667e-01f, 1.32283421e-01f, 1.04993421e-01f + , 8.33333333e-02f, 6.61417105e-02f, 5.24967104e-02f, 4.16666667e-02f + , 3.30708552e-02f, 2.62483552e-02f, 2.08333333e-02f, 1.65354276e-02f + , 1.31241776e-02f, 1.04166667e-02f, 8.26771381e-03f, 6.56208880e-03f + , 5.20833333e-03f, 4.13385691e-03f, 3.28104440e-03f, 2.60416667e-03f + , 2.06692845e-03f, 1.64052220e-03f, 1.30208333e-03f, 1.03346423e-03f + , 8.20261100e-04f, 6.51041667e-04f, 5.16732113e-04f, 4.10130550e-04f + , 3.25520833e-04f, 2.58366057e-04f, 2.05065275e-04f, 1.62760417e-04f + , 1.29183028e-04f, 1.02532638e-04f, 8.13802083e-05f, 6.45915142e-05f + , 5.12663188e-05f, 4.06901042e-05f, 3.22957571e-05f, 2.56331594e-05f + , 2.03450521e-05f, 1.61478785e-05f, 1.28165797e-05f, 1.01725260e-05f + , 8.07393927e-06f, 6.40828985e-06f, 5.08626302e-06f, 4.03696963e-06f + , 3.20414492e-06f, 2.54313151e-06f, 2.01848482e-06f, 1.60207246e-06f + , 1.27156576e-06f, 1.00924241e-06f, 8.01036231e-07f, 0.00000000e+00f } , { - 5.71428571e-01, 4.53543158e-01, 3.59977443e-01, 2.85714286e-01 - , 2.26771579e-01, 1.79988721e-01, 1.42857143e-01, 1.13385789e-01 - , 8.99943607e-02, 7.14285714e-02, 5.66928947e-02, 4.49971804e-02 - , 3.57142857e-02, 2.83464474e-02, 2.24985902e-02, 1.78571429e-02 - , 1.41732237e-02, 1.12492951e-02, 8.92857143e-03, 7.08661184e-03 - , 5.62464754e-03, 4.46428571e-03, 3.54330592e-03, 2.81232377e-03 - , 2.23214286e-03, 1.77165296e-03, 1.40616189e-03, 1.11607143e-03 - , 8.85826480e-04, 7.03080943e-04, 5.58035714e-04, 4.42913240e-04 - , 3.51540472e-04, 2.79017857e-04, 2.21456620e-04, 1.75770236e-04 - , 1.39508929e-04, 1.10728310e-04, 8.78851179e-05, 6.97544643e-05 - , 5.53641550e-05, 4.39425589e-05, 3.48772321e-05, 2.76820775e-05 - , 2.19712795e-05, 1.74386161e-05, 1.38410387e-05, 1.09856397e-05 - , 8.71930804e-06, 6.92051937e-06, 5.49281987e-06, 4.35965402e-06 - , 3.46025969e-06, 2.74640993e-06, 2.17982701e-06, 1.73012984e-06 - , 1.37320497e-06, 1.08991350e-06, 8.65064922e-07, 6.86602483e-07 - , 5.44956752e-07, 4.32532461e-07, 3.43301242e-07, 0.00000000e+00 + 5.71428571e-01f, 4.53543158e-01f, 3.59977443e-01f, 2.85714286e-01f + , 2.26771579e-01f, 1.79988721e-01f, 1.42857143e-01f, 1.13385789e-01f + , 8.99943607e-02f, 7.14285714e-02f, 5.66928947e-02f, 4.49971804e-02f + , 3.57142857e-02f, 2.83464474e-02f, 2.24985902e-02f, 1.78571429e-02f + , 1.41732237e-02f, 1.12492951e-02f, 8.92857143e-03f, 7.08661184e-03f + , 5.62464754e-03f, 4.46428571e-03f, 3.54330592e-03f, 2.81232377e-03f + , 2.23214286e-03f, 1.77165296e-03f, 1.40616189e-03f, 1.11607143e-03f + , 8.85826480e-04f, 7.03080943e-04f, 5.58035714e-04f, 4.42913240e-04f + , 3.51540472e-04f, 2.79017857e-04f, 2.21456620e-04f, 1.75770236e-04f + , 1.39508929e-04f, 1.10728310e-04f, 8.78851179e-05f, 6.97544643e-05f + , 5.53641550e-05f, 4.39425589e-05f, 3.48772321e-05f, 2.76820775e-05f + , 2.19712795e-05f, 1.74386161e-05f, 1.38410387e-05f, 1.09856397e-05f + , 8.71930804e-06f, 6.92051937e-06f, 5.49281987e-06f, 4.35965402e-06f + , 3.46025969e-06f, 2.74640993e-06f, 2.17982701e-06f, 1.73012984e-06f + , 1.37320497e-06f, 1.08991350e-06f, 8.65064922e-07f, 6.86602483e-07f + , 5.44956752e-07f, 4.32532461e-07f, 3.43301242e-07f, 0.00000000e+00f } , { - 2.66666667e-01, 2.11653474e-01, 1.67989473e-01, 1.33333333e-01 - , 1.05826737e-01, 8.39947367e-02, 6.66666667e-02, 5.29133684e-02 - , 4.19973683e-02, 3.33333333e-02, 2.64566842e-02, 2.09986842e-02 - , 1.66666667e-02, 1.32283421e-02, 1.04993421e-02, 8.33333333e-03 - , 6.61417105e-03, 5.24967104e-03, 4.16666667e-03, 3.30708552e-03 - , 2.62483552e-03, 2.08333333e-03, 1.65354276e-03, 1.31241776e-03 - , 1.04166667e-03, 8.26771381e-04, 6.56208880e-04, 5.20833333e-04 - , 4.13385691e-04, 3.28104440e-04, 2.60416667e-04, 2.06692845e-04 - , 1.64052220e-04, 1.30208333e-04, 1.03346423e-04, 8.20261100e-05 - , 6.51041667e-05, 5.16732113e-05, 4.10130550e-05, 3.25520833e-05 - , 2.58366057e-05, 2.05065275e-05, 1.62760417e-05, 1.29183028e-05 - , 1.02532638e-05, 8.13802083e-06, 6.45915142e-06, 5.12663188e-06 - , 4.06901042e-06, 3.22957571e-06, 2.56331594e-06, 2.03450521e-06 - , 1.61478785e-06, 1.28165797e-06, 1.01725260e-06, 8.07393927e-07 - , 6.40828985e-07, 5.08626302e-07, 4.03696963e-07, 3.20414492e-07 - , 2.54313151e-07, 2.01848482e-07, 1.60207246e-07, 0.00000000e+00 + 2.66666667e-01f, 2.11653474e-01f, 1.67989473e-01f, 1.33333333e-01f + , 1.05826737e-01f, 8.39947367e-02f, 6.66666667e-02f, 5.29133684e-02f + , 4.19973683e-02f, 3.33333333e-02f, 2.64566842e-02f, 2.09986842e-02f + , 1.66666667e-02f, 1.32283421e-02f, 1.04993421e-02f, 8.33333333e-03f + , 6.61417105e-03f, 5.24967104e-03f, 4.16666667e-03f, 3.30708552e-03f + , 2.62483552e-03f, 2.08333333e-03f, 1.65354276e-03f, 1.31241776e-03f + , 1.04166667e-03f, 8.26771381e-04f, 6.56208880e-04f, 5.20833333e-04f + , 4.13385691e-04f, 3.28104440e-04f, 2.60416667e-04f, 2.06692845e-04f + , 1.64052220e-04f, 1.30208333e-04f, 1.03346423e-04f, 8.20261100e-05f + , 6.51041667e-05f, 5.16732113e-05f, 4.10130550e-05f, 3.25520833e-05f + , 2.58366057e-05f, 2.05065275e-05f, 1.62760417e-05f, 1.29183028e-05f + , 1.02532638e-05f, 8.13802083e-06f, 6.45915142e-06f, 5.12663188e-06f + , 4.06901042e-06f, 3.22957571e-06f, 2.56331594e-06f, 2.03450521e-06f + , 1.61478785e-06f, 1.28165797e-06f, 1.01725260e-06f, 8.07393927e-07f + , 6.40828985e-07f, 5.08626302e-07f, 4.03696963e-07f, 3.20414492e-07f + , 2.54313151e-07f, 2.01848482e-07f, 1.60207246e-07f, 0.00000000e+00f } , { - 1.29032258e-01, 1.02412971e-01, 8.12852290e-02, 6.45161290e-02 - , 5.12064855e-02, 4.06426145e-02, 3.22580645e-02, 2.56032428e-02 - , 2.03213073e-02, 1.61290323e-02, 1.28016214e-02, 1.01606536e-02 - , 8.06451613e-03, 6.40081069e-03, 5.08032681e-03, 4.03225806e-03 - , 3.20040535e-03, 2.54016341e-03, 2.01612903e-03, 1.60020267e-03 - , 1.27008170e-03, 1.00806452e-03, 8.00101337e-04, 6.35040852e-04 - , 5.04032258e-04, 4.00050668e-04, 3.17520426e-04, 2.52016129e-04 - , 2.00025334e-04, 1.58760213e-04, 1.26008065e-04, 1.00012667e-04 - , 7.93801065e-05, 6.30040323e-05, 5.00063335e-05, 3.96900532e-05 - , 3.15020161e-05, 2.50031668e-05, 1.98450266e-05, 1.57510081e-05 - , 1.25015834e-05, 9.92251331e-06, 7.87550403e-06, 6.25079169e-06 - , 4.96125665e-06, 3.93775202e-06, 3.12539585e-06, 2.48062833e-06 - , 1.96887601e-06, 1.56269792e-06, 1.24031416e-06, 9.84438004e-07 - , 7.81348962e-07, 6.20157082e-07, 4.92219002e-07, 3.90674481e-07 - , 3.10078541e-07, 2.46109501e-07, 1.95337240e-07, 1.55039270e-07 - , 1.23054751e-07, 9.76686202e-08, 7.75196352e-08, 0.00000000e+00 + 1.29032258e-01f, 1.02412971e-01f, 8.12852290e-02f, 6.45161290e-02f + , 5.12064855e-02f, 4.06426145e-02f, 3.22580645e-02f, 2.56032428e-02f + , 2.03213073e-02f, 1.61290323e-02f, 1.28016214e-02f, 1.01606536e-02f + , 8.06451613e-03f, 6.40081069e-03f, 5.08032681e-03f, 4.03225806e-03f + , 3.20040535e-03f, 2.54016341e-03f, 2.01612903e-03f, 1.60020267e-03f + , 1.27008170e-03f, 1.00806452e-03f, 8.00101337e-04f, 6.35040852e-04f + , 5.04032258e-04f, 4.00050668e-04f, 3.17520426e-04f, 2.52016129e-04f + , 2.00025334e-04f, 1.58760213e-04f, 1.26008065e-04f, 1.00012667e-04f + , 7.93801065e-05f, 6.30040323e-05f, 5.00063335e-05f, 3.96900532e-05f + , 3.15020161e-05f, 2.50031668e-05f, 1.98450266e-05f, 1.57510081e-05f + , 1.25015834e-05f, 9.92251331e-06f, 7.87550403e-06f, 6.25079169e-06f + , 4.96125665e-06f, 3.93775202e-06f, 3.12539585e-06f, 2.48062833e-06f + , 1.96887601e-06f, 1.56269792e-06f, 1.24031416e-06f, 9.84438004e-07f + , 7.81348962e-07f, 6.20157082e-07f, 4.92219002e-07f, 3.90674481e-07f + , 3.10078541e-07f, 2.46109501e-07f, 1.95337240e-07f, 1.55039270e-07f + , 1.23054751e-07f, 9.76686202e-08f, 7.75196352e-08f, 0.00000000e+00f } , { - 6.34920635e-02, 5.03936842e-02, 3.99974936e-02, 3.17460317e-02 - , 2.51968421e-02, 1.99987468e-02, 1.58730159e-02, 1.25984210e-02 - , 9.99937341e-03, 7.93650794e-03, 6.29921052e-03, 4.99968671e-03 - , 3.96825397e-03, 3.14960526e-03, 2.49984335e-03, 1.98412698e-03 - , 1.57480263e-03, 1.24992168e-03, 9.92063492e-04, 7.87401315e-04 - , 6.24960838e-04, 4.96031746e-04, 3.93700658e-04, 3.12480419e-04 - , 2.48015873e-04, 1.96850329e-04, 1.56240210e-04, 1.24007937e-04 - , 9.84251644e-05, 7.81201048e-05, 6.20039683e-05, 4.92125822e-05 - , 3.90600524e-05, 3.10019841e-05, 2.46062911e-05, 1.95300262e-05 - , 1.55009921e-05, 1.23031456e-05, 9.76501310e-06, 7.75049603e-06 - , 6.15157278e-06, 4.88250655e-06, 3.87524802e-06, 3.07578639e-06 - , 2.44125327e-06, 1.93762401e-06, 1.53789319e-06, 1.22062664e-06 - , 9.68812004e-07, 7.68946597e-07, 6.10313319e-07, 4.84406002e-07 - , 3.84473299e-07, 3.05156659e-07, 2.42203001e-07, 1.92236649e-07 - , 1.52578330e-07, 1.21101500e-07, 9.61183246e-08, 7.62891648e-08 - , 6.05507502e-08, 4.80591623e-08, 3.81445824e-08, 0.00000000e+00 + 6.34920635e-02f, 5.03936842e-02f, 3.99974936e-02f, 3.17460317e-02f + , 2.51968421e-02f, 1.99987468e-02f, 1.58730159e-02f, 1.25984210e-02f + , 9.99937341e-03f, 7.93650794e-03f, 6.29921052e-03f, 4.99968671e-03f + , 3.96825397e-03f, 3.14960526e-03f, 2.49984335e-03f, 1.98412698e-03f + , 1.57480263e-03f, 1.24992168e-03f, 9.92063492e-04f, 7.87401315e-04f + , 6.24960838e-04f, 4.96031746e-04f, 3.93700658e-04f, 3.12480419e-04f + , 2.48015873e-04f, 1.96850329e-04f, 1.56240210e-04f, 1.24007937e-04f + , 9.84251644e-05f, 7.81201048e-05f, 6.20039683e-05f, 4.92125822e-05f + , 3.90600524e-05f, 3.10019841e-05f, 2.46062911e-05f, 1.95300262e-05f + , 1.55009921e-05f, 1.23031456e-05f, 9.76501310e-06f, 7.75049603e-06f + , 6.15157278e-06f, 4.88250655e-06f, 3.87524802e-06f, 3.07578639e-06f + , 2.44125327e-06f, 1.93762401e-06f, 1.53789319e-06f, 1.22062664e-06f + , 9.68812004e-07f, 7.68946597e-07f, 6.10313319e-07f, 4.84406002e-07f + , 3.84473299e-07f, 3.05156659e-07f, 2.42203001e-07f, 1.92236649e-07f + , 1.52578330e-07f, 1.21101500e-07f, 9.61183246e-08f, 7.62891648e-08f + , 6.05507502e-08f, 4.80591623e-08f, 3.81445824e-08f, 0.00000000e+00f } , { - 3.14960630e-02, 2.49984418e-02, 1.98412764e-02, 1.57480315e-02 - , 1.24992209e-02, 9.92063819e-03, 7.87401575e-03, 6.24961044e-03 - , 4.96031909e-03, 3.93700787e-03, 3.12480522e-03, 2.48015955e-03 - , 1.96850394e-03, 1.56240261e-03, 1.24007977e-03, 9.84251969e-04 - , 7.81201305e-04, 6.20039887e-04, 4.92125984e-04, 3.90600653e-04 - , 3.10019943e-04, 2.46062992e-04, 1.95300326e-04, 1.55009972e-04 - , 1.23031496e-04, 9.76501631e-05, 7.75049858e-05, 6.15157480e-05 - , 4.88250816e-05, 3.87524929e-05, 3.07578740e-05, 2.44125408e-05 - , 1.93762465e-05, 1.53789370e-05, 1.22062704e-05, 9.68812323e-06 - , 7.68946850e-06, 6.10313520e-06, 4.84406162e-06, 3.84473425e-06 - , 3.05156760e-06, 2.42203081e-06, 1.92236713e-06, 1.52578380e-06 - , 1.21101540e-06, 9.61183563e-07, 7.62891900e-07, 6.05507702e-07 - , 4.80591781e-07, 3.81445950e-07, 3.02753851e-07, 2.40295891e-07 - , 1.90722975e-07, 1.51376925e-07, 1.20147945e-07, 9.53614874e-08 - , 7.56884627e-08, 6.00739727e-08, 4.76807437e-08, 3.78442314e-08 - , 3.00369863e-08, 2.38403719e-08, 1.89221157e-08, 0.00000000e+00 + 3.14960630e-02f, 2.49984418e-02f, 1.98412764e-02f, 1.57480315e-02f + , 1.24992209e-02f, 9.92063819e-03f, 7.87401575e-03f, 6.24961044e-03f + , 4.96031909e-03f, 3.93700787e-03f, 3.12480522e-03f, 2.48015955e-03f + , 1.96850394e-03f, 1.56240261e-03f, 1.24007977e-03f, 9.84251969e-04f + , 7.81201305e-04f, 6.20039887e-04f, 4.92125984e-04f, 3.90600653e-04f + , 3.10019943e-04f, 2.46062992e-04f, 1.95300326e-04f, 1.55009972e-04f + , 1.23031496e-04f, 9.76501631e-05f, 7.75049858e-05f, 6.15157480e-05f + , 4.88250816e-05f, 3.87524929e-05f, 3.07578740e-05f, 2.44125408e-05f + , 1.93762465e-05f, 1.53789370e-05f, 1.22062704e-05f, 9.68812323e-06f + , 7.68946850e-06f, 6.10313520e-06f, 4.84406162e-06f, 3.84473425e-06f + , 3.05156760e-06f, 2.42203081e-06f, 1.92236713e-06f, 1.52578380e-06f + , 1.21101540e-06f, 9.61183563e-07f, 7.62891900e-07f, 6.05507702e-07f + , 4.80591781e-07f, 3.81445950e-07f, 3.02753851e-07f, 2.40295891e-07f + , 1.90722975e-07f, 1.51376925e-07f, 1.20147945e-07f, 9.53614874e-08f + , 7.56884627e-08f, 6.00739727e-08f, 4.76807437e-08f, 3.78442314e-08f + , 3.00369863e-08f, 2.38403719e-08f, 1.89221157e-08f, 0.00000000e+00f } , { - 1.56862745e-02, 1.24502043e-02, 9.88173372e-03, 7.84313725e-03 - , 6.22510216e-03, 4.94086686e-03, 3.92156863e-03, 3.11255108e-03 - , 2.47043343e-03, 1.96078431e-03, 1.55627554e-03, 1.23521672e-03 - , 9.80392157e-04, 7.78137771e-04, 6.17608358e-04, 4.90196078e-04 - , 3.89068885e-04, 3.08804179e-04, 2.45098039e-04, 1.94534443e-04 - , 1.54402089e-04, 1.22549020e-04, 9.72672213e-05, 7.72010447e-05 - , 6.12745098e-05, 4.86336107e-05, 3.86005224e-05, 3.06372549e-05 - , 2.43168053e-05, 1.93002612e-05, 1.53186275e-05, 1.21584027e-05 - , 9.65013059e-06, 7.65931373e-06, 6.07920133e-06, 4.82506530e-06 - , 3.82965686e-06, 3.03960067e-06, 2.41253265e-06, 1.91482843e-06 - , 1.51980033e-06, 1.20626632e-06, 9.57414216e-07, 7.59900167e-07 - , 6.03133162e-07, 4.78707108e-07, 3.79950083e-07, 3.01566581e-07 - , 2.39353554e-07, 1.89975042e-07, 1.50783290e-07, 1.19676777e-07 - , 9.49875208e-08, 7.53916452e-08, 5.98383885e-08, 4.74937604e-08 - , 3.76958226e-08, 2.99191942e-08, 2.37468802e-08, 1.88479113e-08 - , 1.49595971e-08, 1.18734401e-08, 9.42395565e-09, 0.00000000e+00 + 1.56862745e-02f, 1.24502043e-02f, 9.88173372e-03f, 7.84313725e-03f + , 6.22510216e-03f, 4.94086686e-03f, 3.92156863e-03f, 3.11255108e-03f + , 2.47043343e-03f, 1.96078431e-03f, 1.55627554e-03f, 1.23521672e-03f + , 9.80392157e-04f, 7.78137771e-04f, 6.17608358e-04f, 4.90196078e-04f + , 3.89068885e-04f, 3.08804179e-04f, 2.45098039e-04f, 1.94534443e-04f + , 1.54402089e-04f, 1.22549020e-04f, 9.72672213e-05f, 7.72010447e-05f + , 6.12745098e-05f, 4.86336107e-05f, 3.86005224e-05f, 3.06372549e-05f + , 2.43168053e-05f, 1.93002612e-05f, 1.53186275e-05f, 1.21584027e-05f + , 9.65013059e-06f, 7.65931373e-06f, 6.07920133e-06f, 4.82506530e-06f + , 3.82965686e-06f, 3.03960067e-06f, 2.41253265e-06f, 1.91482843e-06f + , 1.51980033e-06f, 1.20626632e-06f, 9.57414216e-07f, 7.59900167e-07f + , 6.03133162e-07f, 4.78707108e-07f, 3.79950083e-07f, 3.01566581e-07f + , 2.39353554e-07f, 1.89975042e-07f, 1.50783290e-07f, 1.19676777e-07f + , 9.49875208e-08f, 7.53916452e-08f, 5.98383885e-08f, 4.74937604e-08f + , 3.76958226e-08f, 2.99191942e-08f, 2.37468802e-08f, 1.88479113e-08f + , 1.49595971e-08f, 1.18734401e-08f, 9.42395565e-09f, 0.00000000e+00f } , { - 7.82778865e-03, 6.21291997e-03, 4.93119785e-03, 3.91389432e-03 - , 3.10645998e-03, 2.46559892e-03, 1.95694716e-03, 1.55322999e-03 - , 1.23279946e-03, 9.78473581e-04, 7.76614996e-04, 6.16399731e-04 - , 4.89236791e-04, 3.88307498e-04, 3.08199865e-04, 2.44618395e-04 - , 1.94153749e-04, 1.54099933e-04, 1.22309198e-04, 9.70768745e-05 - , 7.70499664e-05, 6.11545988e-05, 4.85384373e-05, 3.85249832e-05 - , 3.05772994e-05, 2.42692186e-05, 1.92624916e-05, 1.52886497e-05 - , 1.21346093e-05, 9.63124579e-06, 7.64432485e-06, 6.06730466e-06 - , 4.81562290e-06, 3.82216243e-06, 3.03365233e-06, 2.40781145e-06 - , 1.91108121e-06, 1.51682616e-06, 1.20390572e-06, 9.55540607e-07 - , 7.58413082e-07, 6.01952862e-07, 4.77770303e-07, 3.79206541e-07 - , 3.00976431e-07, 2.38885152e-07, 1.89603271e-07, 1.50488216e-07 - , 1.19442576e-07, 9.48016353e-08, 7.52441078e-08, 5.97212879e-08 - , 4.74008176e-08, 3.76220539e-08, 2.98606440e-08, 2.37004088e-08 - , 1.88110269e-08, 1.49303220e-08, 1.18502044e-08, 9.40551347e-09 - , 7.46516099e-09, 5.92510220e-09, 4.70275674e-09, 0.00000000e+00 + 7.82778865e-03f, 6.21291997e-03f, 4.93119785e-03f, 3.91389432e-03f + , 3.10645998e-03f, 2.46559892e-03f, 1.95694716e-03f, 1.55322999e-03f + , 1.23279946e-03f, 9.78473581e-04f, 7.76614996e-04f, 6.16399731e-04f + , 4.89236791e-04f, 3.88307498e-04f, 3.08199865e-04f, 2.44618395e-04f + , 1.94153749e-04f, 1.54099933e-04f, 1.22309198e-04f, 9.70768745e-05f + , 7.70499664e-05f, 6.11545988e-05f, 4.85384373e-05f, 3.85249832e-05f + , 3.05772994e-05f, 2.42692186e-05f, 1.92624916e-05f, 1.52886497e-05f + , 1.21346093e-05f, 9.63124579e-06f, 7.64432485e-06f, 6.06730466e-06f + , 4.81562290e-06f, 3.82216243e-06f, 3.03365233e-06f, 2.40781145e-06f + , 1.91108121e-06f, 1.51682616e-06f, 1.20390572e-06f, 9.55540607e-07f + , 7.58413082e-07f, 6.01952862e-07f, 4.77770303e-07f, 3.79206541e-07f + , 3.00976431e-07f, 2.38885152e-07f, 1.89603271e-07f, 1.50488216e-07f + , 1.19442576e-07f, 9.48016353e-08f, 7.52441078e-08f, 5.97212879e-08f + , 4.74008176e-08f, 3.76220539e-08f, 2.98606440e-08f, 2.37004088e-08f + , 1.88110269e-08f, 1.49303220e-08f, 1.18502044e-08f, 9.40551347e-09f + , 7.46516099e-09f, 5.92510220e-09f, 4.70275674e-09f, 0.00000000e+00f } , { - 3.91006843e-03, 3.10342337e-03, 2.46318876e-03, 1.95503421e-03 - , 1.55171168e-03, 1.23159438e-03, 9.77517107e-04, 7.75855842e-04 - , 6.15797190e-04, 4.88758553e-04, 3.87927921e-04, 3.07898595e-04 - , 2.44379277e-04, 1.93963960e-04, 1.53949297e-04, 1.22189638e-04 - , 9.69819802e-05, 7.69746487e-05, 6.10948192e-05, 4.84909901e-05 - , 3.84873243e-05, 3.05474096e-05, 2.42454951e-05, 1.92436622e-05 - , 1.52737048e-05, 1.21227475e-05, 9.62183109e-06, 7.63685239e-06 - , 6.06137376e-06, 4.81091554e-06, 3.81842620e-06, 3.03068688e-06 - , 2.40545777e-06, 1.90921310e-06, 1.51534344e-06, 1.20272889e-06 - , 9.54606549e-07, 7.57671720e-07, 6.01364443e-07, 4.77303275e-07 - , 3.78835860e-07, 3.00682221e-07, 2.38651637e-07, 1.89417930e-07 - , 1.50341111e-07, 1.19325819e-07, 9.47089650e-08, 7.51705554e-08 - , 5.96629093e-08, 4.73544825e-08, 3.75852777e-08, 2.98314547e-08 - , 2.36772413e-08, 1.87926388e-08, 1.49157273e-08, 1.18386206e-08 - , 9.39631942e-09, 7.45786367e-09, 5.91931032e-09, 4.69815971e-09 - , 3.72893183e-09, 2.95965516e-09, 2.34907986e-09, 0.00000000e+00 + 3.91006843e-03f, 3.10342337e-03f, 2.46318876e-03f, 1.95503421e-03f + , 1.55171168e-03f, 1.23159438e-03f, 9.77517107e-04f, 7.75855842e-04f + , 6.15797190e-04f, 4.88758553e-04f, 3.87927921e-04f, 3.07898595e-04f + , 2.44379277e-04f, 1.93963960e-04f, 1.53949297e-04f, 1.22189638e-04f + , 9.69819802e-05f, 7.69746487e-05f, 6.10948192e-05f, 4.84909901e-05f + , 3.84873243e-05f, 3.05474096e-05f, 2.42454951e-05f, 1.92436622e-05f + , 1.52737048e-05f, 1.21227475e-05f, 9.62183109e-06f, 7.63685239e-06f + , 6.06137376e-06f, 4.81091554e-06f, 3.81842620e-06f, 3.03068688e-06f + , 2.40545777e-06f, 1.90921310e-06f, 1.51534344e-06f, 1.20272889e-06f + , 9.54606549e-07f, 7.57671720e-07f, 6.01364443e-07f, 4.77303275e-07f + , 3.78835860e-07f, 3.00682221e-07f, 2.38651637e-07f, 1.89417930e-07f + , 1.50341111e-07f, 1.19325819e-07f, 9.47089650e-08f, 7.51705554e-08f + , 5.96629093e-08f, 4.73544825e-08f, 3.75852777e-08f, 2.98314547e-08f + , 2.36772413e-08f, 1.87926388e-08f, 1.49157273e-08f, 1.18386206e-08f + , 9.39631942e-09f, 7.45786367e-09f, 5.91931032e-09f, 4.69815971e-09f + , 3.72893183e-09f, 2.95965516e-09f, 2.34907986e-09f, 0.00000000e+00f } , { - 1.95407914e-03, 1.55095364e-03, 1.23099272e-03, 9.77039570e-04 - , 7.75476821e-04, 6.15496360e-04, 4.88519785e-04, 3.87738410e-04 - , 3.07748180e-04, 2.44259893e-04, 1.93869205e-04, 1.53874090e-04 - , 1.22129946e-04, 9.69346026e-05, 7.69370451e-05, 6.10649731e-05 - , 4.84673013e-05, 3.84685225e-05, 3.05324866e-05, 2.42336506e-05 - , 1.92342613e-05, 1.52662433e-05, 1.21168253e-05, 9.61713063e-06 - , 7.63312164e-06, 6.05841266e-06, 4.80856532e-06, 3.81656082e-06 - , 3.02920633e-06, 2.40428266e-06, 1.90828041e-06, 1.51460317e-06 - , 1.20214133e-06, 9.54140205e-07, 7.57301583e-07, 6.01070665e-07 - , 4.77070103e-07, 3.78650791e-07, 3.00535332e-07, 2.38535051e-07 - , 1.89325396e-07, 1.50267666e-07, 1.19267526e-07, 9.46626978e-08 - , 7.51338331e-08, 5.96337628e-08, 4.73313489e-08, 3.75669165e-08 - , 2.98168814e-08, 2.36656745e-08, 1.87834583e-08, 1.49084407e-08 - , 1.18328372e-08, 9.39172913e-09, 7.45422035e-09, 5.91641861e-09 - , 4.69586457e-09, 3.72711018e-09, 2.95820931e-09, 2.34793228e-09 - , 1.86355509e-09, 1.47910465e-09, 1.17396614e-09, 0.00000000e+00 + 1.95407914e-03f, 1.55095364e-03f, 1.23099272e-03f, 9.77039570e-04f + , 7.75476821e-04f, 6.15496360e-04f, 4.88519785e-04f, 3.87738410e-04f + , 3.07748180e-04f, 2.44259893e-04f, 1.93869205e-04f, 1.53874090e-04f + , 1.22129946e-04f, 9.69346026e-05f, 7.69370451e-05f, 6.10649731e-05f + , 4.84673013e-05f, 3.84685225e-05f, 3.05324866e-05f, 2.42336506e-05f + , 1.92342613e-05f, 1.52662433e-05f, 1.21168253e-05f, 9.61713063e-06f + , 7.63312164e-06f, 6.05841266e-06f, 4.80856532e-06f, 3.81656082e-06f + , 3.02920633e-06f, 2.40428266e-06f, 1.90828041e-06f, 1.51460317e-06f + , 1.20214133e-06f, 9.54140205e-07f, 7.57301583e-07f, 6.01070665e-07f + , 4.77070103e-07f, 3.78650791e-07f, 3.00535332e-07f, 2.38535051e-07f + , 1.89325396e-07f, 1.50267666e-07f, 1.19267526e-07f, 9.46626978e-08f + , 7.51338331e-08f, 5.96337628e-08f, 4.73313489e-08f, 3.75669165e-08f + , 2.98168814e-08f, 2.36656745e-08f, 1.87834583e-08f, 1.49084407e-08f + , 1.18328372e-08f, 9.39172913e-09f, 7.45422035e-09f, 5.91641861e-09f + , 4.69586457e-09f, 3.72711018e-09f, 2.95820931e-09f, 2.34793228e-09f + , 1.86355509e-09f, 1.47910465e-09f, 1.17396614e-09f, 0.00000000e+00f } , { - 9.76800977e-04, 7.75287449e-04, 6.15346056e-04, 4.88400488e-04 - , 3.87643725e-04, 3.07673028e-04, 2.44200244e-04, 1.93821862e-04 - , 1.53836514e-04, 1.22100122e-04, 9.69109311e-05, 7.69182570e-05 - , 6.10500611e-05, 4.84554656e-05, 3.84591285e-05, 3.05250305e-05 - , 2.42277328e-05, 1.92295643e-05, 1.52625153e-05, 1.21138664e-05 - , 9.61478213e-06, 7.63125763e-06, 6.05693320e-06, 4.80739106e-06 - , 3.81562882e-06, 3.02846660e-06, 2.40369553e-06, 1.90781441e-06 - , 1.51423330e-06, 1.20184777e-06, 9.53907204e-07, 7.57116649e-07 - , 6.00923883e-07, 4.76953602e-07, 3.78558325e-07, 3.00461941e-07 - , 2.38476801e-07, 1.89279162e-07, 1.50230971e-07, 1.19238400e-07 - , 9.46395812e-08, 7.51154854e-08, 5.96192002e-08, 4.73197906e-08 - , 3.75577427e-08, 2.98096001e-08, 2.36598953e-08, 1.87788713e-08 - , 1.49048001e-08, 1.18299476e-08, 9.38943567e-09, 7.45240003e-09 - , 5.91497382e-09, 4.69471784e-09, 3.72620002e-09, 2.95748691e-09 - , 2.34735892e-09, 1.86310001e-09, 1.47874346e-09, 1.17367946e-09 - , 9.31550004e-10, 7.39371728e-10, 5.86839729e-10, 0.00000000e+00 + 9.76800977e-04f, 7.75287449e-04f, 6.15346056e-04f, 4.88400488e-04f + , 3.87643725e-04f, 3.07673028e-04f, 2.44200244e-04f, 1.93821862e-04f + , 1.53836514e-04f, 1.22100122e-04f, 9.69109311e-05f, 7.69182570e-05f + , 6.10500611e-05f, 4.84554656e-05f, 3.84591285e-05f, 3.05250305e-05f + , 2.42277328e-05f, 1.92295643e-05f, 1.52625153e-05f, 1.21138664e-05f + , 9.61478213e-06f, 7.63125763e-06f, 6.05693320e-06f, 4.80739106e-06f + , 3.81562882e-06f, 3.02846660e-06f, 2.40369553e-06f, 1.90781441e-06f + , 1.51423330e-06f, 1.20184777e-06f, 9.53907204e-07f, 7.57116649e-07f + , 6.00923883e-07f, 4.76953602e-07f, 3.78558325e-07f, 3.00461941e-07f + , 2.38476801e-07f, 1.89279162e-07f, 1.50230971e-07f, 1.19238400e-07f + , 9.46395812e-08f, 7.51154854e-08f, 5.96192002e-08f, 4.73197906e-08f + , 3.75577427e-08f, 2.98096001e-08f, 2.36598953e-08f, 1.87788713e-08f + , 1.49048001e-08f, 1.18299476e-08f, 9.38943567e-09f, 7.45240003e-09f + , 5.91497382e-09f, 4.69471784e-09f, 3.72620002e-09f, 2.95748691e-09f + , 2.34735892e-09f, 1.86310001e-09f, 1.47874346e-09f, 1.17367946e-09f + , 9.31550004e-10f, 7.39371728e-10f, 5.86839729e-10f, 0.00000000e+00f } , { - 4.88340862e-04, 3.87596399e-04, 3.07635466e-04, 2.44170431e-04 - , 1.93798199e-04, 1.53817733e-04, 1.22085215e-04, 9.68990997e-05 - , 7.69088664e-05, 6.10426077e-05, 4.84495499e-05, 3.84544332e-05 - , 3.05213039e-05, 2.42247749e-05, 1.92272166e-05, 1.52606519e-05 - , 1.21123875e-05, 9.61360830e-06, 7.63032597e-06, 6.05619373e-06 - , 4.80680415e-06, 3.81516298e-06, 3.02809687e-06, 2.40340208e-06 - , 1.90758149e-06, 1.51404843e-06, 1.20170104e-06, 9.53790746e-07 - , 7.57024217e-07, 6.00850519e-07, 4.76895373e-07, 3.78512108e-07 - , 3.00425260e-07, 2.38447686e-07, 1.89256054e-07, 1.50212630e-07 - , 1.19223843e-07, 9.46280271e-08, 7.51063149e-08, 5.96119216e-08 - , 4.73140135e-08, 3.75531574e-08, 2.98059608e-08, 2.36570068e-08 - , 1.87765787e-08, 1.49029804e-08, 1.18285034e-08, 9.38828936e-09 - , 7.45149020e-09, 5.91425169e-09, 4.69414468e-09, 3.72574510e-09 - , 2.95712585e-09, 2.34707234e-09, 1.86287255e-09, 1.47856292e-09 - , 1.17353617e-09, 9.31436275e-10, 7.39281462e-10, 5.86768085e-10 - , 4.65718138e-10, 3.69640731e-10, 2.93384042e-10, 0.00000000e+00 + 4.88340862e-04f, 3.87596399e-04f, 3.07635466e-04f, 2.44170431e-04f + , 1.93798199e-04f, 1.53817733e-04f, 1.22085215e-04f, 9.68990997e-05f + , 7.69088664e-05f, 6.10426077e-05f, 4.84495499e-05f, 3.84544332e-05f + , 3.05213039e-05f, 2.42247749e-05f, 1.92272166e-05f, 1.52606519e-05f + , 1.21123875e-05f, 9.61360830e-06f, 7.63032597e-06f, 6.05619373e-06f + , 4.80680415e-06f, 3.81516298e-06f, 3.02809687e-06f, 2.40340208e-06f + , 1.90758149e-06f, 1.51404843e-06f, 1.20170104e-06f, 9.53790746e-07f + , 7.57024217e-07f, 6.00850519e-07f, 4.76895373e-07f, 3.78512108e-07f + , 3.00425260e-07f, 2.38447686e-07f, 1.89256054e-07f, 1.50212630e-07f + , 1.19223843e-07f, 9.46280271e-08f, 7.51063149e-08f, 5.96119216e-08f + , 4.73140135e-08f, 3.75531574e-08f, 2.98059608e-08f, 2.36570068e-08f + , 1.87765787e-08f, 1.49029804e-08f, 1.18285034e-08f, 9.38828936e-09f + , 7.45149020e-09f, 5.91425169e-09f, 4.69414468e-09f, 3.72574510e-09f + , 2.95712585e-09f, 2.34707234e-09f, 1.86287255e-09f, 1.47856292e-09f + , 1.17353617e-09f, 9.31436275e-10f, 7.39281462e-10f, 5.86768085e-10f + , 4.65718138e-10f, 3.69640731e-10f, 2.93384042e-10f, 0.00000000e+00f } , { - 2.44155527e-04, 1.93786370e-04, 1.53808344e-04, 1.22077764e-04 - , 9.68931851e-05, 7.69041720e-05, 6.10388818e-05, 4.84465926e-05 - , 3.84520860e-05, 3.05194409e-05, 2.42232963e-05, 1.92260430e-05 - , 1.52597204e-05, 1.21116481e-05, 9.61302150e-06, 7.62986022e-06 - , 6.05582407e-06, 4.80651075e-06, 3.81493011e-06, 3.02791204e-06 - , 2.40325538e-06, 1.90746506e-06, 1.51395602e-06, 1.20162769e-06 - , 9.53732528e-07, 7.56978009e-07, 6.00813844e-07, 4.76866264e-07 - , 3.78489004e-07, 3.00406922e-07, 2.38433132e-07, 1.89244502e-07 - , 1.50203461e-07, 1.19216566e-07, 9.46222511e-08, 7.51017305e-08 - , 5.96082830e-08, 4.73111256e-08, 3.75508652e-08, 2.98041415e-08 - , 2.36555628e-08, 1.87754326e-08, 1.49020707e-08, 1.18277814e-08 - , 9.38771631e-09, 7.45103537e-09, 5.91389069e-09, 4.69385815e-09 - , 3.72551769e-09, 2.95694535e-09, 2.34692908e-09, 1.86275884e-09 - , 1.47847267e-09, 1.17346454e-09, 9.31379422e-10, 7.39236337e-10 - , 5.86732269e-10, 4.65689711e-10, 3.69618168e-10, 2.93366135e-10 - , 2.32844855e-10, 1.84809084e-10, 1.46683067e-10, 0.00000000e+00 + 2.44155527e-04f, 1.93786370e-04f, 1.53808344e-04f, 1.22077764e-04f + , 9.68931851e-05f, 7.69041720e-05f, 6.10388818e-05f, 4.84465926e-05f + , 3.84520860e-05f, 3.05194409e-05f, 2.42232963e-05f, 1.92260430e-05f + , 1.52597204e-05f, 1.21116481e-05f, 9.61302150e-06f, 7.62986022e-06f + , 6.05582407e-06f, 4.80651075e-06f, 3.81493011e-06f, 3.02791204e-06f + , 2.40325538e-06f, 1.90746506e-06f, 1.51395602e-06f, 1.20162769e-06f + , 9.53732528e-07f, 7.56978009e-07f, 6.00813844e-07f, 4.76866264e-07f + , 3.78489004e-07f, 3.00406922e-07f, 2.38433132e-07f, 1.89244502e-07f + , 1.50203461e-07f, 1.19216566e-07f, 9.46222511e-08f, 7.51017305e-08f + , 5.96082830e-08f, 4.73111256e-08f, 3.75508652e-08f, 2.98041415e-08f + , 2.36555628e-08f, 1.87754326e-08f, 1.49020707e-08f, 1.18277814e-08f + , 9.38771631e-09f, 7.45103537e-09f, 5.91389069e-09f, 4.69385815e-09f + , 3.72551769e-09f, 2.95694535e-09f, 2.34692908e-09f, 1.86275884e-09f + , 1.47847267e-09f, 1.17346454e-09f, 9.31379422e-10f, 7.39236337e-10f + , 5.86732269e-10f, 4.65689711e-10f, 3.69618168e-10f, 2.93366135e-10f + , 2.32844855e-10f, 1.84809084e-10f, 1.46683067e-10f, 0.00000000e+00f } , { - 1.22074038e-04, 9.68902281e-05, 7.69018250e-05, 6.10370190e-05 - , 4.84451140e-05, 3.84509125e-05, 3.05185095e-05, 2.42225570e-05 - , 1.92254563e-05, 1.52592547e-05, 1.21112785e-05, 9.61272813e-06 - , 7.62962737e-06, 6.05563926e-06, 4.80636406e-06, 3.81481368e-06 - , 3.02781963e-06, 2.40318203e-06, 1.90740684e-06, 1.51390981e-06 - , 1.20159102e-06, 9.53703421e-07, 7.56954907e-07, 6.00795508e-07 - , 4.76851711e-07, 3.78477453e-07, 3.00397754e-07, 2.38425855e-07 - , 1.89238727e-07, 1.50198877e-07, 1.19212928e-07, 9.46193634e-08 - , 7.50994385e-08, 5.96064638e-08, 4.73096817e-08, 3.75497192e-08 - , 2.98032319e-08, 2.36548408e-08, 1.87748596e-08, 1.49016160e-08 - , 1.18274204e-08, 9.38742981e-09, 7.45080798e-09, 5.91371021e-09 - , 4.69371490e-09, 3.72540399e-09, 2.95685511e-09, 2.34685745e-09 - , 1.86270199e-09, 1.47842755e-09, 1.17342873e-09, 9.31350997e-10 - , 7.39213776e-10, 5.86714363e-10, 4.65675499e-10, 3.69606888e-10 - , 2.93357182e-10, 2.32837749e-10, 1.84803444e-10, 1.46678591e-10 - , 1.16418875e-10, 9.24017220e-11, 7.33392954e-11, 0.00000000e+00 + 1.22074038e-04f, 9.68902281e-05f, 7.69018250e-05f, 6.10370190e-05f + , 4.84451140e-05f, 3.84509125e-05f, 3.05185095e-05f, 2.42225570e-05f + , 1.92254563e-05f, 1.52592547e-05f, 1.21112785e-05f, 9.61272813e-06f + , 7.62962737e-06f, 6.05563926e-06f, 4.80636406e-06f, 3.81481368e-06f + , 3.02781963e-06f, 2.40318203e-06f, 1.90740684e-06f, 1.51390981e-06f + , 1.20159102e-06f, 9.53703421e-07f, 7.56954907e-07f, 6.00795508e-07f + , 4.76851711e-07f, 3.78477453e-07f, 3.00397754e-07f, 2.38425855e-07f + , 1.89238727e-07f, 1.50198877e-07f, 1.19212928e-07f, 9.46193634e-08f + , 7.50994385e-08f, 5.96064638e-08f, 4.73096817e-08f, 3.75497192e-08f + , 2.98032319e-08f, 2.36548408e-08f, 1.87748596e-08f, 1.49016160e-08f + , 1.18274204e-08f, 9.38742981e-09f, 7.45080798e-09f, 5.91371021e-09f + , 4.69371490e-09f, 3.72540399e-09f, 2.95685511e-09f, 2.34685745e-09f + , 1.86270199e-09f, 1.47842755e-09f, 1.17342873e-09f, 9.31350997e-10f + , 7.39213776e-10f, 5.86714363e-10f, 4.65675499e-10f, 3.69606888e-10f + , 2.93357182e-10f, 2.32837749e-10f, 1.84803444e-10f, 1.46678591e-10f + , 1.16418875e-10f, 9.24017220e-11f, 7.33392954e-11f, 0.00000000e+00f } , { - 6.10360876e-05, 4.84443748e-05, 3.84503258e-05, 3.05180438e-05 - , 2.42221874e-05, 1.92251629e-05, 1.52590219e-05, 1.21110937e-05 - , 9.61258144e-06, 7.62951095e-06, 6.05554685e-06, 4.80629072e-06 - , 3.81475547e-06, 3.02777343e-06, 2.40314536e-06, 1.90737774e-06 - , 1.51388671e-06, 1.20157268e-06, 9.53688869e-07, 7.56943357e-07 - , 6.00786340e-07, 4.76844434e-07, 3.78471678e-07, 3.00393170e-07 - , 2.38422217e-07, 1.89235839e-07, 1.50196585e-07, 1.19211109e-07 - , 9.46179196e-08, 7.50982925e-08, 5.96055543e-08, 4.73089598e-08 - , 3.75491463e-08, 2.98027771e-08, 2.36544799e-08, 1.87745731e-08 - , 1.49013886e-08, 1.18272399e-08, 9.38728657e-09, 7.45069429e-09 - , 5.91361997e-09, 4.69364328e-09, 3.72534714e-09, 2.95680999e-09 - , 2.34682164e-09, 1.86267357e-09, 1.47840499e-09, 1.17341082e-09 - , 9.31336786e-10, 7.39202497e-10, 5.86705410e-10, 4.65668393e-10 - , 3.69601248e-10, 2.93352705e-10, 2.32834196e-10, 1.84800624e-10 - , 1.46676353e-10, 1.16417098e-10, 9.24003121e-11, 7.33381763e-11 - , 5.82085491e-11, 4.62001560e-11, 3.66690882e-11, 0.00000000e+00 + 6.10360876e-05f, 4.84443748e-05f, 3.84503258e-05f, 3.05180438e-05f + , 2.42221874e-05f, 1.92251629e-05f, 1.52590219e-05f, 1.21110937e-05f + , 9.61258144e-06f, 7.62951095e-06f, 6.05554685e-06f, 4.80629072e-06f + , 3.81475547e-06f, 3.02777343e-06f, 2.40314536e-06f, 1.90737774e-06f + , 1.51388671e-06f, 1.20157268e-06f, 9.53688869e-07f, 7.56943357e-07f + , 6.00786340e-07f, 4.76844434e-07f, 3.78471678e-07f, 3.00393170e-07f + , 2.38422217e-07f, 1.89235839e-07f, 1.50196585e-07f, 1.19211109e-07f + , 9.46179196e-08f, 7.50982925e-08f, 5.96055543e-08f, 4.73089598e-08f + , 3.75491463e-08f, 2.98027771e-08f, 2.36544799e-08f, 1.87745731e-08f + , 1.49013886e-08f, 1.18272399e-08f, 9.38728657e-09f, 7.45069429e-09f + , 5.91361997e-09f, 4.69364328e-09f, 3.72534714e-09f, 2.95680999e-09f + , 2.34682164e-09f, 1.86267357e-09f, 1.47840499e-09f, 1.17341082e-09f + , 9.31336786e-10f, 7.39202497e-10f, 5.86705410e-10f, 4.65668393e-10f + , 3.69601248e-10f, 2.93352705e-10f, 2.32834196e-10f, 1.84800624e-10f + , 1.46676353e-10f, 1.16417098e-10f, 9.24003121e-11f, 7.33381763e-11f + , 5.82085491e-11f, 4.62001560e-11f, 3.66690882e-11f, 0.00000000e+00f } , { - -1.60000000e+00, -1.26992084e+00, -1.00793684e+00, -8.00000000e-01 - , -6.34960421e-01, -5.03968420e-01, -4.00000000e-01, -3.17480210e-01 - , -2.51984210e-01, -2.00000000e-01, -1.58740105e-01, -1.25992105e-01 - , -1.00000000e-01, -7.93700526e-02, -6.29960525e-02, -5.00000000e-02 - , -3.96850263e-02, -3.14980262e-02, -2.50000000e-02, -1.98425131e-02 - , -1.57490131e-02, -1.25000000e-02, -9.92125657e-03, -7.87450656e-03 - , -6.25000000e-03, -4.96062829e-03, -3.93725328e-03, -3.12500000e-03 - , -2.48031414e-03, -1.96862664e-03, -1.56250000e-03, -1.24015707e-03 - , -9.84313320e-04, -7.81250000e-04, -6.20078536e-04, -4.92156660e-04 - , -3.90625000e-04, -3.10039268e-04, -2.46078330e-04, -1.95312500e-04 - , -1.55019634e-04, -1.23039165e-04, -9.76562500e-05, -7.75098170e-05 - , -6.15195825e-05, -4.88281250e-05, -3.87549085e-05, -3.07597913e-05 - , -2.44140625e-05, -1.93774542e-05, -1.53798956e-05, -1.22070313e-05 - , -9.68872712e-06, -7.68994781e-06, -6.10351563e-06, -4.84436356e-06 - , -3.84497391e-06, -3.05175781e-06, -2.42218178e-06, -1.92248695e-06 - , -1.52587891e-06, -1.21109089e-06, -9.61243477e-07, 0.00000000e+00 + -1.60000000e+00f, -1.26992084e+00f, -1.00793684e+00f, -8.00000000e-01f + , -6.34960421e-01f, -5.03968420e-01f, -4.00000000e-01f, -3.17480210e-01f + , -2.51984210e-01f, -2.00000000e-01f, -1.58740105e-01f, -1.25992105e-01f + , -1.00000000e-01f, -7.93700526e-02f, -6.29960525e-02f, -5.00000000e-02f + , -3.96850263e-02f, -3.14980262e-02f, -2.50000000e-02f, -1.98425131e-02f + , -1.57490131e-02f, -1.25000000e-02f, -9.92125657e-03f, -7.87450656e-03f + , -6.25000000e-03f, -4.96062829e-03f, -3.93725328e-03f, -3.12500000e-03f + , -2.48031414e-03f, -1.96862664e-03f, -1.56250000e-03f, -1.24015707e-03f + , -9.84313320e-04f, -7.81250000e-04f, -6.20078536e-04f, -4.92156660e-04f + , -3.90625000e-04f, -3.10039268e-04f, -2.46078330e-04f, -1.95312500e-04f + , -1.55019634e-04f, -1.23039165e-04f, -9.76562500e-05f, -7.75098170e-05f + , -6.15195825e-05f, -4.88281250e-05f, -3.87549085e-05f, -3.07597913e-05f + , -2.44140625e-05f, -1.93774542e-05f, -1.53798956e-05f, -1.22070313e-05f + , -9.68872712e-06f, -7.68994781e-06f, -6.10351563e-06f, -4.84436356e-06f + , -3.84497391e-06f, -3.05175781e-06f, -2.42218178e-06f, -1.92248695e-06f + , -1.52587891e-06f, -1.21109089e-06f, -9.61243477e-07f, 0.00000000e+00f } , { - -8.00000000e-01, -6.34960421e-01, -5.03968420e-01, -4.00000000e-01 - , -3.17480210e-01, -2.51984210e-01, -2.00000000e-01, -1.58740105e-01 - , -1.25992105e-01, -1.00000000e-01, -7.93700526e-02, -6.29960525e-02 - , -5.00000000e-02, -3.96850263e-02, -3.14980262e-02, -2.50000000e-02 - , -1.98425131e-02, -1.57490131e-02, -1.25000000e-02, -9.92125657e-03 - , -7.87450656e-03, -6.25000000e-03, -4.96062829e-03, -3.93725328e-03 - , -3.12500000e-03, -2.48031414e-03, -1.96862664e-03, -1.56250000e-03 - , -1.24015707e-03, -9.84313320e-04, -7.81250000e-04, -6.20078536e-04 - , -4.92156660e-04, -3.90625000e-04, -3.10039268e-04, -2.46078330e-04 - , -1.95312500e-04, -1.55019634e-04, -1.23039165e-04, -9.76562500e-05 - , -7.75098170e-05, -6.15195825e-05, -4.88281250e-05, -3.87549085e-05 - , -3.07597913e-05, -2.44140625e-05, -1.93774542e-05, -1.53798956e-05 - , -1.22070313e-05, -9.68872712e-06, -7.68994781e-06, -6.10351563e-06 - , -4.84436356e-06, -3.84497391e-06, -3.05175781e-06, -2.42218178e-06 - , -1.92248695e-06, -1.52587891e-06, -1.21109089e-06, -9.61243477e-07 - , -7.62939453e-07, -6.05545445e-07, -4.80621738e-07, 0.00000000e+00 + -8.00000000e-01f, -6.34960421e-01f, -5.03968420e-01f, -4.00000000e-01f + , -3.17480210e-01f, -2.51984210e-01f, -2.00000000e-01f, -1.58740105e-01f + , -1.25992105e-01f, -1.00000000e-01f, -7.93700526e-02f, -6.29960525e-02f + , -5.00000000e-02f, -3.96850263e-02f, -3.14980262e-02f, -2.50000000e-02f + , -1.98425131e-02f, -1.57490131e-02f, -1.25000000e-02f, -9.92125657e-03f + , -7.87450656e-03f, -6.25000000e-03f, -4.96062829e-03f, -3.93725328e-03f + , -3.12500000e-03f, -2.48031414e-03f, -1.96862664e-03f, -1.56250000e-03f + , -1.24015707e-03f, -9.84313320e-04f, -7.81250000e-04f, -6.20078536e-04f + , -4.92156660e-04f, -3.90625000e-04f, -3.10039268e-04f, -2.46078330e-04f + , -1.95312500e-04f, -1.55019634e-04f, -1.23039165e-04f, -9.76562500e-05f + , -7.75098170e-05f, -6.15195825e-05f, -4.88281250e-05f, -3.87549085e-05f + , -3.07597913e-05f, -2.44140625e-05f, -1.93774542e-05f, -1.53798956e-05f + , -1.22070313e-05f, -9.68872712e-06f, -7.68994781e-06f, -6.10351563e-06f + , -4.84436356e-06f, -3.84497391e-06f, -3.05175781e-06f, -2.42218178e-06f + , -1.92248695e-06f, -1.52587891e-06f, -1.21109089e-06f, -9.61243477e-07f + , -7.62939453e-07f, -6.05545445e-07f, -4.80621738e-07f, 0.00000000e+00f } , { - 8.00000000e-01, 6.34960421e-01, 5.03968420e-01, 4.00000000e-01 - , 3.17480210e-01, 2.51984210e-01, 2.00000000e-01, 1.58740105e-01 - , 1.25992105e-01, 1.00000000e-01, 7.93700526e-02, 6.29960525e-02 - , 5.00000000e-02, 3.96850263e-02, 3.14980262e-02, 2.50000000e-02 - , 1.98425131e-02, 1.57490131e-02, 1.25000000e-02, 9.92125657e-03 - , 7.87450656e-03, 6.25000000e-03, 4.96062829e-03, 3.93725328e-03 - , 3.12500000e-03, 2.48031414e-03, 1.96862664e-03, 1.56250000e-03 - , 1.24015707e-03, 9.84313320e-04, 7.81250000e-04, 6.20078536e-04 - , 4.92156660e-04, 3.90625000e-04, 3.10039268e-04, 2.46078330e-04 - , 1.95312500e-04, 1.55019634e-04, 1.23039165e-04, 9.76562500e-05 - , 7.75098170e-05, 6.15195825e-05, 4.88281250e-05, 3.87549085e-05 - , 3.07597913e-05, 2.44140625e-05, 1.93774542e-05, 1.53798956e-05 - , 1.22070313e-05, 9.68872712e-06, 7.68994781e-06, 6.10351563e-06 - , 4.84436356e-06, 3.84497391e-06, 3.05175781e-06, 2.42218178e-06 - , 1.92248695e-06, 1.52587891e-06, 1.21109089e-06, 9.61243477e-07 - , 7.62939453e-07, 6.05545445e-07, 4.80621738e-07, 0.00000000e+00 + 8.00000000e-01f, 6.34960421e-01f, 5.03968420e-01f, 4.00000000e-01f + , 3.17480210e-01f, 2.51984210e-01f, 2.00000000e-01f, 1.58740105e-01f + , 1.25992105e-01f, 1.00000000e-01f, 7.93700526e-02f, 6.29960525e-02f + , 5.00000000e-02f, 3.96850263e-02f, 3.14980262e-02f, 2.50000000e-02f + , 1.98425131e-02f, 1.57490131e-02f, 1.25000000e-02f, 9.92125657e-03f + , 7.87450656e-03f, 6.25000000e-03f, 4.96062829e-03f, 3.93725328e-03f + , 3.12500000e-03f, 2.48031414e-03f, 1.96862664e-03f, 1.56250000e-03f + , 1.24015707e-03f, 9.84313320e-04f, 7.81250000e-04f, 6.20078536e-04f + , 4.92156660e-04f, 3.90625000e-04f, 3.10039268e-04f, 2.46078330e-04f + , 1.95312500e-04f, 1.55019634e-04f, 1.23039165e-04f, 9.76562500e-05f + , 7.75098170e-05f, 6.15195825e-05f, 4.88281250e-05f, 3.87549085e-05f + , 3.07597913e-05f, 2.44140625e-05f, 1.93774542e-05f, 1.53798956e-05f + , 1.22070313e-05f, 9.68872712e-06f, 7.68994781e-06f, 6.10351563e-06f + , 4.84436356e-06f, 3.84497391e-06f, 3.05175781e-06f, 2.42218178e-06f + , 1.92248695e-06f, 1.52587891e-06f, 1.21109089e-06f, 9.61243477e-07f + , 7.62939453e-07f, 6.05545445e-07f, 4.80621738e-07f, 0.00000000e+00f } , { - 1.60000000e+00, 1.26992084e+00, 1.00793684e+00, 8.00000000e-01 - , 6.34960421e-01, 5.03968420e-01, 4.00000000e-01, 3.17480210e-01 - , 2.51984210e-01, 2.00000000e-01, 1.58740105e-01, 1.25992105e-01 - , 1.00000000e-01, 7.93700526e-02, 6.29960525e-02, 5.00000000e-02 - , 3.96850263e-02, 3.14980262e-02, 2.50000000e-02, 1.98425131e-02 - , 1.57490131e-02, 1.25000000e-02, 9.92125657e-03, 7.87450656e-03 - , 6.25000000e-03, 4.96062829e-03, 3.93725328e-03, 3.12500000e-03 - , 2.48031414e-03, 1.96862664e-03, 1.56250000e-03, 1.24015707e-03 - , 9.84313320e-04, 7.81250000e-04, 6.20078536e-04, 4.92156660e-04 - , 3.90625000e-04, 3.10039268e-04, 2.46078330e-04, 1.95312500e-04 - , 1.55019634e-04, 1.23039165e-04, 9.76562500e-05, 7.75098170e-05 - , 6.15195825e-05, 4.88281250e-05, 3.87549085e-05, 3.07597913e-05 - , 2.44140625e-05, 1.93774542e-05, 1.53798956e-05, 1.22070313e-05 - , 9.68872712e-06, 7.68994781e-06, 6.10351563e-06, 4.84436356e-06 - , 3.84497391e-06, 3.05175781e-06, 2.42218178e-06, 1.92248695e-06 - , 1.52587891e-06, 1.21109089e-06, 9.61243477e-07, 0.00000000e+00 + 1.60000000e+00f, 1.26992084e+00f, 1.00793684e+00f, 8.00000000e-01f + , 6.34960421e-01f, 5.03968420e-01f, 4.00000000e-01f, 3.17480210e-01f + , 2.51984210e-01f, 2.00000000e-01f, 1.58740105e-01f, 1.25992105e-01f + , 1.00000000e-01f, 7.93700526e-02f, 6.29960525e-02f, 5.00000000e-02f + , 3.96850263e-02f, 3.14980262e-02f, 2.50000000e-02f, 1.98425131e-02f + , 1.57490131e-02f, 1.25000000e-02f, 9.92125657e-03f, 7.87450656e-03f + , 6.25000000e-03f, 4.96062829e-03f, 3.93725328e-03f, 3.12500000e-03f + , 2.48031414e-03f, 1.96862664e-03f, 1.56250000e-03f, 1.24015707e-03f + , 9.84313320e-04f, 7.81250000e-04f, 6.20078536e-04f, 4.92156660e-04f + , 3.90625000e-04f, 3.10039268e-04f, 2.46078330e-04f, 1.95312500e-04f + , 1.55019634e-04f, 1.23039165e-04f, 9.76562500e-05f, 7.75098170e-05f + , 6.15195825e-05f, 4.88281250e-05f, 3.87549085e-05f, 3.07597913e-05f + , 2.44140625e-05f, 1.93774542e-05f, 1.53798956e-05f, 1.22070313e-05f + , 9.68872712e-06f, 7.68994781e-06f, 6.10351563e-06f, 4.84436356e-06f + , 3.84497391e-06f, 3.05175781e-06f, 2.42218178e-06f, 1.92248695e-06f + , 1.52587891e-06f, 1.21109089e-06f, 9.61243477e-07f, 0.00000000e+00f } , { - -1.77777778e+00, -1.41102316e+00, -1.11992982e+00, -8.88888889e-01 - , -7.05511579e-01, -5.59964911e-01, -4.44444444e-01, -3.52755789e-01 - , -2.79982456e-01, -2.22222222e-01, -1.76377895e-01, -1.39991228e-01 - , -1.11111111e-01, -8.81889473e-02, -6.99956139e-02, -5.55555556e-02 - , -4.40944737e-02, -3.49978069e-02, -2.77777778e-02, -2.20472368e-02 - , -1.74989035e-02, -1.38888889e-02, -1.10236184e-02, -8.74945174e-03 - , -6.94444444e-03, -5.51180921e-03, -4.37472587e-03, -3.47222222e-03 - , -2.75590460e-03, -2.18736293e-03, -1.73611111e-03, -1.37795230e-03 - , -1.09368147e-03, -8.68055556e-04, -6.88976151e-04, -5.46840733e-04 - , -4.34027778e-04, -3.44488076e-04, -2.73420367e-04, -2.17013889e-04 - , -1.72244038e-04, -1.36710183e-04, -1.08506944e-04, -8.61220189e-05 - , -6.83550917e-05, -5.42534722e-05, -4.30610094e-05, -3.41775458e-05 - , -2.71267361e-05, -2.15305047e-05, -1.70887729e-05, -1.35633681e-05 - , -1.07652524e-05, -8.54438646e-06, -6.78168403e-06, -5.38262618e-06 - , -4.27219323e-06, -3.39084201e-06, -2.69131309e-06, -2.13609662e-06 - , -1.69542101e-06, -1.34565654e-06, -1.06804831e-06, 0.00000000e+00 + -1.77777778e+00f, -1.41102316e+00f, -1.11992982e+00f, -8.88888889e-01f + , -7.05511579e-01f, -5.59964911e-01f, -4.44444444e-01f, -3.52755789e-01f + , -2.79982456e-01f, -2.22222222e-01f, -1.76377895e-01f, -1.39991228e-01f + , -1.11111111e-01f, -8.81889473e-02f, -6.99956139e-02f, -5.55555556e-02f + , -4.40944737e-02f, -3.49978069e-02f, -2.77777778e-02f, -2.20472368e-02f + , -1.74989035e-02f, -1.38888889e-02f, -1.10236184e-02f, -8.74945174e-03f + , -6.94444444e-03f, -5.51180921e-03f, -4.37472587e-03f, -3.47222222e-03f + , -2.75590460e-03f, -2.18736293e-03f, -1.73611111e-03f, -1.37795230e-03f + , -1.09368147e-03f, -8.68055556e-04f, -6.88976151e-04f, -5.46840733e-04f + , -4.34027778e-04f, -3.44488076e-04f, -2.73420367e-04f, -2.17013889e-04f + , -1.72244038e-04f, -1.36710183e-04f, -1.08506944e-04f, -8.61220189e-05f + , -6.83550917e-05f, -5.42534722e-05f, -4.30610094e-05f, -3.41775458e-05f + , -2.71267361e-05f, -2.15305047e-05f, -1.70887729e-05f, -1.35633681e-05f + , -1.07652524e-05f, -8.54438646e-06f, -6.78168403e-06f, -5.38262618e-06f + , -4.27219323e-06f, -3.39084201e-06f, -2.69131309e-06f, -2.13609662e-06f + , -1.69542101e-06f, -1.34565654e-06f, -1.06804831e-06f, 0.00000000e+00f } , { - -8.88888889e-01, -7.05511579e-01, -5.59964911e-01, -4.44444444e-01 - , -3.52755789e-01, -2.79982456e-01, -2.22222222e-01, -1.76377895e-01 - , -1.39991228e-01, -1.11111111e-01, -8.81889473e-02, -6.99956139e-02 - , -5.55555556e-02, -4.40944737e-02, -3.49978069e-02, -2.77777778e-02 - , -2.20472368e-02, -1.74989035e-02, -1.38888889e-02, -1.10236184e-02 - , -8.74945174e-03, -6.94444444e-03, -5.51180921e-03, -4.37472587e-03 - , -3.47222222e-03, -2.75590460e-03, -2.18736293e-03, -1.73611111e-03 - , -1.37795230e-03, -1.09368147e-03, -8.68055556e-04, -6.88976151e-04 - , -5.46840733e-04, -4.34027778e-04, -3.44488076e-04, -2.73420367e-04 - , -2.17013889e-04, -1.72244038e-04, -1.36710183e-04, -1.08506944e-04 - , -8.61220189e-05, -6.83550917e-05, -5.42534722e-05, -4.30610094e-05 - , -3.41775458e-05, -2.71267361e-05, -2.15305047e-05, -1.70887729e-05 - , -1.35633681e-05, -1.07652524e-05, -8.54438646e-06, -6.78168403e-06 - , -5.38262618e-06, -4.27219323e-06, -3.39084201e-06, -2.69131309e-06 - , -2.13609662e-06, -1.69542101e-06, -1.34565654e-06, -1.06804831e-06 - , -8.47710503e-07, -6.72828272e-07, -5.34024154e-07, 0.00000000e+00 + -8.88888889e-01f, -7.05511579e-01f, -5.59964911e-01f, -4.44444444e-01f + , -3.52755789e-01f, -2.79982456e-01f, -2.22222222e-01f, -1.76377895e-01f + , -1.39991228e-01f, -1.11111111e-01f, -8.81889473e-02f, -6.99956139e-02f + , -5.55555556e-02f, -4.40944737e-02f, -3.49978069e-02f, -2.77777778e-02f + , -2.20472368e-02f, -1.74989035e-02f, -1.38888889e-02f, -1.10236184e-02f + , -8.74945174e-03f, -6.94444444e-03f, -5.51180921e-03f, -4.37472587e-03f + , -3.47222222e-03f, -2.75590460e-03f, -2.18736293e-03f, -1.73611111e-03f + , -1.37795230e-03f, -1.09368147e-03f, -8.68055556e-04f, -6.88976151e-04f + , -5.46840733e-04f, -4.34027778e-04f, -3.44488076e-04f, -2.73420367e-04f + , -2.17013889e-04f, -1.72244038e-04f, -1.36710183e-04f, -1.08506944e-04f + , -8.61220189e-05f, -6.83550917e-05f, -5.42534722e-05f, -4.30610094e-05f + , -3.41775458e-05f, -2.71267361e-05f, -2.15305047e-05f, -1.70887729e-05f + , -1.35633681e-05f, -1.07652524e-05f, -8.54438646e-06f, -6.78168403e-06f + , -5.38262618e-06f, -4.27219323e-06f, -3.39084201e-06f, -2.69131309e-06f + , -2.13609662e-06f, -1.69542101e-06f, -1.34565654e-06f, -1.06804831e-06f + , -8.47710503e-07f, -6.72828272e-07f, -5.34024154e-07f, 0.00000000e+00f } , { - -4.44444444e-01, -3.52755789e-01, -2.79982456e-01, -2.22222222e-01 - , -1.76377895e-01, -1.39991228e-01, -1.11111111e-01, -8.81889473e-02 - , -6.99956139e-02, -5.55555556e-02, -4.40944737e-02, -3.49978069e-02 - , -2.77777778e-02, -2.20472368e-02, -1.74989035e-02, -1.38888889e-02 - , -1.10236184e-02, -8.74945174e-03, -6.94444444e-03, -5.51180921e-03 - , -4.37472587e-03, -3.47222222e-03, -2.75590460e-03, -2.18736293e-03 - , -1.73611111e-03, -1.37795230e-03, -1.09368147e-03, -8.68055556e-04 - , -6.88976151e-04, -5.46840733e-04, -4.34027778e-04, -3.44488076e-04 - , -2.73420367e-04, -2.17013889e-04, -1.72244038e-04, -1.36710183e-04 - , -1.08506944e-04, -8.61220189e-05, -6.83550917e-05, -5.42534722e-05 - , -4.30610094e-05, -3.41775458e-05, -2.71267361e-05, -2.15305047e-05 - , -1.70887729e-05, -1.35633681e-05, -1.07652524e-05, -8.54438646e-06 - , -6.78168403e-06, -5.38262618e-06, -4.27219323e-06, -3.39084201e-06 - , -2.69131309e-06, -2.13609662e-06, -1.69542101e-06, -1.34565654e-06 - , -1.06804831e-06, -8.47710503e-07, -6.72828272e-07, -5.34024154e-07 - , -4.23855252e-07, -3.36414136e-07, -2.67012077e-07, 0.00000000e+00 + -4.44444444e-01f, -3.52755789e-01f, -2.79982456e-01f, -2.22222222e-01f + , -1.76377895e-01f, -1.39991228e-01f, -1.11111111e-01f, -8.81889473e-02f + , -6.99956139e-02f, -5.55555556e-02f, -4.40944737e-02f, -3.49978069e-02f + , -2.77777778e-02f, -2.20472368e-02f, -1.74989035e-02f, -1.38888889e-02f + , -1.10236184e-02f, -8.74945174e-03f, -6.94444444e-03f, -5.51180921e-03f + , -4.37472587e-03f, -3.47222222e-03f, -2.75590460e-03f, -2.18736293e-03f + , -1.73611111e-03f, -1.37795230e-03f, -1.09368147e-03f, -8.68055556e-04f + , -6.88976151e-04f, -5.46840733e-04f, -4.34027778e-04f, -3.44488076e-04f + , -2.73420367e-04f, -2.17013889e-04f, -1.72244038e-04f, -1.36710183e-04f + , -1.08506944e-04f, -8.61220189e-05f, -6.83550917e-05f, -5.42534722e-05f + , -4.30610094e-05f, -3.41775458e-05f, -2.71267361e-05f, -2.15305047e-05f + , -1.70887729e-05f, -1.35633681e-05f, -1.07652524e-05f, -8.54438646e-06f + , -6.78168403e-06f, -5.38262618e-06f, -4.27219323e-06f, -3.39084201e-06f + , -2.69131309e-06f, -2.13609662e-06f, -1.69542101e-06f, -1.34565654e-06f + , -1.06804831e-06f, -8.47710503e-07f, -6.72828272e-07f, -5.34024154e-07f + , -4.23855252e-07f, -3.36414136e-07f, -2.67012077e-07f, 0.00000000e+00f } , { - 4.44444444e-01, 3.52755789e-01, 2.79982456e-01, 2.22222222e-01 - , 1.76377895e-01, 1.39991228e-01, 1.11111111e-01, 8.81889473e-02 - , 6.99956139e-02, 5.55555556e-02, 4.40944737e-02, 3.49978069e-02 - , 2.77777778e-02, 2.20472368e-02, 1.74989035e-02, 1.38888889e-02 - , 1.10236184e-02, 8.74945174e-03, 6.94444444e-03, 5.51180921e-03 - , 4.37472587e-03, 3.47222222e-03, 2.75590460e-03, 2.18736293e-03 - , 1.73611111e-03, 1.37795230e-03, 1.09368147e-03, 8.68055556e-04 - , 6.88976151e-04, 5.46840733e-04, 4.34027778e-04, 3.44488076e-04 - , 2.73420367e-04, 2.17013889e-04, 1.72244038e-04, 1.36710183e-04 - , 1.08506944e-04, 8.61220189e-05, 6.83550917e-05, 5.42534722e-05 - , 4.30610094e-05, 3.41775458e-05, 2.71267361e-05, 2.15305047e-05 - , 1.70887729e-05, 1.35633681e-05, 1.07652524e-05, 8.54438646e-06 - , 6.78168403e-06, 5.38262618e-06, 4.27219323e-06, 3.39084201e-06 - , 2.69131309e-06, 2.13609662e-06, 1.69542101e-06, 1.34565654e-06 - , 1.06804831e-06, 8.47710503e-07, 6.72828272e-07, 5.34024154e-07 - , 4.23855252e-07, 3.36414136e-07, 2.67012077e-07, 0.00000000e+00 + 4.44444444e-01f, 3.52755789e-01f, 2.79982456e-01f, 2.22222222e-01f + , 1.76377895e-01f, 1.39991228e-01f, 1.11111111e-01f, 8.81889473e-02f + , 6.99956139e-02f, 5.55555556e-02f, 4.40944737e-02f, 3.49978069e-02f + , 2.77777778e-02f, 2.20472368e-02f, 1.74989035e-02f, 1.38888889e-02f + , 1.10236184e-02f, 8.74945174e-03f, 6.94444444e-03f, 5.51180921e-03f + , 4.37472587e-03f, 3.47222222e-03f, 2.75590460e-03f, 2.18736293e-03f + , 1.73611111e-03f, 1.37795230e-03f, 1.09368147e-03f, 8.68055556e-04f + , 6.88976151e-04f, 5.46840733e-04f, 4.34027778e-04f, 3.44488076e-04f + , 2.73420367e-04f, 2.17013889e-04f, 1.72244038e-04f, 1.36710183e-04f + , 1.08506944e-04f, 8.61220189e-05f, 6.83550917e-05f, 5.42534722e-05f + , 4.30610094e-05f, 3.41775458e-05f, 2.71267361e-05f, 2.15305047e-05f + , 1.70887729e-05f, 1.35633681e-05f, 1.07652524e-05f, 8.54438646e-06f + , 6.78168403e-06f, 5.38262618e-06f, 4.27219323e-06f, 3.39084201e-06f + , 2.69131309e-06f, 2.13609662e-06f, 1.69542101e-06f, 1.34565654e-06f + , 1.06804831e-06f, 8.47710503e-07f, 6.72828272e-07f, 5.34024154e-07f + , 4.23855252e-07f, 3.36414136e-07f, 2.67012077e-07f, 0.00000000e+00f } , { - 8.88888889e-01, 7.05511579e-01, 5.59964911e-01, 4.44444444e-01 - , 3.52755789e-01, 2.79982456e-01, 2.22222222e-01, 1.76377895e-01 - , 1.39991228e-01, 1.11111111e-01, 8.81889473e-02, 6.99956139e-02 - , 5.55555556e-02, 4.40944737e-02, 3.49978069e-02, 2.77777778e-02 - , 2.20472368e-02, 1.74989035e-02, 1.38888889e-02, 1.10236184e-02 - , 8.74945174e-03, 6.94444444e-03, 5.51180921e-03, 4.37472587e-03 - , 3.47222222e-03, 2.75590460e-03, 2.18736293e-03, 1.73611111e-03 - , 1.37795230e-03, 1.09368147e-03, 8.68055556e-04, 6.88976151e-04 - , 5.46840733e-04, 4.34027778e-04, 3.44488076e-04, 2.73420367e-04 - , 2.17013889e-04, 1.72244038e-04, 1.36710183e-04, 1.08506944e-04 - , 8.61220189e-05, 6.83550917e-05, 5.42534722e-05, 4.30610094e-05 - , 3.41775458e-05, 2.71267361e-05, 2.15305047e-05, 1.70887729e-05 - , 1.35633681e-05, 1.07652524e-05, 8.54438646e-06, 6.78168403e-06 - , 5.38262618e-06, 4.27219323e-06, 3.39084201e-06, 2.69131309e-06 - , 2.13609662e-06, 1.69542101e-06, 1.34565654e-06, 1.06804831e-06 - , 8.47710503e-07, 6.72828272e-07, 5.34024154e-07, 0.00000000e+00 + 8.88888889e-01f, 7.05511579e-01f, 5.59964911e-01f, 4.44444444e-01f + , 3.52755789e-01f, 2.79982456e-01f, 2.22222222e-01f, 1.76377895e-01f + , 1.39991228e-01f, 1.11111111e-01f, 8.81889473e-02f, 6.99956139e-02f + , 5.55555556e-02f, 4.40944737e-02f, 3.49978069e-02f, 2.77777778e-02f + , 2.20472368e-02f, 1.74989035e-02f, 1.38888889e-02f, 1.10236184e-02f + , 8.74945174e-03f, 6.94444444e-03f, 5.51180921e-03f, 4.37472587e-03f + , 3.47222222e-03f, 2.75590460e-03f, 2.18736293e-03f, 1.73611111e-03f + , 1.37795230e-03f, 1.09368147e-03f, 8.68055556e-04f, 6.88976151e-04f + , 5.46840733e-04f, 4.34027778e-04f, 3.44488076e-04f, 2.73420367e-04f + , 2.17013889e-04f, 1.72244038e-04f, 1.36710183e-04f, 1.08506944e-04f + , 8.61220189e-05f, 6.83550917e-05f, 5.42534722e-05f, 4.30610094e-05f + , 3.41775458e-05f, 2.71267361e-05f, 2.15305047e-05f, 1.70887729e-05f + , 1.35633681e-05f, 1.07652524e-05f, 8.54438646e-06f, 6.78168403e-06f + , 5.38262618e-06f, 4.27219323e-06f, 3.39084201e-06f, 2.69131309e-06f + , 2.13609662e-06f, 1.69542101e-06f, 1.34565654e-06f, 1.06804831e-06f + , 8.47710503e-07f, 6.72828272e-07f, 5.34024154e-07f, 0.00000000e+00f } , { - 1.77777778e+00, 1.41102316e+00, 1.11992982e+00, 8.88888889e-01 - , 7.05511579e-01, 5.59964911e-01, 4.44444444e-01, 3.52755789e-01 - , 2.79982456e-01, 2.22222222e-01, 1.76377895e-01, 1.39991228e-01 - , 1.11111111e-01, 8.81889473e-02, 6.99956139e-02, 5.55555556e-02 - , 4.40944737e-02, 3.49978069e-02, 2.77777778e-02, 2.20472368e-02 - , 1.74989035e-02, 1.38888889e-02, 1.10236184e-02, 8.74945174e-03 - , 6.94444444e-03, 5.51180921e-03, 4.37472587e-03, 3.47222222e-03 - , 2.75590460e-03, 2.18736293e-03, 1.73611111e-03, 1.37795230e-03 - , 1.09368147e-03, 8.68055556e-04, 6.88976151e-04, 5.46840733e-04 - , 4.34027778e-04, 3.44488076e-04, 2.73420367e-04, 2.17013889e-04 - , 1.72244038e-04, 1.36710183e-04, 1.08506944e-04, 8.61220189e-05 - , 6.83550917e-05, 5.42534722e-05, 4.30610094e-05, 3.41775458e-05 - , 2.71267361e-05, 2.15305047e-05, 1.70887729e-05, 1.35633681e-05 - , 1.07652524e-05, 8.54438646e-06, 6.78168403e-06, 5.38262618e-06 - , 4.27219323e-06, 3.39084201e-06, 2.69131309e-06, 2.13609662e-06 - , 1.69542101e-06, 1.34565654e-06, 1.06804831e-06, 0.00000000e+00 + 1.77777778e+00f, 1.41102316e+00f, 1.11992982e+00f, 8.88888889e-01f + , 7.05511579e-01f, 5.59964911e-01f, 4.44444444e-01f, 3.52755789e-01f + , 2.79982456e-01f, 2.22222222e-01f, 1.76377895e-01f, 1.39991228e-01f + , 1.11111111e-01f, 8.81889473e-02f, 6.99956139e-02f, 5.55555556e-02f + , 4.40944737e-02f, 3.49978069e-02f, 2.77777778e-02f, 2.20472368e-02f + , 1.74989035e-02f, 1.38888889e-02f, 1.10236184e-02f, 8.74945174e-03f + , 6.94444444e-03f, 5.51180921e-03f, 4.37472587e-03f, 3.47222222e-03f + , 2.75590460e-03f, 2.18736293e-03f, 1.73611111e-03f, 1.37795230e-03f + , 1.09368147e-03f, 8.68055556e-04f, 6.88976151e-04f, 5.46840733e-04f + , 4.34027778e-04f, 3.44488076e-04f, 2.73420367e-04f, 2.17013889e-04f + , 1.72244038e-04f, 1.36710183e-04f, 1.08506944e-04f, 8.61220189e-05f + , 6.83550917e-05f, 5.42534722e-05f, 4.30610094e-05f, 3.41775458e-05f + , 2.71267361e-05f, 2.15305047e-05f, 1.70887729e-05f, 1.35633681e-05f + , 1.07652524e-05f, 8.54438646e-06f, 6.78168403e-06f, 5.38262618e-06f + , 4.27219323e-06f, 3.39084201e-06f, 2.69131309e-06f, 2.13609662e-06f + , 1.69542101e-06f, 1.34565654e-06f, 1.06804831e-06f, 0.00000000e+00f } }; diff --git a/src/libmpg123/l3tabs.h b/src/libmpg123/l3tabs.h index 7b41092..f52c97e 100644 --- a/src/libmpg123/l3tabs.h +++ b/src/libmpg123/l3tabs.h @@ -13,10 +13,10 @@ static ALIGNED(16) real aa_ca[8]; static ALIGNED(16) real aa_cs[8]; static ALIGNED(16) real win[4][36]; static ALIGNED(16) real win1[4][36]; -ALIGNED(16) real COS9[9]; +ALIGNED(16) real INT123_COS9[9]; static real COS6_1; static real COS6_2; -ALIGNED(16) real tfcos36[9]; +ALIGNED(16) real INT123_tfcos36[9]; static ALIGNED(16) real tfcos12[3]; static ALIGNED(16) real cos9[3]; static ALIGNED(16) real cos18[3]; @@ -47,2307 +47,2307 @@ static unsigned short i_slen2[256]; static const ALIGNED(16) real ispow[8207] = { - 0.00000000e+00, 1.00000000e+00, 2.51984210e+00, 4.32674871e+00 -, 6.34960421e+00, 8.54987973e+00, 1.09027236e+01, 1.33905183e+01 -, 1.60000000e+01, 1.87207544e+01, 2.15443469e+01, 2.44637810e+01 -, 2.74731418e+01, 3.05673509e+01, 3.37419917e+01, 3.69931811e+01 -, 4.03174736e+01, 4.37117870e+01, 4.71733451e+01, 5.06996313e+01 -, 5.42883523e+01, 5.79374077e+01, 6.16448653e+01, 6.54089405e+01 -, 6.92279794e+01, 7.31004435e+01, 7.70248978e+01, 8.10000000e+01 -, 8.50244912e+01, 8.90971879e+01, 9.32169752e+01, 9.73828002e+01 -, 1.01593667e+02, 1.05848633e+02, 1.10146801e+02, 1.14487321e+02 -, 1.18869381e+02, 1.23292209e+02, 1.27755065e+02, 1.32257246e+02 -, 1.36798076e+02, 1.41376907e+02, 1.45993119e+02, 1.50646117e+02 -, 1.55335327e+02, 1.60060199e+02, 1.64820202e+02, 1.69614826e+02 -, 1.74443577e+02, 1.79305980e+02, 1.84201575e+02, 1.89129918e+02 -, 1.94090580e+02, 1.99083145e+02, 2.04107210e+02, 2.09162385e+02 -, 2.14248292e+02, 2.19364564e+02, 2.24510845e+02, 2.29686789e+02 -, 2.34892058e+02, 2.40126328e+02, 2.45389280e+02, 2.50680604e+02 -, 2.56000000e+02, 2.61347174e+02, 2.66721841e+02, 2.72123723e+02 -, 2.77552547e+02, 2.83008049e+02, 2.88489971e+02, 2.93998060e+02 -, 2.99532071e+02, 3.05091761e+02, 3.10676898e+02, 3.16287249e+02 -, 3.21922592e+02, 3.27582707e+02, 3.33267377e+02, 3.38976394e+02 -, 3.44709550e+02, 3.50466646e+02, 3.56247482e+02, 3.62051866e+02 -, 3.67879608e+02, 3.73730522e+02, 3.79604427e+02, 3.85501143e+02 -, 3.91420496e+02, 3.97362314e+02, 4.03326427e+02, 4.09312672e+02 -, 4.15320884e+02, 4.21350905e+02, 4.27402579e+02, 4.33475750e+02 -, 4.39570269e+02, 4.45685987e+02, 4.51822757e+02, 4.57980436e+02 -, 4.64158883e+02, 4.70357960e+02, 4.76577530e+02, 4.82817459e+02 -, 4.89077615e+02, 4.95357868e+02, 5.01658090e+02, 5.07978156e+02 -, 5.14317941e+02, 5.20677324e+02, 5.27056184e+02, 5.33454404e+02 -, 5.39871867e+02, 5.46308458e+02, 5.52764065e+02, 5.59238575e+02 -, 5.65731879e+02, 5.72243870e+02, 5.78774440e+02, 5.85323483e+02 -, 5.91890898e+02, 5.98476581e+02, 6.05080431e+02, 6.11702349e+02 -, 6.18342238e+02, 6.25000000e+02, 6.31675540e+02, 6.38368763e+02 -, 6.45079578e+02, 6.51807891e+02, 6.58553612e+02, 6.65316653e+02 -, 6.72096925e+02, 6.78894340e+02, 6.85708813e+02, 6.92540258e+02 -, 6.99388593e+02, 7.06253733e+02, 7.13135597e+02, 7.20034104e+02 -, 7.26949174e+02, 7.33880729e+02, 7.40828689e+02, 7.47792979e+02 -, 7.54773522e+02, 7.61770242e+02, 7.68783065e+02, 7.75811917e+02 -, 7.82856726e+02, 7.89917420e+02, 7.96993927e+02, 8.04086177e+02 -, 8.11194101e+02, 8.18317630e+02, 8.25456695e+02, 8.32611230e+02 -, 8.39781167e+02, 8.46966442e+02, 8.54166988e+02, 8.61382741e+02 -, 8.68613637e+02, 8.75859614e+02, 8.83120608e+02, 8.90396558e+02 -, 8.97687403e+02, 9.04993081e+02, 9.12313534e+02, 9.19648701e+02 -, 9.26998523e+02, 9.34362944e+02, 9.41741904e+02, 9.49135347e+02 -, 9.56543216e+02, 9.63965455e+02, 9.71402010e+02, 9.78852824e+02 -, 9.86317844e+02, 9.93797016e+02, 1.00129029e+03, 1.00879760e+03 -, 1.01631891e+03, 1.02385416e+03, 1.03140330e+03, 1.03896628e+03 -, 1.04654305e+03, 1.05413355e+03, 1.06173775e+03, 1.06935559e+03 -, 1.07698701e+03, 1.08463198e+03, 1.09229044e+03, 1.09996236e+03 -, 1.10764767e+03, 1.11534634e+03, 1.12305831e+03, 1.13078355e+03 -, 1.13852200e+03, 1.14627363e+03, 1.15403838e+03, 1.16181622e+03 -, 1.16960710e+03, 1.17741097e+03, 1.18522779e+03, 1.19305752e+03 -, 1.20090012e+03, 1.20875555e+03, 1.21662376e+03, 1.22450471e+03 -, 1.23239836e+03, 1.24030468e+03, 1.24822361e+03, 1.25615512e+03 -, 1.26409918e+03, 1.27205573e+03, 1.28002474e+03, 1.28800618e+03 -, 1.29600000e+03, 1.30400617e+03, 1.31202464e+03, 1.32005539e+03 -, 1.32809836e+03, 1.33615353e+03, 1.34422087e+03, 1.35230032e+03 -, 1.36039186e+03, 1.36849545e+03, 1.37661105e+03, 1.38473864e+03 -, 1.39287816e+03, 1.40102960e+03, 1.40919291e+03, 1.41736805e+03 -, 1.42555501e+03, 1.43375373e+03, 1.44196419e+03, 1.45018636e+03 -, 1.45842020e+03, 1.46666567e+03, 1.47492276e+03, 1.48319141e+03 -, 1.49147160e+03, 1.49976331e+03, 1.50806648e+03, 1.51638111e+03 -, 1.52470714e+03, 1.53304456e+03, 1.54139333e+03, 1.54975342e+03 -, 1.55812480e+03, 1.56650744e+03, 1.57490131e+03, 1.58330638e+03 -, 1.59172262e+03, 1.60015000e+03, 1.60858848e+03, 1.61703805e+03 -, 1.62549868e+03, 1.63397032e+03, 1.64245296e+03, 1.65094657e+03 -, 1.65945112e+03, 1.66796657e+03, 1.67649291e+03, 1.68503011e+03 -, 1.69357813e+03, 1.70213695e+03, 1.71070654e+03, 1.71928688e+03 -, 1.72787793e+03, 1.73647968e+03, 1.74509210e+03, 1.75371515e+03 -, 1.76234882e+03, 1.77099307e+03, 1.77964789e+03, 1.78831324e+03 -, 1.79698910e+03, 1.80567544e+03, 1.81437225e+03, 1.82307949e+03 -, 1.83179713e+03, 1.84052517e+03, 1.84926356e+03, 1.85801228e+03 -, 1.86677132e+03, 1.87554064e+03, 1.88432023e+03, 1.89311006e+03 -, 1.90191010e+03, 1.91072033e+03, 1.91954072e+03, 1.92837127e+03 -, 1.93721193e+03, 1.94606269e+03, 1.95492353e+03, 1.96379442e+03 -, 1.97267534e+03, 1.98156626e+03, 1.99046717e+03, 1.99937804e+03 -, 2.00829885e+03, 2.01722958e+03, 2.02617020e+03, 2.03512070e+03 -, 2.04408105e+03, 2.05305123e+03, 2.06203121e+03, 2.07102099e+03 -, 2.08002053e+03, 2.08902982e+03, 2.09804883e+03, 2.10707754e+03 -, 2.11611594e+03, 2.12516400e+03, 2.13422170e+03, 2.14328902e+03 -, 2.15236594e+03, 2.16145244e+03, 2.17054849e+03, 2.17965409e+03 -, 2.18876921e+03, 2.19789383e+03, 2.20702793e+03, 2.21617149e+03 -, 2.22532449e+03, 2.23448691e+03, 2.24365873e+03, 2.25283994e+03 -, 2.26203051e+03, 2.27123042e+03, 2.28043967e+03, 2.28965821e+03 -, 2.29888605e+03, 2.30812316e+03, 2.31736951e+03, 2.32662510e+03 -, 2.33588991e+03, 2.34516390e+03, 2.35444708e+03, 2.36373942e+03 -, 2.37304090e+03, 2.38235150e+03, 2.39167120e+03, 2.40100000e+03 -, 2.41033787e+03, 2.41968478e+03, 2.42904074e+03, 2.43840571e+03 -, 2.44777968e+03, 2.45716264e+03, 2.46655456e+03, 2.47595543e+03 -, 2.48536523e+03, 2.49478394e+03, 2.50421156e+03, 2.51364806e+03 -, 2.52309342e+03, 2.53254763e+03, 2.54201067e+03, 2.55148252e+03 -, 2.56096318e+03, 2.57045262e+03, 2.57995082e+03, 2.58945777e+03 -, 2.59897346e+03, 2.60849787e+03, 2.61803097e+03, 2.62757277e+03 -, 2.63712323e+03, 2.64668235e+03, 2.65625011e+03, 2.66582649e+03 -, 2.67541148e+03, 2.68500506e+03, 2.69460722e+03, 2.70421794e+03 -, 2.71383721e+03, 2.72346501e+03, 2.73310133e+03, 2.74274614e+03 -, 2.75239945e+03, 2.76206122e+03, 2.77173146e+03, 2.78141013e+03 -, 2.79109723e+03, 2.80079274e+03, 2.81049666e+03, 2.82020895e+03 -, 2.82992962e+03, 2.83965863e+03, 2.84939599e+03, 2.85914168e+03 -, 2.86889568e+03, 2.87865797e+03, 2.88842855e+03, 2.89820740e+03 -, 2.90799450e+03, 2.91778985e+03, 2.92759342e+03, 2.93740521e+03 -, 2.94722520e+03, 2.95705337e+03, 2.96688972e+03, 2.97673423e+03 -, 2.98658688e+03, 2.99644767e+03, 3.00631658e+03, 3.01619359e+03 -, 3.02607869e+03, 3.03597188e+03, 3.04587312e+03, 3.05578243e+03 -, 3.06569977e+03, 3.07562514e+03, 3.08555852e+03, 3.09549991e+03 -, 3.10544928e+03, 3.11540663e+03, 3.12537194e+03, 3.13534520e+03 -, 3.14532640e+03, 3.15531553e+03, 3.16531256e+03, 3.17531750e+03 -, 3.18533032e+03, 3.19535102e+03, 3.20537958e+03, 3.21541599e+03 -, 3.22546023e+03, 3.23551231e+03, 3.24557220e+03, 3.25563988e+03 -, 3.26571536e+03, 3.27579862e+03, 3.28588964e+03, 3.29598841e+03 -, 3.30609493e+03, 3.31620917e+03, 3.32633113e+03, 3.33646080e+03 -, 3.34659817e+03, 3.35674321e+03, 3.36689593e+03, 3.37705631e+03 -, 3.38722433e+03, 3.39739999e+03, 3.40758328e+03, 3.41777418e+03 -, 3.42797268e+03, 3.43817877e+03, 3.44839245e+03, 3.45861369e+03 -, 3.46884249e+03, 3.47907883e+03, 3.48932271e+03, 3.49957411e+03 -, 3.50983303e+03, 3.52009945e+03, 3.53037336e+03, 3.54065475e+03 -, 3.55094361e+03, 3.56123993e+03, 3.57154369e+03, 3.58185489e+03 -, 3.59217352e+03, 3.60249957e+03, 3.61283301e+03, 3.62317386e+03 -, 3.63352208e+03, 3.64387768e+03, 3.65424065e+03, 3.66461096e+03 -, 3.67498862e+03, 3.68537360e+03, 3.69576591e+03, 3.70616553e+03 -, 3.71657245e+03, 3.72698666e+03, 3.73740815e+03, 3.74783692e+03 -, 3.75827294e+03, 3.76871621e+03, 3.77916672e+03, 3.78962446e+03 -, 3.80008941e+03, 3.81056158e+03, 3.82104095e+03, 3.83152751e+03 -, 3.84202125e+03, 3.85252216e+03, 3.86303023e+03, 3.87354545e+03 -, 3.88406781e+03, 3.89459731e+03, 3.90513392e+03, 3.91567765e+03 -, 3.92622848e+03, 3.93678640e+03, 3.94735141e+03, 3.95792349e+03 -, 3.96850263e+03, 3.97908883e+03, 3.98968207e+03, 4.00028236e+03 -, 4.01088967e+03, 4.02150399e+03, 4.03212533e+03, 4.04275366e+03 -, 4.05338899e+03, 4.06403129e+03, 4.07468057e+03, 4.08533681e+03 -, 4.09600000e+03, 4.10667014e+03, 4.11734721e+03, 4.12803121e+03 -, 4.13872213e+03, 4.14941995e+03, 4.16012468e+03, 4.17083629e+03 -, 4.18155479e+03, 4.19228016e+03, 4.20301239e+03, 4.21375148e+03 -, 4.22449742e+03, 4.23525020e+03, 4.24600980e+03, 4.25677622e+03 -, 4.26754946e+03, 4.27832950e+03, 4.28911634e+03, 4.29990996e+03 -, 4.31071036e+03, 4.32151753e+03, 4.33233146e+03, 4.34315214e+03 -, 4.35397956e+03, 4.36481373e+03, 4.37565461e+03, 4.38650222e+03 -, 4.39735654e+03, 4.40821756e+03, 4.41908527e+03, 4.42995967e+03 -, 4.44084075e+03, 4.45172850e+03, 4.46262291e+03, 4.47352397e+03 -, 4.48443167e+03, 4.49534602e+03, 4.50626699e+03, 4.51719458e+03 -, 4.52812879e+03, 4.53906960e+03, 4.55001700e+03, 4.56097100e+03 -, 4.57193158e+03, 4.58289873e+03, 4.59387244e+03, 4.60485271e+03 -, 4.61583954e+03, 4.62683290e+03, 4.63783280e+03, 4.64883922e+03 -, 4.65985216e+03, 4.67087162e+03, 4.68189757e+03, 4.69293002e+03 -, 4.70396896e+03, 4.71501438e+03, 4.72606627e+03, 4.73712463e+03 -, 4.74818945e+03, 4.75926071e+03, 4.77033842e+03, 4.78142256e+03 -, 4.79251313e+03, 4.80361012e+03, 4.81471352e+03, 4.82582333e+03 -, 4.83693953e+03, 4.84806213e+03, 4.85919110e+03, 4.87032646e+03 -, 4.88146818e+03, 4.89261627e+03, 4.90377070e+03, 4.91493149e+03 -, 4.92609861e+03, 4.93727207e+03, 4.94845185e+03, 4.95963795e+03 -, 4.97083036e+03, 4.98202908e+03, 4.99323409e+03, 5.00444539e+03 -, 5.01566297e+03, 5.02688683e+03, 5.03811696e+03, 5.04935335e+03 -, 5.06059599e+03, 5.07184488e+03, 5.08310002e+03, 5.09436138e+03 -, 5.10562897e+03, 5.11690279e+03, 5.12818281e+03, 5.13946905e+03 -, 5.15076148e+03, 5.16206010e+03, 5.17336491e+03, 5.18467590e+03 -, 5.19599307e+03, 5.20731639e+03, 5.21864588e+03, 5.22998152e+03 -, 5.24132331e+03, 5.25267123e+03, 5.26402529e+03, 5.27538547e+03 -, 5.28675177e+03, 5.29812418e+03, 5.30950270e+03, 5.32088732e+03 -, 5.33227803e+03, 5.34367483e+03, 5.35507771e+03, 5.36648666e+03 -, 5.37790168e+03, 5.38932276e+03, 5.40074990e+03, 5.41218308e+03 -, 5.42362230e+03, 5.43506756e+03, 5.44651884e+03, 5.45797615e+03 -, 5.46943948e+03, 5.48090881e+03, 5.49238415e+03, 5.50386548e+03 -, 5.51535281e+03, 5.52684612e+03, 5.53834540e+03, 5.54985066e+03 -, 5.56136189e+03, 5.57287908e+03, 5.58440221e+03, 5.59593130e+03 -, 5.60746633e+03, 5.61900729e+03, 5.63055418e+03, 5.64210700e+03 -, 5.65366573e+03, 5.66523038e+03, 5.67680092e+03, 5.68837737e+03 -, 5.69995971e+03, 5.71154794e+03, 5.72314204e+03, 5.73474203e+03 -, 5.74634788e+03, 5.75795959e+03, 5.76957716e+03, 5.78120058e+03 -, 5.79282985e+03, 5.80446496e+03, 5.81610590e+03, 5.82775267e+03 -, 5.83940526e+03, 5.85106367e+03, 5.86272788e+03, 5.87439790e+03 -, 5.88607372e+03, 5.89775534e+03, 5.90944274e+03, 5.92113592e+03 -, 5.93283488e+03, 5.94453961e+03, 5.95625010e+03, 5.96796635e+03 -, 5.97968835e+03, 5.99141611e+03, 6.00314960e+03, 6.01488883e+03 -, 6.02663379e+03, 6.03838448e+03, 6.05014088e+03, 6.06190300e+03 -, 6.07367083e+03, 6.08544436e+03, 6.09722359e+03, 6.10900851e+03 -, 6.12079911e+03, 6.13259540e+03, 6.14439736e+03, 6.15620499e+03 -, 6.16801829e+03, 6.17983725e+03, 6.19166185e+03, 6.20349211e+03 -, 6.21532801e+03, 6.22716955e+03, 6.23901672e+03, 6.25086952e+03 -, 6.26272794e+03, 6.27459197e+03, 6.28646161e+03, 6.29833687e+03 -, 6.31021772e+03, 6.32210416e+03, 6.33399620e+03, 6.34589382e+03 -, 6.35779702e+03, 6.36970579e+03, 6.38162013e+03, 6.39354004e+03 -, 6.40546550e+03, 6.41739652e+03, 6.42933308e+03, 6.44127519e+03 -, 6.45322284e+03, 6.46517601e+03, 6.47713472e+03, 6.48909895e+03 -, 6.50106869e+03, 6.51304395e+03, 6.52502471e+03, 6.53701098e+03 -, 6.54900274e+03, 6.56100000e+03, 6.57300274e+03, 6.58501097e+03 -, 6.59702467e+03, 6.60904384e+03, 6.62106848e+03, 6.63309859e+03 -, 6.64513415e+03, 6.65717516e+03, 6.66922162e+03, 6.68127352e+03 -, 6.69333086e+03, 6.70539363e+03, 6.71746183e+03, 6.72953545e+03 -, 6.74161449e+03, 6.75369894e+03, 6.76578880e+03, 6.77788406e+03 -, 6.78998472e+03, 6.80209078e+03, 6.81420222e+03, 6.82631905e+03 -, 6.83844126e+03, 6.85056884e+03, 6.86270179e+03, 6.87484011e+03 -, 6.88698379e+03, 6.89913282e+03, 6.91128720e+03, 6.92344693e+03 -, 6.93561201e+03, 6.94778241e+03, 6.95995815e+03, 6.97213922e+03 -, 6.98432561e+03, 6.99651732e+03, 7.00871434e+03, 7.02091667e+03 -, 7.03312431e+03, 7.04533724e+03, 7.05755547e+03, 7.06977899e+03 -, 7.08200780e+03, 7.09424188e+03, 7.10648125e+03, 7.11872588e+03 -, 7.13097578e+03, 7.14323095e+03, 7.15549138e+03, 7.16775706e+03 -, 7.18002798e+03, 7.19230416e+03, 7.20458557e+03, 7.21687222e+03 -, 7.22916411e+03, 7.24146122e+03, 7.25376355e+03, 7.26607110e+03 -, 7.27838386e+03, 7.29070184e+03, 7.30302502e+03, 7.31535340e+03 -, 7.32768697e+03, 7.34002574e+03, 7.35236970e+03, 7.36471884e+03 -, 7.37707316e+03, 7.38943265e+03, 7.40179731e+03, 7.41416714e+03 -, 7.42654213e+03, 7.43892228e+03, 7.45130758e+03, 7.46369803e+03 -, 7.47609363e+03, 7.48849436e+03, 7.50090023e+03, 7.51331123e+03 -, 7.52572736e+03, 7.53814862e+03, 7.55057499e+03, 7.56300648e+03 -, 7.57544307e+03, 7.58788478e+03, 7.60033158e+03, 7.61278349e+03 -, 7.62524048e+03, 7.63770257e+03, 7.65016975e+03, 7.66264200e+03 -, 7.67511933e+03, 7.68760174e+03, 7.70008921e+03, 7.71258175e+03 -, 7.72507935e+03, 7.73758200e+03, 7.75008971e+03, 7.76260247e+03 -, 7.77512027e+03, 7.78764311e+03, 7.80017099e+03, 7.81270390e+03 -, 7.82524184e+03, 7.83778480e+03, 7.85033279e+03, 7.86288579e+03 -, 7.87544380e+03, 7.88800682e+03, 7.90057484e+03, 7.91314787e+03 -, 7.92572589e+03, 7.93830890e+03, 7.95089690e+03, 7.96348989e+03 -, 7.97608785e+03, 7.98869079e+03, 8.00129871e+03, 8.01391159e+03 -, 8.02652944e+03, 8.03915225e+03, 8.05178002e+03, 8.06441274e+03 -, 8.07705040e+03, 8.08969302e+03, 8.10234057e+03, 8.11499306e+03 -, 8.12765049e+03, 8.14031285e+03, 8.15298013e+03, 8.16565233e+03 -, 8.17832946e+03, 8.19101149e+03, 8.20369844e+03, 8.21639030e+03 -, 8.22908705e+03, 8.24178871e+03, 8.25449526e+03, 8.26720671e+03 -, 8.27992304e+03, 8.29264426e+03, 8.30537036e+03, 8.31810133e+03 -, 8.33083718e+03, 8.34357790e+03, 8.35632348e+03, 8.36907392e+03 -, 8.38182923e+03, 8.39458939e+03, 8.40735439e+03, 8.42012425e+03 -, 8.43289895e+03, 8.44567849e+03, 8.45846286e+03, 8.47125207e+03 -, 8.48404611e+03, 8.49684497e+03, 8.50964865e+03, 8.52245715e+03 -, 8.53527047e+03, 8.54808859e+03, 8.56091153e+03, 8.57373926e+03 -, 8.58657180e+03, 8.59940913e+03, 8.61225126e+03, 8.62509817e+03 -, 8.63794987e+03, 8.65080636e+03, 8.66366762e+03, 8.67653365e+03 -, 8.68940446e+03, 8.70228004e+03, 8.71516038e+03, 8.72804548e+03 -, 8.74093533e+03, 8.75382995e+03, 8.76672931e+03, 8.77963342e+03 -, 8.79254227e+03, 8.80545586e+03, 8.81837419e+03, 8.83129725e+03 -, 8.84422504e+03, 8.85715755e+03, 8.87009479e+03, 8.88303675e+03 -, 8.89598342e+03, 8.90893481e+03, 8.92189090e+03, 8.93485170e+03 -, 8.94781720e+03, 8.96078740e+03, 8.97376230e+03, 8.98674188e+03 -, 8.99972616e+03, 9.01271512e+03, 9.02570876e+03, 9.03870708e+03 -, 9.05171007e+03, 9.06471774e+03, 9.07773007e+03, 9.09074707e+03 -, 9.10376873e+03, 9.11679505e+03, 9.12982602e+03, 9.14286165e+03 -, 9.15590192e+03, 9.16894683e+03, 9.18199639e+03, 9.19505059e+03 -, 9.20810942e+03, 9.22117289e+03, 9.23424098e+03, 9.24731369e+03 -, 9.26039103e+03, 9.27347299e+03, 9.28655956e+03, 9.29965075e+03 -, 9.31274654e+03, 9.32584694e+03, 9.33895194e+03, 9.35206154e+03 -, 9.36517573e+03, 9.37829452e+03, 9.39141790e+03, 9.40454586e+03 -, 9.41767841e+03, 9.43081554e+03, 9.44395724e+03, 9.45710352e+03 -, 9.47025437e+03, 9.48340978e+03, 9.49656976e+03, 9.50973430e+03 -, 9.52290339e+03, 9.53607704e+03, 9.54925524e+03, 9.56243800e+03 -, 9.57562529e+03, 9.58881713e+03, 9.60201350e+03, 9.61521441e+03 -, 9.62841986e+03, 9.64162983e+03, 9.65484433e+03, 9.66806335e+03 -, 9.68128690e+03, 9.69451496e+03, 9.70774753e+03, 9.72098461e+03 -, 9.73422621e+03, 9.74747230e+03, 9.76072290e+03, 9.77397800e+03 -, 9.78723759e+03, 9.80050168e+03, 9.81377025e+03, 9.82704331e+03 -, 9.84032086e+03, 9.85360288e+03, 9.86688938e+03, 9.88018036e+03 -, 9.89347581e+03, 9.90677573e+03, 9.92008011e+03, 9.93338895e+03 -, 9.94670225e+03, 9.96002001e+03, 9.97334223e+03, 9.98666889e+03 -, 1.00000000e+04, 1.00133356e+04, 1.00266756e+04, 1.00400200e+04 -, 1.00533689e+04, 1.00667222e+04, 1.00800799e+04, 1.00934421e+04 -, 1.01068086e+04, 1.01201796e+04, 1.01335551e+04, 1.01469349e+04 -, 1.01603192e+04, 1.01737078e+04, 1.01871009e+04, 1.02004983e+04 -, 1.02139002e+04, 1.02273065e+04, 1.02407171e+04, 1.02541322e+04 -, 1.02675516e+04, 1.02809755e+04, 1.02944037e+04, 1.03078363e+04 -, 1.03212732e+04, 1.03347146e+04, 1.03481603e+04, 1.03616104e+04 -, 1.03750648e+04, 1.03885237e+04, 1.04019868e+04, 1.04154544e+04 -, 1.04289263e+04, 1.04424025e+04, 1.04558831e+04, 1.04693680e+04 -, 1.04828573e+04, 1.04963509e+04, 1.05098489e+04, 1.05233512e+04 -, 1.05368578e+04, 1.05503688e+04, 1.05638840e+04, 1.05774036e+04 -, 1.05909276e+04, 1.06044558e+04, 1.06179884e+04, 1.06315253e+04 -, 1.06450665e+04, 1.06586119e+04, 1.06721617e+04, 1.06857158e+04 -, 1.06992743e+04, 1.07128369e+04, 1.07264039e+04, 1.07399752e+04 -, 1.07535508e+04, 1.07671307e+04, 1.07807148e+04, 1.07943032e+04 -, 1.08078959e+04, 1.08214929e+04, 1.08350941e+04, 1.08486997e+04 -, 1.08623094e+04, 1.08759235e+04, 1.08895418e+04, 1.09031644e+04 -, 1.09167912e+04, 1.09304223e+04, 1.09440576e+04, 1.09576972e+04 -, 1.09713410e+04, 1.09849891e+04, 1.09986414e+04, 1.10122979e+04 -, 1.10259587e+04, 1.10396237e+04, 1.10532930e+04, 1.10669664e+04 -, 1.10806441e+04, 1.10943261e+04, 1.11080122e+04, 1.11217025e+04 -, 1.11353971e+04, 1.11490959e+04, 1.11627989e+04, 1.11765061e+04 -, 1.11902175e+04, 1.12039331e+04, 1.12176529e+04, 1.12313769e+04 -, 1.12451051e+04, 1.12588375e+04, 1.12725740e+04, 1.12863148e+04 -, 1.13000597e+04, 1.13138088e+04, 1.13275621e+04, 1.13413196e+04 -, 1.13550813e+04, 1.13688471e+04, 1.13826171e+04, 1.13963912e+04 -, 1.14101695e+04, 1.14239520e+04, 1.14377387e+04, 1.14515295e+04 -, 1.14653244e+04, 1.14791235e+04, 1.14929267e+04, 1.15067341e+04 -, 1.15205457e+04, 1.15343613e+04, 1.15481811e+04, 1.15620051e+04 -, 1.15758332e+04, 1.15896654e+04, 1.16035017e+04, 1.16173422e+04 -, 1.16311868e+04, 1.16450355e+04, 1.16588883e+04, 1.16727453e+04 -, 1.16866063e+04, 1.17004715e+04, 1.17143408e+04, 1.17282142e+04 -, 1.17420917e+04, 1.17559733e+04, 1.17698589e+04, 1.17837487e+04 -, 1.17976426e+04, 1.18115406e+04, 1.18254426e+04, 1.18393488e+04 -, 1.18532590e+04, 1.18671733e+04, 1.18810917e+04, 1.18950142e+04 -, 1.19089408e+04, 1.19228714e+04, 1.19368061e+04, 1.19507448e+04 -, 1.19646877e+04, 1.19786346e+04, 1.19925855e+04, 1.20065405e+04 -, 1.20204996e+04, 1.20344627e+04, 1.20484299e+04, 1.20624011e+04 -, 1.20763763e+04, 1.20903557e+04, 1.21043390e+04, 1.21183264e+04 -, 1.21323178e+04, 1.21463133e+04, 1.21603128e+04, 1.21743163e+04 -, 1.21883239e+04, 1.22023354e+04, 1.22163510e+04, 1.22303707e+04 -, 1.22443943e+04, 1.22584220e+04, 1.22724537e+04, 1.22864893e+04 -, 1.23005290e+04, 1.23145727e+04, 1.23286204e+04, 1.23426722e+04 -, 1.23567279e+04, 1.23707876e+04, 1.23848513e+04, 1.23989190e+04 -, 1.24129907e+04, 1.24270664e+04, 1.24411460e+04, 1.24552297e+04 -, 1.24693173e+04, 1.24834089e+04, 1.24975045e+04, 1.25116041e+04 -, 1.25257076e+04, 1.25398151e+04, 1.25539266e+04, 1.25680421e+04 -, 1.25821615e+04, 1.25962848e+04, 1.26104122e+04, 1.26245435e+04 -, 1.26386787e+04, 1.26528179e+04, 1.26669611e+04, 1.26811082e+04 -, 1.26952592e+04, 1.27094142e+04, 1.27235731e+04, 1.27377360e+04 -, 1.27519028e+04, 1.27660736e+04, 1.27802483e+04, 1.27944269e+04 -, 1.28086094e+04, 1.28227959e+04, 1.28369863e+04, 1.28511806e+04 -, 1.28653788e+04, 1.28795810e+04, 1.28937871e+04, 1.29079971e+04 -, 1.29222109e+04, 1.29364288e+04, 1.29506505e+04, 1.29648761e+04 -, 1.29791056e+04, 1.29933390e+04, 1.30075764e+04, 1.30218176e+04 -, 1.30360627e+04, 1.30503117e+04, 1.30645646e+04, 1.30788214e+04 -, 1.30930821e+04, 1.31073466e+04, 1.31216151e+04, 1.31358874e+04 -, 1.31501636e+04, 1.31644437e+04, 1.31787276e+04, 1.31930154e+04 -, 1.32073071e+04, 1.32216027e+04, 1.32359021e+04, 1.32502054e+04 -, 1.32645125e+04, 1.32788235e+04, 1.32931384e+04, 1.33074571e+04 -, 1.33217797e+04, 1.33361061e+04, 1.33504364e+04, 1.33647705e+04 -, 1.33791084e+04, 1.33934502e+04, 1.34077959e+04, 1.34221454e+04 -, 1.34364987e+04, 1.34508558e+04, 1.34652168e+04, 1.34795816e+04 -, 1.34939503e+04, 1.35083227e+04, 1.35226990e+04, 1.35370791e+04 -, 1.35514631e+04, 1.35658508e+04, 1.35802424e+04, 1.35946378e+04 -, 1.36090370e+04, 1.36234400e+04, 1.36378468e+04, 1.36522574e+04 -, 1.36666718e+04, 1.36810900e+04, 1.36955120e+04, 1.37099379e+04 -, 1.37243675e+04, 1.37388009e+04, 1.37532381e+04, 1.37676791e+04 -, 1.37821239e+04, 1.37965724e+04, 1.38110248e+04, 1.38254809e+04 -, 1.38399408e+04, 1.38544045e+04, 1.38688720e+04, 1.38833432e+04 -, 1.38978182e+04, 1.39122970e+04, 1.39267795e+04, 1.39412658e+04 -, 1.39557559e+04, 1.39702498e+04, 1.39847474e+04, 1.39992487e+04 -, 1.40137538e+04, 1.40282627e+04, 1.40427753e+04, 1.40572917e+04 -, 1.40718118e+04, 1.40863357e+04, 1.41008633e+04, 1.41153946e+04 -, 1.41299297e+04, 1.41444686e+04, 1.41590111e+04, 1.41735574e+04 -, 1.41881075e+04, 1.42026613e+04, 1.42172187e+04, 1.42317800e+04 -, 1.42463449e+04, 1.42609136e+04, 1.42754860e+04, 1.42900621e+04 -, 1.43046420e+04, 1.43192255e+04, 1.43338128e+04, 1.43484038e+04 -, 1.43629984e+04, 1.43775968e+04, 1.43921989e+04, 1.44068048e+04 -, 1.44214143e+04, 1.44360275e+04, 1.44506444e+04, 1.44652650e+04 -, 1.44798893e+04, 1.44945173e+04, 1.45091490e+04, 1.45237844e+04 -, 1.45384234e+04, 1.45530662e+04, 1.45677126e+04, 1.45823627e+04 -, 1.45970165e+04, 1.46116740e+04, 1.46263352e+04, 1.46410000e+04 -, 1.46556685e+04, 1.46703407e+04, 1.46850165e+04, 1.46996960e+04 -, 1.47143792e+04, 1.47290660e+04, 1.47437566e+04, 1.47584507e+04 -, 1.47731485e+04, 1.47878500e+04, 1.48025551e+04, 1.48172639e+04 -, 1.48319764e+04, 1.48466925e+04, 1.48614122e+04, 1.48761356e+04 -, 1.48908626e+04, 1.49055933e+04, 1.49203276e+04, 1.49350655e+04 -, 1.49498071e+04, 1.49645523e+04, 1.49793012e+04, 1.49940536e+04 -, 1.50088098e+04, 1.50235695e+04, 1.50383329e+04, 1.50530998e+04 -, 1.50678705e+04, 1.50826447e+04, 1.50974225e+04, 1.51122040e+04 -, 1.51269891e+04, 1.51417778e+04, 1.51565701e+04, 1.51713660e+04 -, 1.51861655e+04, 1.52009687e+04, 1.52157754e+04, 1.52305858e+04 -, 1.52453997e+04, 1.52602172e+04, 1.52750384e+04, 1.52898631e+04 -, 1.53046915e+04, 1.53195234e+04, 1.53343589e+04, 1.53491980e+04 -, 1.53640407e+04, 1.53788870e+04, 1.53937368e+04, 1.54085903e+04 -, 1.54234473e+04, 1.54383079e+04, 1.54531721e+04, 1.54680398e+04 -, 1.54829111e+04, 1.54977860e+04, 1.55126645e+04, 1.55275466e+04 -, 1.55424322e+04, 1.55573213e+04, 1.55722141e+04, 1.55871104e+04 -, 1.56020102e+04, 1.56169136e+04, 1.56318206e+04, 1.56467311e+04 -, 1.56616452e+04, 1.56765628e+04, 1.56914840e+04, 1.57064087e+04 -, 1.57213370e+04, 1.57362688e+04, 1.57512042e+04, 1.57661431e+04 -, 1.57810855e+04, 1.57960315e+04, 1.58109810e+04, 1.58259341e+04 -, 1.58408906e+04, 1.58558507e+04, 1.58708144e+04, 1.58857816e+04 -, 1.59007523e+04, 1.59157265e+04, 1.59307042e+04, 1.59456855e+04 -, 1.59606703e+04, 1.59756586e+04, 1.59906504e+04, 1.60056457e+04 -, 1.60206446e+04, 1.60356469e+04, 1.60506528e+04, 1.60656622e+04 -, 1.60806751e+04, 1.60956915e+04, 1.61107114e+04, 1.61257347e+04 -, 1.61407616e+04, 1.61557920e+04, 1.61708259e+04, 1.61858633e+04 -, 1.62009042e+04, 1.62159485e+04, 1.62309964e+04, 1.62460477e+04 -, 1.62611026e+04, 1.62761609e+04, 1.62912227e+04, 1.63062880e+04 -, 1.63213568e+04, 1.63364290e+04, 1.63515047e+04, 1.63665839e+04 -, 1.63816666e+04, 1.63967527e+04, 1.64118423e+04, 1.64269354e+04 -, 1.64420320e+04, 1.64571320e+04, 1.64722355e+04, 1.64873424e+04 -, 1.65024528e+04, 1.65175667e+04, 1.65326840e+04, 1.65478048e+04 -, 1.65629290e+04, 1.65780567e+04, 1.65931879e+04, 1.66083225e+04 -, 1.66234605e+04, 1.66386020e+04, 1.66537469e+04, 1.66688953e+04 -, 1.66840471e+04, 1.66992024e+04, 1.67143611e+04, 1.67295232e+04 -, 1.67446888e+04, 1.67598578e+04, 1.67750302e+04, 1.67902061e+04 -, 1.68053854e+04, 1.68205681e+04, 1.68357543e+04, 1.68509439e+04 -, 1.68661369e+04, 1.68813333e+04, 1.68965332e+04, 1.69117364e+04 -, 1.69269431e+04, 1.69421532e+04, 1.69573667e+04, 1.69725837e+04 -, 1.69878040e+04, 1.70030278e+04, 1.70182549e+04, 1.70334855e+04 -, 1.70487195e+04, 1.70639568e+04, 1.70791976e+04, 1.70944418e+04 -, 1.71096894e+04, 1.71249403e+04, 1.71401947e+04, 1.71554525e+04 -, 1.71707136e+04, 1.71859782e+04, 1.72012461e+04, 1.72165175e+04 -, 1.72317922e+04, 1.72470703e+04, 1.72623518e+04, 1.72776366e+04 -, 1.72929249e+04, 1.73082165e+04, 1.73235115e+04, 1.73388099e+04 -, 1.73541117e+04, 1.73694168e+04, 1.73847253e+04, 1.74000372e+04 -, 1.74153525e+04, 1.74306711e+04, 1.74459931e+04, 1.74613184e+04 -, 1.74766471e+04, 1.74919792e+04, 1.75073146e+04, 1.75226534e+04 -, 1.75379956e+04, 1.75533411e+04, 1.75686899e+04, 1.75840421e+04 -, 1.75993977e+04, 1.76147566e+04, 1.76301189e+04, 1.76454845e+04 -, 1.76608535e+04, 1.76762258e+04, 1.76916014e+04, 1.77069804e+04 -, 1.77223627e+04, 1.77377484e+04, 1.77531374e+04, 1.77685297e+04 -, 1.77839254e+04, 1.77993244e+04, 1.78147267e+04, 1.78301324e+04 -, 1.78455414e+04, 1.78609537e+04, 1.78763694e+04, 1.78917883e+04 -, 1.79072106e+04, 1.79226362e+04, 1.79380652e+04, 1.79534974e+04 -, 1.79689330e+04, 1.79843719e+04, 1.79998141e+04, 1.80152596e+04 -, 1.80307084e+04, 1.80461605e+04, 1.80616160e+04, 1.80770747e+04 -, 1.80925368e+04, 1.81080022e+04, 1.81234708e+04, 1.81389428e+04 -, 1.81544180e+04, 1.81698966e+04, 1.81853785e+04, 1.82008636e+04 -, 1.82163521e+04, 1.82318438e+04, 1.82473388e+04, 1.82628372e+04 -, 1.82783388e+04, 1.82938437e+04, 1.83093519e+04, 1.83248633e+04 -, 1.83403781e+04, 1.83558961e+04, 1.83714174e+04, 1.83869420e+04 -, 1.84024699e+04, 1.84180010e+04, 1.84335355e+04, 1.84490732e+04 -, 1.84646141e+04, 1.84801584e+04, 1.84957059e+04, 1.85112567e+04 -, 1.85268107e+04, 1.85423680e+04, 1.85579286e+04, 1.85734924e+04 -, 1.85890595e+04, 1.86046299e+04, 1.86202035e+04, 1.86357804e+04 -, 1.86513605e+04, 1.86669439e+04, 1.86825305e+04, 1.86981204e+04 -, 1.87137135e+04, 1.87293099e+04, 1.87449095e+04, 1.87605124e+04 -, 1.87761185e+04, 1.87917279e+04, 1.88073405e+04, 1.88229564e+04 -, 1.88385755e+04, 1.88541978e+04, 1.88698234e+04, 1.88854522e+04 -, 1.89010842e+04, 1.89167195e+04, 1.89323580e+04, 1.89479997e+04 -, 1.89636446e+04, 1.89792928e+04, 1.89949442e+04, 1.90105989e+04 -, 1.90262567e+04, 1.90419178e+04, 1.90575821e+04, 1.90732496e+04 -, 1.90889204e+04, 1.91045943e+04, 1.91202715e+04, 1.91359519e+04 -, 1.91516355e+04, 1.91673223e+04, 1.91830123e+04, 1.91987056e+04 -, 1.92144020e+04, 1.92301016e+04, 1.92458045e+04, 1.92615105e+04 -, 1.92772198e+04, 1.92929323e+04, 1.93086479e+04, 1.93243668e+04 -, 1.93400888e+04, 1.93558141e+04, 1.93715425e+04, 1.93872741e+04 -, 1.94030090e+04, 1.94187470e+04, 1.94344882e+04, 1.94502326e+04 -, 1.94659802e+04, 1.94817309e+04, 1.94974849e+04, 1.95132420e+04 -, 1.95290023e+04, 1.95447658e+04, 1.95605325e+04, 1.95763024e+04 -, 1.95920754e+04, 1.96078516e+04, 1.96236310e+04, 1.96394135e+04 -, 1.96551992e+04, 1.96709881e+04, 1.96867802e+04, 1.97025754e+04 -, 1.97183738e+04, 1.97341754e+04, 1.97499801e+04, 1.97657880e+04 -, 1.97815991e+04, 1.97974133e+04, 1.98132306e+04, 1.98290512e+04 -, 1.98448748e+04, 1.98607017e+04, 1.98765317e+04, 1.98923648e+04 -, 1.99082011e+04, 1.99240405e+04, 1.99398831e+04, 1.99557289e+04 -, 1.99715778e+04, 1.99874298e+04, 2.00032850e+04, 2.00191433e+04 -, 2.00350047e+04, 2.00508693e+04, 2.00667371e+04, 2.00826080e+04 -, 2.00984820e+04, 2.01143591e+04, 2.01302394e+04, 2.01461228e+04 -, 2.01620093e+04, 2.01778990e+04, 2.01937918e+04, 2.02096877e+04 -, 2.02255868e+04, 2.02414890e+04, 2.02573943e+04, 2.02733027e+04 -, 2.02892143e+04, 2.03051289e+04, 2.03210467e+04, 2.03369676e+04 -, 2.03528916e+04, 2.03688188e+04, 2.03847490e+04, 2.04006824e+04 -, 2.04166189e+04, 2.04325585e+04, 2.04485012e+04, 2.04644470e+04 -, 2.04803959e+04, 2.04963479e+04, 2.05123030e+04, 2.05282612e+04 -, 2.05442226e+04, 2.05601870e+04, 2.05761545e+04, 2.05921251e+04 -, 2.06080989e+04, 2.06240757e+04, 2.06400556e+04, 2.06560386e+04 -, 2.06720247e+04, 2.06880139e+04, 2.07040062e+04, 2.07200015e+04 -, 2.07360000e+04, 2.07520015e+04, 2.07680062e+04, 2.07840139e+04 -, 2.08000247e+04, 2.08160386e+04, 2.08320555e+04, 2.08480755e+04 -, 2.08640987e+04, 2.08801249e+04, 2.08961541e+04, 2.09121865e+04 -, 2.09282219e+04, 2.09442604e+04, 2.09603019e+04, 2.09763466e+04 -, 2.09923943e+04, 2.10084450e+04, 2.10244988e+04, 2.10405557e+04 -, 2.10566157e+04, 2.10726787e+04, 2.10887448e+04, 2.11048140e+04 -, 2.11208862e+04, 2.11369614e+04, 2.11530397e+04, 2.11691211e+04 -, 2.11852055e+04, 2.12012930e+04, 2.12173836e+04, 2.12334772e+04 -, 2.12495738e+04, 2.12656735e+04, 2.12817762e+04, 2.12978820e+04 -, 2.13139908e+04, 2.13301027e+04, 2.13462176e+04, 2.13623356e+04 -, 2.13784566e+04, 2.13945806e+04, 2.14107077e+04, 2.14268378e+04 -, 2.14429709e+04, 2.14591071e+04, 2.14752463e+04, 2.14913886e+04 -, 2.15075339e+04, 2.15236822e+04, 2.15398335e+04, 2.15559879e+04 -, 2.15721453e+04, 2.15883057e+04, 2.16044692e+04, 2.16206356e+04 -, 2.16368051e+04, 2.16529776e+04, 2.16691532e+04, 2.16853317e+04 -, 2.17015133e+04, 2.17176979e+04, 2.17338855e+04, 2.17500761e+04 -, 2.17662698e+04, 2.17824664e+04, 2.17986661e+04, 2.18148687e+04 -, 2.18310744e+04, 2.18472831e+04, 2.18634948e+04, 2.18797095e+04 -, 2.18959272e+04, 2.19121479e+04, 2.19283716e+04, 2.19445983e+04 -, 2.19608280e+04, 2.19770607e+04, 2.19932964e+04, 2.20095351e+04 -, 2.20257768e+04, 2.20420215e+04, 2.20582692e+04, 2.20745199e+04 -, 2.20907736e+04, 2.21070302e+04, 2.21232899e+04, 2.21395525e+04 -, 2.21558182e+04, 2.21720868e+04, 2.21883584e+04, 2.22046330e+04 -, 2.22209105e+04, 2.22371911e+04, 2.22534746e+04, 2.22697611e+04 -, 2.22860506e+04, 2.23023430e+04, 2.23186385e+04, 2.23349369e+04 -, 2.23512383e+04, 2.23675426e+04, 2.23838500e+04, 2.24001603e+04 -, 2.24164735e+04, 2.24327898e+04, 2.24491090e+04, 2.24654312e+04 -, 2.24817563e+04, 2.24980844e+04, 2.25144155e+04, 2.25307495e+04 -, 2.25470865e+04, 2.25634264e+04, 2.25797693e+04, 2.25961152e+04 -, 2.26124640e+04, 2.26288158e+04, 2.26451705e+04, 2.26615282e+04 -, 2.26778889e+04, 2.26942524e+04, 2.27106190e+04, 2.27269885e+04 -, 2.27433609e+04, 2.27597363e+04, 2.27761146e+04, 2.27924959e+04 -, 2.28088801e+04, 2.28252673e+04, 2.28416574e+04, 2.28580504e+04 -, 2.28744464e+04, 2.28908453e+04, 2.29072472e+04, 2.29236520e+04 -, 2.29400597e+04, 2.29564704e+04, 2.29728840e+04, 2.29893005e+04 -, 2.30057200e+04, 2.30221424e+04, 2.30385677e+04, 2.30549959e+04 -, 2.30714271e+04, 2.30878612e+04, 2.31042982e+04, 2.31207382e+04 -, 2.31371811e+04, 2.31536269e+04, 2.31700756e+04, 2.31865272e+04 -, 2.32029818e+04, 2.32194393e+04, 2.32358996e+04, 2.32523630e+04 -, 2.32688292e+04, 2.32852983e+04, 2.33017704e+04, 2.33182453e+04 -, 2.33347232e+04, 2.33512040e+04, 2.33676876e+04, 2.33841742e+04 -, 2.34006637e+04, 2.34171562e+04, 2.34336515e+04, 2.34501497e+04 -, 2.34666508e+04, 2.34831548e+04, 2.34996617e+04, 2.35161715e+04 -, 2.35326843e+04, 2.35491999e+04, 2.35657184e+04, 2.35822398e+04 -, 2.35987641e+04, 2.36152913e+04, 2.36318214e+04, 2.36483543e+04 -, 2.36648902e+04, 2.36814290e+04, 2.36979706e+04, 2.37145151e+04 -, 2.37310625e+04, 2.37476128e+04, 2.37641660e+04, 2.37807221e+04 -, 2.37972810e+04, 2.38138429e+04, 2.38304076e+04, 2.38469752e+04 -, 2.38635456e+04, 2.38801190e+04, 2.38966952e+04, 2.39132743e+04 -, 2.39298563e+04, 2.39464411e+04, 2.39630288e+04, 2.39796194e+04 -, 2.39962129e+04, 2.40128092e+04, 2.40294084e+04, 2.40460105e+04 -, 2.40626154e+04, 2.40792232e+04, 2.40958338e+04, 2.41124474e+04 -, 2.41290637e+04, 2.41456830e+04, 2.41623051e+04, 2.41789300e+04 -, 2.41955579e+04, 2.42121885e+04, 2.42288221e+04, 2.42454585e+04 -, 2.42620977e+04, 2.42787398e+04, 2.42953848e+04, 2.43120326e+04 -, 2.43286832e+04, 2.43453367e+04, 2.43619931e+04, 2.43786523e+04 -, 2.43953143e+04, 2.44119792e+04, 2.44286469e+04, 2.44453175e+04 -, 2.44619909e+04, 2.44786672e+04, 2.44953463e+04, 2.45120282e+04 -, 2.45287130e+04, 2.45454006e+04, 2.45620911e+04, 2.45787844e+04 -, 2.45954805e+04, 2.46121795e+04, 2.46288812e+04, 2.46455859e+04 -, 2.46622933e+04, 2.46790036e+04, 2.46957167e+04, 2.47124327e+04 -, 2.47291514e+04, 2.47458730e+04, 2.47625975e+04, 2.47793247e+04 -, 2.47960548e+04, 2.48127877e+04, 2.48295234e+04, 2.48462619e+04 -, 2.48630033e+04, 2.48797474e+04, 2.48964944e+04, 2.49132442e+04 -, 2.49299969e+04, 2.49467523e+04, 2.49635105e+04, 2.49802716e+04 -, 2.49970355e+04, 2.50138022e+04, 2.50305717e+04, 2.50473440e+04 -, 2.50641191e+04, 2.50808970e+04, 2.50976777e+04, 2.51144613e+04 -, 2.51312476e+04, 2.51480368e+04, 2.51648287e+04, 2.51816235e+04 -, 2.51984210e+04, 2.52152213e+04, 2.52320245e+04, 2.52488304e+04 -, 2.52656392e+04, 2.52824507e+04, 2.52992650e+04, 2.53160822e+04 -, 2.53329021e+04, 2.53497248e+04, 2.53665503e+04, 2.53833786e+04 -, 2.54002097e+04, 2.54170436e+04, 2.54338802e+04, 2.54507197e+04 -, 2.54675619e+04, 2.54844069e+04, 2.55012547e+04, 2.55181053e+04 -, 2.55349587e+04, 2.55518148e+04, 2.55686737e+04, 2.55855355e+04 -, 2.56023999e+04, 2.56192672e+04, 2.56361373e+04, 2.56530101e+04 -, 2.56698857e+04, 2.56867640e+04, 2.57036452e+04, 2.57205291e+04 -, 2.57374158e+04, 2.57543052e+04, 2.57711974e+04, 2.57880924e+04 -, 2.58049902e+04, 2.58218907e+04, 2.58387940e+04, 2.58557001e+04 -, 2.58726089e+04, 2.58895205e+04, 2.59064348e+04, 2.59233519e+04 -, 2.59402718e+04, 2.59571944e+04, 2.59741198e+04, 2.59910479e+04 -, 2.60079788e+04, 2.60249125e+04, 2.60418489e+04, 2.60587881e+04 -, 2.60757300e+04, 2.60926747e+04, 2.61096221e+04, 2.61265722e+04 -, 2.61435252e+04, 2.61604808e+04, 2.61774393e+04, 2.61944004e+04 -, 2.62113643e+04, 2.62283310e+04, 2.62453004e+04, 2.62622725e+04 -, 2.62792474e+04, 2.62962251e+04, 2.63132054e+04, 2.63301885e+04 -, 2.63471744e+04, 2.63641630e+04, 2.63811543e+04, 2.63981484e+04 -, 2.64151451e+04, 2.64321447e+04, 2.64491469e+04, 2.64661519e+04 -, 2.64831597e+04, 2.65001701e+04, 2.65171833e+04, 2.65341992e+04 -, 2.65512179e+04, 2.65682393e+04, 2.65852634e+04, 2.66022902e+04 -, 2.66193197e+04, 2.66363520e+04, 2.66533870e+04, 2.66704247e+04 -, 2.66874652e+04, 2.67045083e+04, 2.67215542e+04, 2.67386028e+04 -, 2.67556542e+04, 2.67727082e+04, 2.67897649e+04, 2.68068244e+04 -, 2.68238866e+04, 2.68409515e+04, 2.68580191e+04, 2.68750894e+04 -, 2.68921625e+04, 2.69092382e+04, 2.69263167e+04, 2.69433978e+04 -, 2.69604817e+04, 2.69775683e+04, 2.69946576e+04, 2.70117495e+04 -, 2.70288442e+04, 2.70459416e+04, 2.70630417e+04, 2.70801445e+04 -, 2.70972500e+04, 2.71143582e+04, 2.71314691e+04, 2.71485827e+04 -, 2.71656990e+04, 2.71828180e+04, 2.71999397e+04, 2.72170641e+04 -, 2.72341911e+04, 2.72513209e+04, 2.72684534e+04, 2.72855885e+04 -, 2.73027264e+04, 2.73198669e+04, 2.73370101e+04, 2.73541560e+04 -, 2.73713046e+04, 2.73884559e+04, 2.74056099e+04, 2.74227665e+04 -, 2.74399259e+04, 2.74570879e+04, 2.74742526e+04, 2.74914200e+04 -, 2.75085900e+04, 2.75257628e+04, 2.75429382e+04, 2.75601163e+04 -, 2.75772971e+04, 2.75944805e+04, 2.76116667e+04, 2.76288555e+04 -, 2.76460470e+04, 2.76632411e+04, 2.76804379e+04, 2.76976374e+04 -, 2.77148396e+04, 2.77320444e+04, 2.77492519e+04, 2.77664621e+04 -, 2.77836749e+04, 2.78008905e+04, 2.78181086e+04, 2.78353295e+04 -, 2.78525530e+04, 2.78697791e+04, 2.78870079e+04, 2.79042394e+04 -, 2.79214736e+04, 2.79387104e+04, 2.79559499e+04, 2.79731920e+04 -, 2.79904368e+04, 2.80076842e+04, 2.80249343e+04, 2.80421870e+04 -, 2.80594424e+04, 2.80767005e+04, 2.80939612e+04, 2.81112246e+04 -, 2.81284906e+04, 2.81457592e+04, 2.81630306e+04, 2.81803045e+04 -, 2.81975811e+04, 2.82148604e+04, 2.82321423e+04, 2.82494268e+04 -, 2.82667140e+04, 2.82840038e+04, 2.83012963e+04, 2.83185914e+04 -, 2.83358892e+04, 2.83531896e+04, 2.83704926e+04, 2.83877983e+04 -, 2.84051066e+04, 2.84224176e+04, 2.84397311e+04, 2.84570474e+04 -, 2.84743662e+04, 2.84916877e+04, 2.85090118e+04, 2.85263386e+04 -, 2.85436680e+04, 2.85610000e+04, 2.85783346e+04, 2.85956719e+04 -, 2.86130118e+04, 2.86303544e+04, 2.86476995e+04, 2.86650473e+04 -, 2.86823977e+04, 2.86997508e+04, 2.87171064e+04, 2.87344647e+04 -, 2.87518256e+04, 2.87691891e+04, 2.87865553e+04, 2.88039240e+04 -, 2.88212954e+04, 2.88386694e+04, 2.88560460e+04, 2.88734253e+04 -, 2.88908071e+04, 2.89081916e+04, 2.89255787e+04, 2.89429683e+04 -, 2.89603607e+04, 2.89777556e+04, 2.89951531e+04, 2.90125532e+04 -, 2.90299560e+04, 2.90473613e+04, 2.90647693e+04, 2.90821799e+04 -, 2.90995930e+04, 2.91170088e+04, 2.91344272e+04, 2.91518482e+04 -, 2.91692718e+04, 2.91866980e+04, 2.92041268e+04, 2.92215582e+04 -, 2.92389922e+04, 2.92564288e+04, 2.92738680e+04, 2.92913098e+04 -, 2.93087541e+04, 2.93262011e+04, 2.93436507e+04, 2.93611029e+04 -, 2.93785576e+04, 2.93960150e+04, 2.94134750e+04, 2.94309375e+04 -, 2.94484026e+04, 2.94658704e+04, 2.94833407e+04, 2.95008136e+04 -, 2.95182891e+04, 2.95357672e+04, 2.95532478e+04, 2.95707311e+04 -, 2.95882169e+04, 2.96057053e+04, 2.96231963e+04, 2.96406899e+04 -, 2.96581861e+04, 2.96756848e+04, 2.96931861e+04, 2.97106900e+04 -, 2.97281965e+04, 2.97457056e+04, 2.97632172e+04, 2.97807314e+04 -, 2.97982482e+04, 2.98157676e+04, 2.98332895e+04, 2.98508140e+04 -, 2.98683411e+04, 2.98858708e+04, 2.99034030e+04, 2.99209378e+04 -, 2.99384752e+04, 2.99560151e+04, 2.99735576e+04, 2.99911027e+04 -, 3.00086503e+04, 3.00262005e+04, 3.00437533e+04, 3.00613086e+04 -, 3.00788665e+04, 3.00964270e+04, 3.01139900e+04, 3.01315555e+04 -, 3.01491237e+04, 3.01666944e+04, 3.01842676e+04, 3.02018435e+04 -, 3.02194218e+04, 3.02370028e+04, 3.02545863e+04, 3.02721723e+04 -, 3.02897609e+04, 3.03073520e+04, 3.03249457e+04, 3.03425420e+04 -, 3.03601408e+04, 3.03777422e+04, 3.03953461e+04, 3.04129525e+04 -, 3.04305615e+04, 3.04481731e+04, 3.04657872e+04, 3.04834038e+04 -, 3.05010230e+04, 3.05186448e+04, 3.05362690e+04, 3.05538959e+04 -, 3.05715252e+04, 3.05891571e+04, 3.06067916e+04, 3.06244286e+04 -, 3.06420681e+04, 3.06597102e+04, 3.06773548e+04, 3.06950019e+04 -, 3.07126516e+04, 3.07303038e+04, 3.07479586e+04, 3.07656159e+04 -, 3.07832757e+04, 3.08009380e+04, 3.08186029e+04, 3.08362703e+04 -, 3.08539403e+04, 3.08716128e+04, 3.08892878e+04, 3.09069653e+04 -, 3.09246454e+04, 3.09423280e+04, 3.09600131e+04, 3.09777007e+04 -, 3.09953909e+04, 3.10130836e+04, 3.10307788e+04, 3.10484766e+04 -, 3.10661768e+04, 3.10838796e+04, 3.11015849e+04, 3.11192927e+04 -, 3.11370031e+04, 3.11547160e+04, 3.11724313e+04, 3.11901492e+04 -, 3.12078697e+04, 3.12255926e+04, 3.12433180e+04, 3.12610460e+04 -, 3.12787765e+04, 3.12965095e+04, 3.13142450e+04, 3.13319830e+04 -, 3.13497235e+04, 3.13674665e+04, 3.13852121e+04, 3.14029601e+04 -, 3.14207107e+04, 3.14384638e+04, 3.14562193e+04, 3.14739774e+04 -, 3.14917380e+04, 3.15095011e+04, 3.15272667e+04, 3.15450348e+04 -, 3.15628054e+04, 3.15805785e+04, 3.15983541e+04, 3.16161322e+04 -, 3.16339128e+04, 3.16516959e+04, 3.16694815e+04, 3.16872696e+04 -, 3.17050602e+04, 3.17228533e+04, 3.17406488e+04, 3.17584469e+04 -, 3.17762475e+04, 3.17940506e+04, 3.18118561e+04, 3.18296642e+04 -, 3.18474747e+04, 3.18652877e+04, 3.18831033e+04, 3.19009213e+04 -, 3.19187418e+04, 3.19365648e+04, 3.19543902e+04, 3.19722182e+04 -, 3.19900486e+04, 3.20078816e+04, 3.20257170e+04, 3.20435549e+04 -, 3.20613953e+04, 3.20792381e+04, 3.20970835e+04, 3.21149313e+04 -, 3.21327816e+04, 3.21506344e+04, 3.21684897e+04, 3.21863474e+04 -, 3.22042076e+04, 3.22220703e+04, 3.22399355e+04, 3.22578031e+04 -, 3.22756732e+04, 3.22935458e+04, 3.23114209e+04, 3.23292985e+04 -, 3.23471785e+04, 3.23650609e+04, 3.23829459e+04, 3.24008333e+04 -, 3.24187232e+04, 3.24366156e+04, 3.24545104e+04, 3.24724077e+04 -, 3.24903075e+04, 3.25082097e+04, 3.25261144e+04, 3.25440216e+04 -, 3.25619312e+04, 3.25798433e+04, 3.25977578e+04, 3.26156748e+04 -, 3.26335943e+04, 3.26515162e+04, 3.26694406e+04, 3.26873675e+04 -, 3.27052968e+04, 3.27232285e+04, 3.27411627e+04, 3.27590994e+04 -, 3.27770386e+04, 3.27949801e+04, 3.28129242e+04, 3.28308707e+04 -, 3.28488196e+04, 3.28667710e+04, 3.28847249e+04, 3.29026812e+04 -, 3.29206399e+04, 3.29386011e+04, 3.29565648e+04, 3.29745309e+04 -, 3.29924994e+04, 3.30104704e+04, 3.30284439e+04, 3.30464198e+04 -, 3.30643981e+04, 3.30823789e+04, 3.31003621e+04, 3.31183477e+04 -, 3.31363358e+04, 3.31543264e+04, 3.31723194e+04, 3.31903148e+04 -, 3.32083127e+04, 3.32263130e+04, 3.32443157e+04, 3.32623209e+04 -, 3.32803285e+04, 3.32983386e+04, 3.33163511e+04, 3.33343660e+04 -, 3.33523833e+04, 3.33704031e+04, 3.33884254e+04, 3.34064500e+04 -, 3.34244771e+04, 3.34425066e+04, 3.34605386e+04, 3.34785730e+04 -, 3.34966098e+04, 3.35146490e+04, 3.35326907e+04, 3.35507348e+04 -, 3.35687813e+04, 3.35868302e+04, 3.36048816e+04, 3.36229354e+04 -, 3.36409916e+04, 3.36590503e+04, 3.36771113e+04, 3.36951748e+04 -, 3.37132407e+04, 3.37313090e+04, 3.37493798e+04, 3.37674529e+04 -, 3.37855285e+04, 3.38036065e+04, 3.38216870e+04, 3.38397698e+04 -, 3.38578550e+04, 3.38759427e+04, 3.38940328e+04, 3.39121253e+04 -, 3.39302202e+04, 3.39483175e+04, 3.39664173e+04, 3.39845194e+04 -, 3.40026240e+04, 3.40207309e+04, 3.40388403e+04, 3.40569521e+04 -, 3.40750663e+04, 3.40931829e+04, 3.41113019e+04, 3.41294233e+04 -, 3.41475472e+04, 3.41656734e+04, 3.41838020e+04, 3.42019330e+04 -, 3.42200665e+04, 3.42382023e+04, 3.42563406e+04, 3.42744812e+04 -, 3.42926243e+04, 3.43107697e+04, 3.43289176e+04, 3.43470678e+04 -, 3.43652204e+04, 3.43833755e+04, 3.44015329e+04, 3.44196927e+04 -, 3.44378550e+04, 3.44560196e+04, 3.44741866e+04, 3.44923560e+04 -, 3.45105278e+04, 3.45287020e+04, 3.45468786e+04, 3.45650576e+04 -, 3.45832390e+04, 3.46014227e+04, 3.46196089e+04, 3.46377974e+04 -, 3.46559883e+04, 3.46741817e+04, 3.46923774e+04, 3.47105754e+04 -, 3.47287759e+04, 3.47469788e+04, 3.47651840e+04, 3.47833916e+04 -, 3.48016016e+04, 3.48198140e+04, 3.48380288e+04, 3.48562460e+04 -, 3.48744655e+04, 3.48926874e+04, 3.49109117e+04, 3.49291384e+04 -, 3.49473674e+04, 3.49655988e+04, 3.49838327e+04, 3.50020688e+04 -, 3.50203074e+04, 3.50385483e+04, 3.50567916e+04, 3.50750373e+04 -, 3.50932854e+04, 3.51115358e+04, 3.51297886e+04, 3.51480437e+04 -, 3.51663013e+04, 3.51845612e+04, 3.52028235e+04, 3.52210881e+04 -, 3.52393551e+04, 3.52576245e+04, 3.52758963e+04, 3.52941704e+04 -, 3.53124469e+04, 3.53307257e+04, 3.53490069e+04, 3.53672905e+04 -, 3.53855764e+04, 3.54038647e+04, 3.54221554e+04, 3.54404484e+04 -, 3.54587438e+04, 3.54770415e+04, 3.54953417e+04, 3.55136441e+04 -, 3.55319489e+04, 3.55502561e+04, 3.55685657e+04, 3.55868776e+04 -, 3.56051918e+04, 3.56235084e+04, 3.56418274e+04, 3.56601487e+04 -, 3.56784723e+04, 3.56967984e+04, 3.57151267e+04, 3.57334575e+04 -, 3.57517905e+04, 3.57701260e+04, 3.57884637e+04, 3.58068039e+04 -, 3.58251463e+04, 3.58434912e+04, 3.58618383e+04, 3.58801879e+04 -, 3.58985397e+04, 3.59168939e+04, 3.59352505e+04, 3.59536094e+04 -, 3.59719706e+04, 3.59903342e+04, 3.60087001e+04, 3.60270684e+04 -, 3.60454390e+04, 3.60638120e+04, 3.60821873e+04, 3.61005649e+04 -, 3.61189449e+04, 3.61373272e+04, 3.61557118e+04, 3.61740988e+04 -, 3.61924882e+04, 3.62108798e+04, 3.62292738e+04, 3.62476701e+04 -, 3.62660688e+04, 3.62844698e+04, 3.63028731e+04, 3.63212788e+04 -, 3.63396868e+04, 3.63580971e+04, 3.63765098e+04, 3.63949248e+04 -, 3.64133421e+04, 3.64317617e+04, 3.64501837e+04, 3.64686080e+04 -, 3.64870347e+04, 3.65054636e+04, 3.65238949e+04, 3.65423285e+04 -, 3.65607644e+04, 3.65792027e+04, 3.65976433e+04, 3.66160862e+04 -, 3.66345314e+04, 3.66529790e+04, 3.66714288e+04, 3.66898810e+04 -, 3.67083356e+04, 3.67267924e+04, 3.67452515e+04, 3.67637130e+04 -, 3.67821768e+04, 3.68006429e+04, 3.68191113e+04, 3.68375821e+04 -, 3.68560551e+04, 3.68745305e+04, 3.68930082e+04, 3.69114882e+04 -, 3.69299705e+04, 3.69484551e+04, 3.69669421e+04, 3.69854313e+04 -, 3.70039229e+04, 3.70224167e+04, 3.70409129e+04, 3.70594114e+04 -, 3.70779122e+04, 3.70964153e+04, 3.71149207e+04, 3.71334284e+04 -, 3.71519385e+04, 3.71704508e+04, 3.71889654e+04, 3.72074824e+04 -, 3.72260016e+04, 3.72445232e+04, 3.72630470e+04, 3.72815732e+04 -, 3.73001016e+04, 3.73186324e+04, 3.73371655e+04, 3.73557008e+04 -, 3.73742385e+04, 3.73927784e+04, 3.74113207e+04, 3.74298653e+04 -, 3.74484121e+04, 3.74669613e+04, 3.74855127e+04, 3.75040664e+04 -, 3.75226225e+04, 3.75411808e+04, 3.75597414e+04, 3.75783043e+04 -, 3.75968696e+04, 3.76154371e+04, 3.76340068e+04, 3.76525789e+04 -, 3.76711533e+04, 3.76897300e+04, 3.77083089e+04, 3.77268902e+04 -, 3.77454737e+04, 3.77640595e+04, 3.77826476e+04, 3.78012380e+04 -, 3.78198307e+04, 3.78384257e+04, 3.78570229e+04, 3.78756224e+04 -, 3.78942242e+04, 3.79128283e+04, 3.79314347e+04, 3.79500434e+04 -, 3.79686543e+04, 3.79872676e+04, 3.80058831e+04, 3.80245009e+04 -, 3.80431209e+04, 3.80617433e+04, 3.80803679e+04, 3.80989948e+04 -, 3.81176240e+04, 3.81362554e+04, 3.81548891e+04, 3.81735251e+04 -, 3.81921634e+04, 3.82108040e+04, 3.82294468e+04, 3.82480919e+04 -, 3.82667393e+04, 3.82853889e+04, 3.83040408e+04, 3.83226950e+04 -, 3.83413515e+04, 3.83600102e+04, 3.83786712e+04, 3.83973345e+04 -, 3.84160000e+04, 3.84346678e+04, 3.84533379e+04, 3.84720102e+04 -, 3.84906848e+04, 3.85093617e+04, 3.85280408e+04, 3.85467222e+04 -, 3.85654058e+04, 3.85840918e+04, 3.86027800e+04, 3.86214704e+04 -, 3.86401631e+04, 3.86588581e+04, 3.86775553e+04, 3.86962548e+04 -, 3.87149565e+04, 3.87336605e+04, 3.87523668e+04, 3.87710753e+04 -, 3.87897861e+04, 3.88084992e+04, 3.88272144e+04, 3.88459320e+04 -, 3.88646518e+04, 3.88833739e+04, 3.89020982e+04, 3.89208247e+04 -, 3.89395535e+04, 3.89582846e+04, 3.89770179e+04, 3.89957535e+04 -, 3.90144913e+04, 3.90332314e+04, 3.90519737e+04, 3.90707183e+04 -, 3.90894651e+04, 3.91082142e+04, 3.91269655e+04, 3.91457191e+04 -, 3.91644749e+04, 3.91832329e+04, 3.92019932e+04, 3.92207558e+04 -, 3.92395206e+04, 3.92582876e+04, 3.92770569e+04, 3.92958284e+04 -, 3.93146022e+04, 3.93333782e+04, 3.93521564e+04, 3.93709369e+04 -, 3.93897196e+04, 3.94085046e+04, 3.94272918e+04, 3.94460812e+04 -, 3.94648729e+04, 3.94836668e+04, 3.95024630e+04, 3.95212614e+04 -, 3.95400620e+04, 3.95588648e+04, 3.95776699e+04, 3.95964773e+04 -, 3.96152868e+04, 3.96340986e+04, 3.96529126e+04, 3.96717289e+04 -, 3.96905474e+04, 3.97093681e+04, 3.97281911e+04, 3.97470162e+04 -, 3.97658436e+04, 3.97846733e+04, 3.98035052e+04, 3.98223392e+04 -, 3.98411756e+04, 3.98600141e+04, 3.98788549e+04, 3.98976979e+04 -, 3.99165431e+04, 3.99353906e+04, 3.99542402e+04, 3.99730921e+04 -, 3.99919463e+04, 4.00108026e+04, 4.00296612e+04, 4.00485220e+04 -, 4.00673850e+04, 4.00862502e+04, 4.01051176e+04, 4.01239873e+04 -, 4.01428592e+04, 4.01617333e+04, 4.01806096e+04, 4.01994882e+04 -, 4.02183689e+04, 4.02372519e+04, 4.02561371e+04, 4.02750245e+04 -, 4.02939141e+04, 4.03128059e+04, 4.03317000e+04, 4.03505962e+04 -, 4.03694947e+04, 4.03883954e+04, 4.04072983e+04, 4.04262034e+04 -, 4.04451107e+04, 4.04640202e+04, 4.04829319e+04, 4.05018459e+04 -, 4.05207620e+04, 4.05396804e+04, 4.05586010e+04, 4.05775237e+04 -, 4.05964487e+04, 4.06153759e+04, 4.06343053e+04, 4.06532369e+04 -, 4.06721707e+04, 4.06911067e+04, 4.07100449e+04, 4.07289853e+04 -, 4.07479279e+04, 4.07668727e+04, 4.07858198e+04, 4.08047690e+04 -, 4.08237204e+04, 4.08426740e+04, 4.08616298e+04, 4.08805878e+04 -, 4.08995480e+04, 4.09185105e+04, 4.09374751e+04, 4.09564419e+04 -, 4.09754109e+04, 4.09943821e+04, 4.10133555e+04, 4.10323310e+04 -, 4.10513088e+04, 4.10702888e+04, 4.10892710e+04, 4.11082553e+04 -, 4.11272419e+04, 4.11462306e+04, 4.11652215e+04, 4.11842147e+04 -, 4.12032100e+04, 4.12222075e+04, 4.12412072e+04, 4.12602091e+04 -, 4.12792131e+04, 4.12982194e+04, 4.13172278e+04, 4.13362385e+04 -, 4.13552513e+04, 4.13742663e+04, 4.13932835e+04, 4.14123028e+04 -, 4.14313244e+04, 4.14503481e+04, 4.14693740e+04, 4.14884021e+04 -, 4.15074324e+04, 4.15264649e+04, 4.15454995e+04, 4.15645364e+04 -, 4.15835754e+04, 4.16026166e+04, 4.16216599e+04, 4.16407055e+04 -, 4.16597532e+04, 4.16788031e+04, 4.16978552e+04, 4.17169094e+04 -, 4.17359659e+04, 4.17550245e+04, 4.17740853e+04, 4.17931482e+04 -, 4.18122133e+04, 4.18312807e+04, 4.18503501e+04, 4.18694218e+04 -, 4.18884956e+04, 4.19075716e+04, 4.19266498e+04, 4.19457301e+04 -, 4.19648126e+04, 4.19838973e+04, 4.20029841e+04, 4.20220731e+04 -, 4.20411643e+04, 4.20602576e+04, 4.20793532e+04, 4.20984508e+04 -, 4.21175507e+04, 4.21366527e+04, 4.21557569e+04, 4.21748632e+04 -, 4.21939717e+04, 4.22130824e+04, 4.22321952e+04, 4.22513102e+04 -, 4.22704274e+04, 4.22895467e+04, 4.23086682e+04, 4.23277918e+04 -, 4.23469176e+04, 4.23660456e+04, 4.23851757e+04, 4.24043080e+04 -, 4.24234424e+04, 4.24425790e+04, 4.24617178e+04, 4.24808587e+04 -, 4.25000018e+04, 4.25191470e+04, 4.25382944e+04, 4.25574439e+04 -, 4.25765956e+04, 4.25957494e+04, 4.26149054e+04, 4.26340636e+04 -, 4.26532239e+04, 4.26723863e+04, 4.26915509e+04, 4.27107177e+04 -, 4.27298866e+04, 4.27490576e+04, 4.27682308e+04, 4.27874062e+04 -, 4.28065837e+04, 4.28257634e+04, 4.28449452e+04, 4.28641291e+04 -, 4.28833152e+04, 4.29025034e+04, 4.29216938e+04, 4.29408863e+04 -, 4.29600810e+04, 4.29792778e+04, 4.29984768e+04, 4.30176779e+04 -, 4.30368812e+04, 4.30560865e+04, 4.30752941e+04, 4.30945038e+04 -, 4.31137156e+04, 4.31329295e+04, 4.31521456e+04, 4.31713639e+04 -, 4.31905842e+04, 4.32098067e+04, 4.32290314e+04, 4.32482582e+04 -, 4.32674871e+04, 4.32867182e+04, 4.33059514e+04, 4.33251867e+04 -, 4.33444242e+04, 4.33636638e+04, 4.33829055e+04, 4.34021494e+04 -, 4.34213954e+04, 4.34406435e+04, 4.34598938e+04, 4.34791462e+04 -, 4.34984007e+04, 4.35176574e+04, 4.35369162e+04, 4.35561771e+04 -, 4.35754402e+04, 4.35947054e+04, 4.36139727e+04, 4.36332421e+04 -, 4.36525137e+04, 4.36717874e+04, 4.36910632e+04, 4.37103412e+04 -, 4.37296212e+04, 4.37489034e+04, 4.37681878e+04, 4.37874742e+04 -, 4.38067628e+04, 4.38260535e+04, 4.38453463e+04, 4.38646413e+04 -, 4.38839383e+04, 4.39032375e+04, 4.39225388e+04, 4.39418422e+04 -, 4.39611478e+04, 4.39804555e+04, 4.39997652e+04, 4.40190772e+04 -, 4.40383912e+04, 4.40577073e+04, 4.40770256e+04, 4.40963460e+04 -, 4.41156684e+04, 4.41349931e+04, 4.41543198e+04, 4.41736486e+04 -, 4.41929796e+04, 4.42123126e+04, 4.42316478e+04, 4.42509851e+04 -, 4.42703245e+04, 4.42896661e+04, 4.43090097e+04, 4.43283554e+04 -, 4.43477033e+04, 4.43670533e+04, 4.43864053e+04, 4.44057595e+04 -, 4.44251158e+04, 4.44444742e+04, 4.44638347e+04, 4.44831973e+04 -, 4.45025621e+04, 4.45219289e+04, 4.45412978e+04, 4.45606689e+04 -, 4.45800420e+04, 4.45994173e+04, 4.46187947e+04, 4.46381741e+04 -, 4.46575557e+04, 4.46769394e+04, 4.46963251e+04, 4.47157130e+04 -, 4.47351030e+04, 4.47544951e+04, 4.47738892e+04, 4.47932855e+04 -, 4.48126839e+04, 4.48320844e+04, 4.48514870e+04, 4.48708916e+04 -, 4.48902984e+04, 4.49097073e+04, 4.49291183e+04, 4.49485313e+04 -, 4.49679465e+04, 4.49873638e+04, 4.50067831e+04, 4.50262046e+04 -, 4.50456281e+04, 4.50650537e+04, 4.50844815e+04, 4.51039113e+04 -, 4.51233432e+04, 4.51427772e+04, 4.51622133e+04, 4.51816515e+04 -, 4.52010918e+04, 4.52205342e+04, 4.52399787e+04, 4.52594252e+04 -, 4.52788738e+04, 4.52983246e+04, 4.53177774e+04, 4.53372323e+04 -, 4.53566893e+04, 4.53761484e+04, 4.53956096e+04, 4.54150728e+04 -, 4.54345382e+04, 4.54540056e+04, 4.54734751e+04, 4.54929467e+04 -, 4.55124204e+04, 4.55318961e+04, 4.55513740e+04, 4.55708539e+04 -, 4.55903359e+04, 4.56098200e+04, 4.56293062e+04, 4.56487944e+04 -, 4.56682847e+04, 4.56877772e+04, 4.57072717e+04, 4.57267682e+04 -, 4.57462669e+04, 4.57657676e+04, 4.57852704e+04, 4.58047753e+04 -, 4.58242822e+04, 4.58437913e+04, 4.58633024e+04, 4.58828156e+04 -, 4.59023308e+04, 4.59218482e+04, 4.59413676e+04, 4.59608891e+04 -, 4.59804126e+04, 4.59999382e+04, 4.60194659e+04, 4.60389957e+04 -, 4.60585275e+04, 4.60780615e+04, 4.60975974e+04, 4.61171355e+04 -, 4.61366756e+04, 4.61562178e+04, 4.61757621e+04, 4.61953084e+04 -, 4.62148568e+04, 4.62344073e+04, 4.62539598e+04, 4.62735144e+04 -, 4.62930711e+04, 4.63126298e+04, 4.63321906e+04, 4.63517535e+04 -, 4.63713184e+04, 4.63908854e+04, 4.64104544e+04, 4.64300255e+04 -, 4.64495987e+04, 4.64691740e+04, 4.64887513e+04, 4.65083306e+04 -, 4.65279120e+04, 4.65474955e+04, 4.65670811e+04, 4.65866687e+04 -, 4.66062583e+04, 4.66258501e+04, 4.66454438e+04, 4.66650397e+04 -, 4.66846376e+04, 4.67042375e+04, 4.67238395e+04, 4.67434436e+04 -, 4.67630497e+04, 4.67826579e+04, 4.68022681e+04, 4.68218804e+04 -, 4.68414948e+04, 4.68611112e+04, 4.68807296e+04, 4.69003501e+04 -, 4.69199727e+04, 4.69395973e+04, 4.69592239e+04, 4.69788526e+04 -, 4.69984834e+04, 4.70181162e+04, 4.70377510e+04, 4.70573879e+04 -, 4.70770269e+04, 4.70966679e+04, 4.71163109e+04, 4.71359560e+04 -, 4.71556032e+04, 4.71752524e+04, 4.71949036e+04, 4.72145569e+04 -, 4.72342122e+04, 4.72538696e+04, 4.72735290e+04, 4.72931905e+04 -, 4.73128540e+04, 4.73325195e+04, 4.73521871e+04, 4.73718568e+04 -, 4.73915284e+04, 4.74112022e+04, 4.74308779e+04, 4.74505557e+04 -, 4.74702356e+04, 4.74899174e+04, 4.75096014e+04, 4.75292873e+04 -, 4.75489753e+04, 4.75686653e+04, 4.75883574e+04, 4.76080515e+04 -, 4.76277477e+04, 4.76474459e+04, 4.76671461e+04, 4.76868483e+04 -, 4.77065526e+04, 4.77262590e+04, 4.77459673e+04, 4.77656777e+04 -, 4.77853901e+04, 4.78051046e+04, 4.78248211e+04, 4.78445396e+04 -, 4.78642602e+04, 4.78839828e+04, 4.79037074e+04, 4.79234340e+04 -, 4.79431627e+04, 4.79628934e+04, 4.79826262e+04, 4.80023609e+04 -, 4.80220977e+04, 4.80418366e+04, 4.80615774e+04, 4.80813203e+04 -, 4.81010652e+04, 4.81208122e+04, 4.81405611e+04, 4.81603121e+04 -, 4.81800651e+04, 4.81998201e+04, 4.82195772e+04, 4.82393363e+04 -, 4.82590974e+04, 4.82788605e+04, 4.82986257e+04, 4.83183929e+04 -, 4.83381621e+04, 4.83579333e+04, 4.83777065e+04, 4.83974818e+04 -, 4.84172591e+04, 4.84370384e+04, 4.84568197e+04, 4.84766030e+04 -, 4.84963884e+04, 4.85161758e+04, 4.85359652e+04, 4.85557566e+04 -, 4.85755500e+04, 4.85953454e+04, 4.86151429e+04, 4.86349424e+04 -, 4.86547439e+04, 4.86745474e+04, 4.86943529e+04, 4.87141604e+04 -, 4.87339700e+04, 4.87537816e+04, 4.87735951e+04, 4.87934107e+04 -, 4.88132283e+04, 4.88330479e+04, 4.88528696e+04, 4.88726932e+04 -, 4.88925188e+04, 4.89123465e+04, 4.89321762e+04, 4.89520078e+04 -, 4.89718415e+04, 4.89916772e+04, 4.90115149e+04, 4.90313546e+04 -, 4.90511963e+04, 4.90710401e+04, 4.90908858e+04, 4.91107335e+04 -, 4.91305832e+04, 4.91504350e+04, 4.91702887e+04, 4.91901445e+04 -, 4.92100022e+04, 4.92298620e+04, 4.92497238e+04, 4.92695875e+04 -, 4.92894533e+04, 4.93093211e+04, 4.93291908e+04, 4.93490626e+04 -, 4.93689364e+04, 4.93888122e+04, 4.94086899e+04, 4.94285697e+04 -, 4.94484515e+04, 4.94683352e+04, 4.94882210e+04, 4.95081088e+04 -, 4.95279985e+04, 4.95478903e+04, 4.95677841e+04, 4.95876798e+04 -, 4.96075776e+04, 4.96274773e+04, 4.96473791e+04, 4.96672828e+04 -, 4.96871885e+04, 4.97070962e+04, 4.97270060e+04, 4.97469177e+04 -, 4.97668314e+04, 4.97867471e+04, 4.98066648e+04, 4.98265844e+04 -, 4.98465061e+04, 4.98664298e+04, 4.98863554e+04, 4.99062830e+04 -, 4.99262127e+04, 4.99461443e+04, 4.99660779e+04, 4.99860135e+04 -, 5.00059511e+04, 5.00258907e+04, 5.00458322e+04, 5.00657758e+04 -, 5.00857213e+04, 5.01056688e+04, 5.01256183e+04, 5.01455698e+04 -, 5.01655233e+04, 5.01854787e+04, 5.02054362e+04, 5.02253956e+04 -, 5.02453570e+04, 5.02653204e+04, 5.02852858e+04, 5.03052531e+04 -, 5.03252224e+04, 5.03451938e+04, 5.03651671e+04, 5.03851423e+04 -, 5.04051196e+04, 5.04250988e+04, 5.04450800e+04, 5.04650632e+04 -, 5.04850484e+04, 5.05050356e+04, 5.05250247e+04, 5.05450158e+04 -, 5.05650089e+04, 5.05850040e+04, 5.06050010e+04, 5.06250000e+04 -, 5.06450010e+04, 5.06650040e+04, 5.06850089e+04, 5.07050158e+04 -, 5.07250247e+04, 5.07450355e+04, 5.07650484e+04, 5.07850632e+04 -, 5.08050800e+04, 5.08250987e+04, 5.08451194e+04, 5.08651421e+04 -, 5.08851668e+04, 5.09051934e+04, 5.09252220e+04, 5.09452526e+04 -, 5.09652851e+04, 5.09853196e+04, 5.10053561e+04, 5.10253945e+04 -, 5.10454350e+04, 5.10654773e+04, 5.10855217e+04, 5.11055680e+04 -, 5.11256163e+04, 5.11456665e+04, 5.11657187e+04, 5.11857729e+04 -, 5.12058290e+04, 5.12258871e+04, 5.12459472e+04, 5.12660092e+04 -, 5.12860732e+04, 5.13061392e+04, 5.13262071e+04, 5.13462770e+04 -, 5.13663488e+04, 5.13864226e+04, 5.14064984e+04, 5.14265761e+04 -, 5.14466558e+04, 5.14667374e+04, 5.14868210e+04, 5.15069066e+04 -, 5.15269941e+04, 5.15470836e+04, 5.15671750e+04, 5.15872684e+04 -, 5.16073638e+04, 5.16274611e+04, 5.16475603e+04, 5.16676615e+04 -, 5.16877647e+04, 5.17078698e+04, 5.17279769e+04, 5.17480859e+04 -, 5.17681969e+04, 5.17883099e+04, 5.18084248e+04, 5.18285416e+04 -, 5.18486604e+04, 5.18687812e+04, 5.18889039e+04, 5.19090285e+04 -, 5.19291551e+04, 5.19492837e+04, 5.19694142e+04, 5.19895466e+04 -, 5.20096810e+04, 5.20298174e+04, 5.20499557e+04, 5.20700959e+04 -, 5.20902381e+04, 5.21103823e+04, 5.21305284e+04, 5.21506764e+04 -, 5.21708264e+04, 5.21909783e+04, 5.22111322e+04, 5.22312880e+04 -, 5.22514458e+04, 5.22716055e+04, 5.22917671e+04, 5.23119307e+04 -, 5.23320963e+04, 5.23522638e+04, 5.23724332e+04, 5.23926046e+04 -, 5.24127779e+04, 5.24329531e+04, 5.24531303e+04, 5.24733094e+04 -, 5.24934905e+04, 5.25136735e+04, 5.25338585e+04, 5.25540454e+04 -, 5.25742342e+04, 5.25944250e+04, 5.26146177e+04, 5.26348123e+04 -, 5.26550089e+04, 5.26752074e+04, 5.26954079e+04, 5.27156102e+04 -, 5.27358146e+04, 5.27560208e+04, 5.27762290e+04, 5.27964392e+04 -, 5.28166512e+04, 5.28368652e+04, 5.28570811e+04, 5.28772990e+04 -, 5.28975188e+04, 5.29177405e+04, 5.29379642e+04, 5.29581898e+04 -, 5.29784173e+04, 5.29986468e+04, 5.30188782e+04, 5.30391115e+04 -, 5.30593467e+04, 5.30795839e+04, 5.30998230e+04, 5.31200640e+04 -, 5.31403070e+04, 5.31605519e+04, 5.31807987e+04, 5.32010475e+04 -, 5.32212981e+04, 5.32415507e+04, 5.32618053e+04, 5.32820617e+04 -, 5.33023201e+04, 5.33225804e+04, 5.33428426e+04, 5.33631068e+04 -, 5.33833728e+04, 5.34036408e+04, 5.34239108e+04, 5.34441826e+04 -, 5.34644564e+04, 5.34847321e+04, 5.35050097e+04, 5.35252892e+04 -, 5.35455706e+04, 5.35658540e+04, 5.35861393e+04, 5.36064265e+04 -, 5.36267157e+04, 5.36470067e+04, 5.36672997e+04, 5.36875946e+04 -, 5.37078914e+04, 5.37281901e+04, 5.37484908e+04, 5.37687933e+04 -, 5.37890978e+04, 5.38094042e+04, 5.38297125e+04, 5.38500227e+04 -, 5.38703349e+04, 5.38906489e+04, 5.39109649e+04, 5.39312828e+04 -, 5.39516026e+04, 5.39719243e+04, 5.39922479e+04, 5.40125734e+04 -, 5.40329009e+04, 5.40532302e+04, 5.40735615e+04, 5.40938947e+04 -, 5.41142298e+04, 5.41345668e+04, 5.41549057e+04, 5.41752465e+04 -, 5.41955893e+04, 5.42159339e+04, 5.42362805e+04, 5.42566289e+04 -, 5.42769793e+04, 5.42973316e+04, 5.43176858e+04, 5.43380419e+04 -, 5.43583999e+04, 5.43787598e+04, 5.43991216e+04, 5.44194853e+04 -, 5.44398509e+04, 5.44602184e+04, 5.44805879e+04, 5.45009592e+04 -, 5.45213324e+04, 5.45417076e+04, 5.45620846e+04, 5.45824636e+04 -, 5.46028444e+04, 5.46232272e+04, 5.46436118e+04, 5.46639984e+04 -, 5.46843868e+04, 5.47047772e+04, 5.47251694e+04, 5.47455636e+04 -, 5.47659597e+04, 5.47863576e+04, 5.48067575e+04, 5.48271592e+04 -, 5.48475629e+04, 5.48679684e+04, 5.48883759e+04, 5.49087852e+04 -, 5.49291964e+04, 5.49496096e+04, 5.49700246e+04, 5.49904415e+04 -, 5.50108604e+04, 5.50312811e+04, 5.50517037e+04, 5.50721282e+04 -, 5.50925546e+04, 5.51129829e+04, 5.51334131e+04, 5.51538452e+04 -, 5.51742791e+04, 5.51947150e+04, 5.52151528e+04, 5.52355924e+04 -, 5.52560339e+04, 5.52764774e+04, 5.52969227e+04, 5.53173699e+04 -, 5.53378190e+04, 5.53582700e+04, 5.53787229e+04, 5.53991776e+04 -, 5.54196343e+04, 5.54400928e+04, 5.54605533e+04, 5.54810156e+04 -, 5.55014798e+04, 5.55219459e+04, 5.55424138e+04, 5.55628837e+04 -, 5.55833555e+04, 5.56038291e+04, 5.56243046e+04, 5.56447820e+04 -, 5.56652613e+04, 5.56857425e+04, 5.57062255e+04, 5.57267105e+04 -, 5.57471973e+04, 5.57676860e+04, 5.57881766e+04, 5.58086690e+04 -, 5.58291634e+04, 5.58496596e+04, 5.58701577e+04, 5.58906577e+04 -, 5.59111596e+04, 5.59316633e+04, 5.59521689e+04, 5.59726765e+04 -, 5.59931858e+04, 5.60136971e+04, 5.60342102e+04, 5.60547253e+04 -, 5.60752422e+04, 5.60957609e+04, 5.61162816e+04, 5.61368041e+04 -, 5.61573285e+04, 5.61778548e+04, 5.61983829e+04, 5.62189130e+04 -, 5.62394449e+04, 5.62599786e+04, 5.62805143e+04, 5.63010518e+04 -, 5.63215912e+04, 5.63421325e+04, 5.63626756e+04, 5.63832206e+04 -, 5.64037675e+04, 5.64243163e+04, 5.64448669e+04, 5.64654194e+04 -, 5.64859738e+04, 5.65065300e+04, 5.65270881e+04, 5.65476481e+04 -, 5.65682099e+04, 5.65887737e+04, 5.66093392e+04, 5.66299067e+04 -, 5.66504760e+04, 5.66710472e+04, 5.66916202e+04, 5.67121952e+04 -, 5.67327720e+04, 5.67533506e+04, 5.67739311e+04, 5.67945135e+04 -, 5.68150978e+04, 5.68356839e+04, 5.68562718e+04, 5.68768617e+04 -, 5.68974534e+04, 5.69180470e+04, 5.69386424e+04, 5.69592397e+04 -, 5.69798388e+04, 5.70004399e+04, 5.70210427e+04, 5.70416475e+04 -, 5.70622541e+04, 5.70828625e+04, 5.71034729e+04, 5.71240850e+04 -, 5.71446991e+04, 5.71653150e+04, 5.71859327e+04, 5.72065524e+04 -, 5.72271738e+04, 5.72477972e+04, 5.72684224e+04, 5.72890494e+04 -, 5.73096783e+04, 5.73303091e+04, 5.73509417e+04, 5.73715762e+04 -, 5.73922125e+04, 5.74128507e+04, 5.74334907e+04, 5.74541326e+04 -, 5.74747764e+04, 5.74954220e+04, 5.75160694e+04, 5.75367187e+04 -, 5.75573699e+04, 5.75780229e+04, 5.75986778e+04, 5.76193345e+04 -, 5.76399931e+04, 5.76606535e+04, 5.76813158e+04, 5.77019799e+04 -, 5.77226458e+04, 5.77433137e+04, 5.77639833e+04, 5.77846549e+04 -, 5.78053282e+04, 5.78260035e+04, 5.78466805e+04, 5.78673594e+04 -, 5.78880402e+04, 5.79087228e+04, 5.79294073e+04, 5.79500936e+04 -, 5.79707817e+04, 5.79914717e+04, 5.80121636e+04, 5.80328572e+04 -, 5.80535528e+04, 5.80742501e+04, 5.80949494e+04, 5.81156504e+04 -, 5.81363533e+04, 5.81570581e+04, 5.81777647e+04, 5.81984731e+04 -, 5.82191834e+04, 5.82398955e+04, 5.82606095e+04, 5.82813253e+04 -, 5.83020429e+04, 5.83227624e+04, 5.83434837e+04, 5.83642069e+04 -, 5.83849319e+04, 5.84056588e+04, 5.84263874e+04, 5.84471180e+04 -, 5.84678503e+04, 5.84885845e+04, 5.85093206e+04, 5.85300584e+04 -, 5.85507982e+04, 5.85715397e+04, 5.85922831e+04, 5.86130283e+04 -, 5.86337754e+04, 5.86545243e+04, 5.86752750e+04, 5.86960275e+04 -, 5.87167819e+04, 5.87375382e+04, 5.87582962e+04, 5.87790561e+04 -, 5.87998179e+04, 5.88205814e+04, 5.88413468e+04, 5.88621141e+04 -, 5.88828831e+04, 5.89036540e+04, 5.89244267e+04, 5.89452013e+04 -, 5.89659777e+04, 5.89867559e+04, 5.90075359e+04, 5.90283178e+04 -, 5.90491015e+04, 5.90698870e+04, 5.90906744e+04, 5.91114636e+04 -, 5.91322546e+04, 5.91530475e+04, 5.91738421e+04, 5.91946386e+04 -, 5.92154370e+04, 5.92362371e+04, 5.92570391e+04, 5.92778429e+04 -, 5.92986485e+04, 5.93194560e+04, 5.93402653e+04, 5.93610764e+04 -, 5.93818893e+04, 5.94027041e+04, 5.94235206e+04, 5.94443390e+04 -, 5.94651593e+04, 5.94859813e+04, 5.95068052e+04, 5.95276309e+04 -, 5.95484584e+04, 5.95692877e+04, 5.95901189e+04, 5.96109518e+04 -, 5.96317866e+04, 5.96526232e+04, 5.96734617e+04, 5.96943019e+04 -, 5.97151440e+04, 5.97359879e+04, 5.97568336e+04, 5.97776811e+04 -, 5.97985305e+04, 5.98193816e+04, 5.98402346e+04, 5.98610894e+04 -, 5.98819460e+04, 5.99028045e+04, 5.99236647e+04, 5.99445268e+04 -, 5.99653906e+04, 5.99862563e+04, 6.00071238e+04, 6.00279932e+04 -, 6.00488643e+04, 6.00697372e+04, 6.00906120e+04, 6.01114886e+04 -, 6.01323670e+04, 6.01532472e+04, 6.01741292e+04, 6.01950130e+04 -, 6.02158986e+04, 6.02367861e+04, 6.02576753e+04, 6.02785664e+04 -, 6.02994593e+04, 6.03203540e+04, 6.03412505e+04, 6.03621488e+04 -, 6.03830489e+04, 6.04039508e+04, 6.04248546e+04, 6.04457601e+04 -, 6.04666675e+04, 6.04875766e+04, 6.05084876e+04, 6.05294003e+04 -, 6.05503149e+04, 6.05712313e+04, 6.05921495e+04, 6.06130695e+04 -, 6.06339913e+04, 6.06549149e+04, 6.06758403e+04, 6.06967675e+04 -, 6.07176965e+04, 6.07386274e+04, 6.07595600e+04, 6.07804944e+04 -, 6.08014306e+04, 6.08223687e+04, 6.08433085e+04, 6.08642501e+04 -, 6.08851936e+04, 6.09061388e+04, 6.09270859e+04, 6.09480347e+04 -, 6.09689853e+04, 6.09899378e+04, 6.10108920e+04, 6.10318481e+04 -, 6.10528059e+04, 6.10737655e+04, 6.10947270e+04, 6.11156902e+04 -, 6.11366552e+04, 6.11576221e+04, 6.11785907e+04, 6.11995611e+04 -, 6.12205333e+04, 6.12415074e+04, 6.12624832e+04, 6.12834608e+04 -, 6.13044402e+04, 6.13254214e+04, 6.13464044e+04, 6.13673892e+04 -, 6.13883757e+04, 6.14093641e+04, 6.14303543e+04, 6.14513463e+04 -, 6.14723400e+04, 6.14933356e+04, 6.15143329e+04, 6.15353320e+04 -, 6.15563330e+04, 6.15773357e+04, 6.15983402e+04, 6.16193465e+04 -, 6.16403546e+04, 6.16613644e+04, 6.16823761e+04, 6.17033896e+04 -, 6.17244048e+04, 6.17454218e+04, 6.17664407e+04, 6.17874613e+04 -, 6.18084837e+04, 6.18295079e+04, 6.18505338e+04, 6.18715616e+04 -, 6.18925912e+04, 6.19136225e+04, 6.19346556e+04, 6.19556905e+04 -, 6.19767272e+04, 6.19977657e+04, 6.20188060e+04, 6.20398480e+04 -, 6.20608918e+04, 6.20819374e+04, 6.21029848e+04, 6.21240340e+04 -, 6.21450850e+04, 6.21661377e+04, 6.21871923e+04, 6.22082486e+04 -, 6.22293067e+04, 6.22503666e+04, 6.22714282e+04, 6.22924917e+04 -, 6.23135569e+04, 6.23346239e+04, 6.23556927e+04, 6.23767632e+04 -, 6.23978356e+04, 6.24189097e+04, 6.24399856e+04, 6.24610633e+04 -, 6.24821427e+04, 6.25032240e+04, 6.25243070e+04, 6.25453918e+04 -, 6.25664783e+04, 6.25875667e+04, 6.26086568e+04, 6.26297487e+04 -, 6.26508424e+04, 6.26719378e+04, 6.26930350e+04, 6.27141340e+04 -, 6.27352348e+04, 6.27563373e+04, 6.27774417e+04, 6.27985478e+04 -, 6.28196556e+04, 6.28407653e+04, 6.28618767e+04, 6.28829899e+04 -, 6.29041048e+04, 6.29252216e+04, 6.29463401e+04, 6.29674603e+04 -, 6.29885824e+04, 6.30097062e+04, 6.30308318e+04, 6.30519592e+04 -, 6.30730883e+04, 6.30942192e+04, 6.31153518e+04, 6.31364863e+04 -, 6.31576225e+04, 6.31787605e+04, 6.31999002e+04, 6.32210417e+04 -, 6.32421850e+04, 6.32633300e+04, 6.32844768e+04, 6.33056254e+04 -, 6.33267758e+04, 6.33479279e+04, 6.33690818e+04, 6.33902374e+04 -, 6.34113948e+04, 6.34325540e+04, 6.34537149e+04, 6.34748776e+04 -, 6.34960421e+04, 6.35172083e+04, 6.35383763e+04, 6.35595461e+04 -, 6.35807176e+04, 6.36018909e+04, 6.36230659e+04, 6.36442427e+04 -, 6.36654213e+04, 6.36866016e+04, 6.37077837e+04, 6.37289675e+04 -, 6.37501532e+04, 6.37713405e+04, 6.37925297e+04, 6.38137205e+04 -, 6.38349132e+04, 6.38561076e+04, 6.38773038e+04, 6.38985017e+04 -, 6.39197014e+04, 6.39409028e+04, 6.39621060e+04, 6.39833110e+04 -, 6.40045177e+04, 6.40257262e+04, 6.40469364e+04, 6.40681484e+04 -, 6.40893621e+04, 6.41105776e+04, 6.41317949e+04, 6.41530139e+04 -, 6.41742346e+04, 6.41954572e+04, 6.42166814e+04, 6.42379075e+04 -, 6.42591352e+04, 6.42803648e+04, 6.43015960e+04, 6.43228291e+04 -, 6.43440639e+04, 6.43653004e+04, 6.43865387e+04, 6.44077788e+04 -, 6.44290205e+04, 6.44502641e+04, 6.44715094e+04, 6.44927564e+04 -, 6.45140052e+04, 6.45352558e+04, 6.45565081e+04, 6.45777621e+04 -, 6.45990179e+04, 6.46202755e+04, 6.46415348e+04, 6.46627958e+04 -, 6.46840586e+04, 6.47053231e+04, 6.47265894e+04, 6.47478574e+04 -, 6.47691272e+04, 6.47903987e+04, 6.48116720e+04, 6.48329470e+04 -, 6.48542238e+04, 6.48755023e+04, 6.48967825e+04, 6.49180645e+04 -, 6.49393483e+04, 6.49606337e+04, 6.49819210e+04, 6.50032099e+04 -, 6.50245007e+04, 6.50457931e+04, 6.50670873e+04, 6.50883832e+04 -, 6.51096809e+04, 6.51309804e+04, 6.51522815e+04, 6.51735844e+04 -, 6.51948891e+04, 6.52161955e+04, 6.52375036e+04, 6.52588135e+04 -, 6.52801251e+04, 6.53014384e+04, 6.53227535e+04, 6.53440703e+04 -, 6.53653889e+04, 6.53867092e+04, 6.54080313e+04, 6.54293550e+04 -, 6.54506806e+04, 6.54720078e+04, 6.54933368e+04, 6.55146675e+04 -, 6.55360000e+04, 6.55573342e+04, 6.55786701e+04, 6.56000078e+04 -, 6.56213472e+04, 6.56426884e+04, 6.56640312e+04, 6.56853759e+04 -, 6.57067222e+04, 6.57280703e+04, 6.57494201e+04, 6.57707716e+04 -, 6.57921249e+04, 6.58134799e+04, 6.58348367e+04, 6.58561952e+04 -, 6.58775554e+04, 6.58989173e+04, 6.59202810e+04, 6.59416464e+04 -, 6.59630135e+04, 6.59843824e+04, 6.60057530e+04, 6.60271253e+04 -, 6.60484994e+04, 6.60698751e+04, 6.60912526e+04, 6.61126319e+04 -, 6.61340129e+04, 6.61553956e+04, 6.61767800e+04, 6.61981661e+04 -, 6.62195540e+04, 6.62409436e+04, 6.62623350e+04, 6.62837280e+04 -, 6.63051228e+04, 6.63265193e+04, 6.63479176e+04, 6.63693175e+04 -, 6.63907192e+04, 6.64121226e+04, 6.64335278e+04, 6.64549346e+04 -, 6.64763432e+04, 6.64977535e+04, 6.65191656e+04, 6.65405793e+04 -, 6.65619948e+04, 6.65834120e+04, 6.66048309e+04, 6.66262516e+04 -, 6.66476740e+04, 6.66690981e+04, 6.66905239e+04, 6.67119514e+04 -, 6.67333807e+04, 6.67548116e+04, 6.67762443e+04, 6.67976788e+04 -, 6.68191149e+04, 6.68405527e+04, 6.68619923e+04, 6.68834336e+04 -, 6.69048766e+04, 6.69263214e+04, 6.69477678e+04, 6.69692160e+04 -, 6.69906658e+04, 6.70121174e+04, 6.70335708e+04, 6.70550258e+04 -, 6.70764825e+04, 6.70979410e+04, 6.71194012e+04, 6.71408631e+04 -, 6.71623267e+04, 6.71837920e+04, 6.72052591e+04, 6.72267278e+04 -, 6.72481983e+04, 6.72696705e+04, 6.72911444e+04, 6.73126200e+04 -, 6.73340973e+04, 6.73555764e+04, 6.73770571e+04, 6.73985396e+04 -, 6.74200237e+04, 6.74415096e+04, 6.74629972e+04, 6.74844865e+04 -, 6.75059776e+04, 6.75274703e+04, 6.75489647e+04, 6.75704609e+04 -, 6.75919587e+04, 6.76134583e+04, 6.76349596e+04, 6.76564626e+04 -, 6.76779673e+04, 6.76994737e+04, 6.77209818e+04, 6.77424916e+04 -, 6.77640031e+04, 6.77855164e+04, 6.78070313e+04, 6.78285480e+04 -, 6.78500663e+04, 6.78715864e+04, 6.78931081e+04, 6.79146316e+04 -, 6.79361568e+04, 6.79576837e+04, 6.79792123e+04, 6.80007426e+04 -, 6.80222746e+04, 6.80438083e+04, 6.80653437e+04, 6.80868808e+04 -, 6.81084196e+04, 6.81299601e+04, 6.81515023e+04, 6.81730463e+04 -, 6.81945919e+04, 6.82161392e+04, 6.82376882e+04, 6.82592390e+04 -, 6.82807914e+04, 6.83023455e+04, 6.83239014e+04, 6.83454589e+04 -, 6.83670181e+04, 6.83885790e+04, 6.84101417e+04, 6.84317060e+04 -, 6.84532720e+04, 6.84748398e+04, 6.84964092e+04, 6.85179803e+04 -, 6.85395531e+04, 6.85611277e+04, 6.85827039e+04, 6.86042818e+04 -, 6.86258614e+04, 6.86474427e+04, 6.86690257e+04, 6.86906104e+04 -, 6.87121968e+04, 6.87337849e+04, 6.87553747e+04, 6.87769662e+04 -, 6.87985593e+04, 6.88201542e+04, 6.88417508e+04, 6.88633490e+04 -, 6.88849490e+04, 6.89065506e+04, 6.89281540e+04, 6.89497590e+04 -, 6.89713657e+04, 6.89929741e+04, 6.90145843e+04, 6.90361961e+04 -, 6.90578095e+04, 6.90794247e+04, 6.91010416e+04, 6.91226602e+04 -, 6.91442804e+04, 6.91659024e+04, 6.91875260e+04, 6.92091513e+04 -, 6.92307783e+04, 6.92524071e+04, 6.92740374e+04, 6.92956695e+04 -, 6.93173033e+04, 6.93389388e+04, 6.93605759e+04, 6.93822147e+04 -, 6.94038553e+04, 6.94254975e+04, 6.94471414e+04, 6.94687869e+04 -, 6.94904342e+04, 6.95120832e+04, 6.95337338e+04, 6.95553861e+04 -, 6.95770401e+04, 6.95986958e+04, 6.96203532e+04, 6.96420123e+04 -, 6.96636730e+04, 6.96853355e+04, 6.97069996e+04, 6.97286654e+04 -, 6.97503328e+04, 6.97720020e+04, 6.97936729e+04, 6.98153454e+04 -, 6.98370196e+04, 6.98586955e+04, 6.98803731e+04, 6.99020523e+04 -, 6.99237333e+04, 6.99454159e+04, 6.99671002e+04, 6.99887862e+04 -, 7.00104738e+04, 7.00321632e+04, 7.00538542e+04, 7.00755469e+04 -, 7.00972412e+04, 7.01189373e+04, 7.01406350e+04, 7.01623344e+04 -, 7.01840355e+04, 7.02057383e+04, 7.02274427e+04, 7.02491489e+04 -, 7.02708567e+04, 7.02925661e+04, 7.03142773e+04, 7.03359901e+04 -, 7.03577046e+04, 7.03794208e+04, 7.04011387e+04, 7.04228582e+04 -, 7.04445794e+04, 7.04663023e+04, 7.04880268e+04, 7.05097530e+04 -, 7.05314809e+04, 7.05532105e+04, 7.05749418e+04, 7.05966747e+04 -, 7.06184093e+04, 7.06401455e+04, 7.06618835e+04, 7.06836231e+04 -, 7.07053644e+04, 7.07271073e+04, 7.07488519e+04, 7.07705982e+04 -, 7.07923462e+04, 7.08140958e+04, 7.08358472e+04, 7.08576001e+04 -, 7.08793548e+04, 7.09011111e+04, 7.09228691e+04, 7.09446287e+04 -, 7.09663900e+04, 7.09881530e+04, 7.10099177e+04, 7.10316840e+04 -, 7.10534520e+04, 7.10752217e+04, 7.10969930e+04, 7.11187660e+04 -, 7.11405407e+04, 7.11623170e+04, 7.11840950e+04, 7.12058746e+04 -, 7.12276560e+04, 7.12494390e+04, 7.12712236e+04, 7.12930099e+04 -, 7.13147979e+04, 7.13365876e+04, 7.13583789e+04, 7.13801719e+04 -, 7.14019665e+04, 7.14237628e+04, 7.14455608e+04, 7.14673604e+04 -, 7.14891617e+04, 7.15109646e+04, 7.15327693e+04, 7.15545755e+04 -, 7.15763835e+04, 7.15981931e+04, 7.16200043e+04, 7.16418173e+04 -, 7.16636318e+04, 7.16854481e+04, 7.17072660e+04, 7.17290856e+04 -, 7.17509068e+04, 7.17727297e+04, 7.17945542e+04, 7.18163804e+04 -, 7.18382083e+04, 7.18600378e+04, 7.18818689e+04, 7.19037018e+04 -, 7.19255363e+04, 7.19473724e+04, 7.19692102e+04, 7.19910497e+04 -, 7.20128908e+04, 7.20347336e+04, 7.20565780e+04, 7.20784241e+04 -, 7.21002718e+04, 7.21221212e+04, 7.21439723e+04, 7.21658250e+04 -, 7.21876793e+04, 7.22095353e+04, 7.22313930e+04, 7.22532523e+04 -, 7.22751133e+04, 7.22969759e+04, 7.23188402e+04, 7.23407061e+04 -, 7.23625737e+04, 7.23844430e+04, 7.24063138e+04, 7.24281864e+04 -, 7.24500606e+04, 7.24719364e+04, 7.24938139e+04, 7.25156931e+04 -, 7.25375739e+04, 7.25594563e+04, 7.25813404e+04, 7.26032262e+04 -, 7.26251135e+04, 7.26470026e+04, 7.26688933e+04, 7.26907856e+04 -, 7.27126796e+04, 7.27345753e+04, 7.27564725e+04, 7.27783715e+04 -, 7.28002721e+04, 7.28221743e+04, 7.28440782e+04, 7.28659837e+04 -, 7.28878909e+04, 7.29097997e+04, 7.29317101e+04, 7.29536222e+04 -, 7.29755360e+04, 7.29974514e+04, 7.30193684e+04, 7.30412871e+04 -, 7.30632075e+04, 7.30851294e+04, 7.31070530e+04, 7.31289783e+04 -, 7.31509052e+04, 7.31728338e+04, 7.31947640e+04, 7.32166958e+04 -, 7.32386293e+04, 7.32605644e+04, 7.32825012e+04, 7.33044396e+04 -, 7.33263796e+04, 7.33483213e+04, 7.33702646e+04, 7.33922096e+04 -, 7.34141562e+04, 7.34361045e+04, 7.34580544e+04, 7.34800059e+04 -, 7.35019591e+04, 7.35239139e+04, 7.35458703e+04, 7.35678284e+04 -, 7.35897881e+04, 7.36117495e+04, 7.36337125e+04, 7.36556771e+04 -, 7.36776434e+04, 7.36996113e+04, 7.37215809e+04, 7.37435521e+04 -, 7.37655249e+04, 7.37874994e+04, 7.38094755e+04, 7.38314532e+04 -, 7.38534326e+04, 7.38754136e+04, 7.38973962e+04, 7.39193805e+04 -, 7.39413664e+04, 7.39633540e+04, 7.39853431e+04, 7.40073339e+04 -, 7.40293264e+04, 7.40513205e+04, 7.40733162e+04, 7.40953135e+04 -, 7.41173125e+04, 7.41393131e+04, 7.41613154e+04, 7.41833192e+04 -, 7.42053248e+04, 7.42273319e+04, 7.42493407e+04, 7.42713511e+04 -, 7.42933631e+04, 7.43153768e+04, 7.43373921e+04, 7.43594090e+04 -, 7.43814275e+04, 7.44034477e+04, 7.44254695e+04, 7.44474930e+04 -, 7.44695180e+04, 7.44915447e+04, 7.45135731e+04, 7.45356030e+04 -, 7.45576346e+04, 7.45796678e+04, 7.46017027e+04, 7.46237391e+04 -, 7.46457772e+04, 7.46678169e+04, 7.46898583e+04, 7.47119013e+04 -, 7.47339459e+04, 7.47559921e+04, 7.47780399e+04, 7.48000894e+04 -, 7.48221405e+04, 7.48441932e+04, 7.48662476e+04, 7.48883036e+04 -, 7.49103612e+04, 7.49324204e+04, 7.49544812e+04, 7.49765437e+04 -, 7.49986078e+04, 7.50206735e+04, 7.50427408e+04, 7.50648098e+04 -, 7.50868804e+04, 7.51089526e+04, 7.51310264e+04, 7.51531019e+04 -, 7.51751789e+04, 7.51972576e+04, 7.52193379e+04, 7.52414199e+04 -, 7.52635034e+04, 7.52855886e+04, 7.53076754e+04, 7.53297638e+04 -, 7.53518538e+04, 7.53739455e+04, 7.53960387e+04, 7.54181336e+04 -, 7.54402301e+04, 7.54623282e+04, 7.54844280e+04, 7.55065293e+04 -, 7.55286323e+04, 7.55507369e+04, 7.55728431e+04, 7.55949510e+04 -, 7.56170604e+04, 7.56391715e+04, 7.56612841e+04, 7.56833984e+04 -, 7.57055143e+04, 7.57276319e+04, 7.57497510e+04, 7.57718717e+04 -, 7.57939941e+04, 7.58161181e+04, 7.58382437e+04, 7.58603709e+04 -, 7.58824997e+04, 7.59046302e+04, 7.59267622e+04, 7.59488959e+04 -, 7.59710311e+04, 7.59931680e+04, 7.60153065e+04, 7.60374466e+04 -, 7.60595884e+04, 7.60817317e+04, 7.61038766e+04, 7.61260232e+04 -, 7.61481714e+04, 7.61703212e+04, 7.61924725e+04, 7.62146255e+04 -, 7.62367801e+04, 7.62589364e+04, 7.62810942e+04, 7.63032536e+04 -, 7.63254147e+04, 7.63475773e+04, 7.63697416e+04, 7.63919075e+04 -, 7.64140750e+04, 7.64362440e+04, 7.64584147e+04, 7.64805870e+04 -, 7.65027609e+04, 7.65249365e+04, 7.65471136e+04, 7.65692923e+04 -, 7.65914727e+04, 7.66136546e+04, 7.66358381e+04, 7.66580233e+04 -, 7.66802101e+04, 7.67023984e+04, 7.67245884e+04, 7.67467800e+04 -, 7.67689731e+04, 7.67911679e+04, 7.68133643e+04, 7.68355623e+04 -, 7.68577619e+04, 7.68799631e+04, 7.69021659e+04, 7.69243703e+04 -, 7.69465763e+04, 7.69687839e+04, 7.69909931e+04, 7.70132039e+04 -, 7.70354163e+04, 7.70576303e+04, 7.70798459e+04, 7.71020631e+04 -, 7.71242820e+04, 7.71465024e+04, 7.71687244e+04, 7.71909480e+04 -, 7.72131732e+04, 7.72354000e+04, 7.72576284e+04, 7.72798585e+04 -, 7.73020901e+04, 7.73243233e+04, 7.73465581e+04, 7.73687945e+04 -, 7.73910325e+04, 7.74132721e+04, 7.74355133e+04, 7.74577561e+04 -, 7.74800005e+04, 7.75022465e+04, 7.75244941e+04, 7.75467432e+04 -, 7.75689940e+04, 7.75912464e+04, 7.76135004e+04, 7.76357559e+04 -, 7.76580131e+04, 7.76802718e+04, 7.77025322e+04, 7.77247941e+04 -, 7.77470577e+04, 7.77693228e+04, 7.77915895e+04, 7.78138578e+04 -, 7.78361278e+04, 7.78583993e+04, 7.78806724e+04, 7.79029471e+04 -, 7.79252233e+04, 7.79475012e+04, 7.79697807e+04, 7.79920617e+04 -, 7.80143444e+04, 7.80366286e+04, 7.80589145e+04, 7.80812019e+04 -, 7.81034909e+04, 7.81257815e+04, 7.81480737e+04, 7.81703675e+04 -, 7.81926629e+04, 7.82149598e+04, 7.82372584e+04, 7.82595585e+04 -, 7.82818602e+04, 7.83041636e+04, 7.83264685e+04, 7.83487750e+04 -, 7.83710830e+04, 7.83933927e+04, 7.84157040e+04, 7.84380168e+04 -, 7.84603313e+04, 7.84826473e+04, 7.85049649e+04, 7.85272841e+04 -, 7.85496048e+04, 7.85719272e+04, 7.85942512e+04, 7.86165767e+04 -, 7.86389038e+04, 7.86612325e+04, 7.86835628e+04, 7.87058947e+04 -, 7.87282281e+04, 7.87505632e+04, 7.87728998e+04, 7.87952380e+04 -, 7.88175778e+04, 7.88399192e+04, 7.88622621e+04, 7.88846067e+04 -, 7.89069528e+04, 7.89293005e+04, 7.89516498e+04, 7.89740007e+04 -, 7.89963531e+04, 7.90187071e+04, 7.90410627e+04, 7.90634199e+04 -, 7.90857787e+04, 7.91081391e+04, 7.91305010e+04, 7.91528645e+04 -, 7.91752296e+04, 7.91975963e+04, 7.92199645e+04, 7.92423344e+04 -, 7.92647058e+04, 7.92870788e+04, 7.93094533e+04, 7.93318295e+04 -, 7.93542072e+04, 7.93765865e+04, 7.93989674e+04, 7.94213498e+04 -, 7.94437339e+04, 7.94661195e+04, 7.94885067e+04, 7.95108954e+04 -, 7.95332858e+04, 7.95556777e+04, 7.95780712e+04, 7.96004663e+04 -, 7.96228629e+04, 7.96452611e+04, 7.96676609e+04, 7.96900623e+04 -, 7.97124652e+04, 7.97348697e+04, 7.97572758e+04, 7.97796835e+04 -, 7.98020927e+04, 7.98245035e+04, 7.98469159e+04, 7.98693299e+04 -, 7.98917454e+04, 7.99141625e+04, 7.99365812e+04, 7.99590014e+04 -, 7.99814232e+04, 8.00038466e+04, 8.00262716e+04, 8.00486981e+04 -, 8.00711262e+04, 8.00935559e+04, 8.01159871e+04, 8.01384199e+04 -, 8.01608543e+04, 8.01832903e+04, 8.02057278e+04, 8.02281669e+04 -, 8.02506075e+04, 8.02730498e+04, 8.02954936e+04, 8.03179389e+04 -, 8.03403859e+04, 8.03628344e+04, 8.03852845e+04, 8.04077361e+04 -, 8.04301893e+04, 8.04526441e+04, 8.04751004e+04, 8.04975583e+04 -, 8.05200178e+04, 8.05424788e+04, 8.05649414e+04, 8.05874056e+04 -, 8.06098713e+04, 8.06323386e+04, 8.06548075e+04, 8.06772779e+04 -, 8.06997499e+04, 8.07222235e+04, 8.07446986e+04, 8.07671753e+04 -, 8.07896536e+04, 8.08121334e+04, 8.08346148e+04, 8.08570977e+04 -, 8.08795822e+04, 8.09020683e+04, 8.09245559e+04, 8.09470451e+04 -, 8.09695359e+04, 8.09920282e+04, 8.10145221e+04, 8.10370175e+04 -, 8.10595145e+04, 8.10820131e+04, 8.11045132e+04, 8.11270149e+04 -, 8.11495181e+04, 8.11720229e+04, 8.11945293e+04, 8.12170372e+04 -, 8.12395467e+04, 8.12620578e+04, 8.12845704e+04, 8.13070845e+04 -, 8.13296002e+04, 8.13521175e+04, 8.13746364e+04, 8.13971568e+04 -, 8.14196787e+04, 8.14422022e+04, 8.14647273e+04, 8.14872539e+04 -, 8.15097821e+04, 8.15323118e+04, 8.15548431e+04, 8.15773760e+04 -, 8.15999104e+04, 8.16224464e+04, 8.16449839e+04, 8.16675230e+04 -, 8.16900636e+04, 8.17126058e+04, 8.17351495e+04, 8.17576948e+04 -, 8.17802417e+04, 8.18027901e+04, 8.18253400e+04, 8.18478915e+04 -, 8.18704446e+04, 8.18929992e+04, 8.19155554e+04, 8.19381131e+04 -, 8.19606724e+04, 8.19832332e+04, 8.20057956e+04, 8.20283595e+04 -, 8.20509250e+04, 8.20734921e+04, 8.20960606e+04, 8.21186308e+04 -, 8.21412025e+04, 8.21637757e+04, 8.21863505e+04, 8.22089269e+04 -, 8.22315047e+04, 8.22540842e+04, 8.22766652e+04, 8.22992477e+04 -, 8.23218318e+04, 8.23444174e+04, 8.23670046e+04, 8.23895934e+04 -, 8.24121837e+04, 8.24347755e+04, 8.24573689e+04, 8.24799638e+04 -, 8.25025603e+04, 8.25251583e+04, 8.25477579e+04, 8.25703590e+04 -, 8.25929617e+04, 8.26155659e+04, 8.26381716e+04, 8.26607789e+04 -, 8.26833878e+04, 8.27059982e+04, 8.27286101e+04, 8.27512236e+04 -, 8.27738386e+04, 8.27964552e+04, 8.28190733e+04, 8.28416930e+04 -, 8.28643142e+04, 8.28869369e+04, 8.29095612e+04, 8.29321871e+04 -, 8.29548145e+04, 8.29774434e+04, 8.30000739e+04, 8.30227059e+04 -, 8.30453394e+04, 8.30679745e+04, 8.30906112e+04, 8.31132493e+04 -, 8.31358891e+04, 8.31585303e+04, 8.31811731e+04, 8.32038175e+04 -, 8.32264634e+04, 8.32491108e+04, 8.32717598e+04, 8.32944103e+04 -, 8.33170623e+04, 8.33397159e+04, 8.33623710e+04, 8.33850277e+04 -, 8.34076859e+04, 8.34303456e+04, 8.34530069e+04, 8.34756697e+04 -, 8.34983341e+04, 8.35210000e+04, 8.35436674e+04, 8.35663364e+04 -, 8.35890069e+04, 8.36116790e+04, 8.36343526e+04, 8.36570277e+04 -, 8.36797043e+04, 8.37023825e+04, 8.37250623e+04, 8.37477435e+04 -, 8.37704263e+04, 8.37931107e+04, 8.38157965e+04, 8.38384839e+04 -, 8.38611729e+04, 8.38838634e+04, 8.39065554e+04, 8.39292489e+04 -, 8.39519440e+04, 8.39746406e+04, 8.39973388e+04, 8.40200385e+04 -, 8.40427397e+04, 8.40654424e+04, 8.40881467e+04, 8.41108525e+04 -, 8.41335599e+04, 8.41562688e+04, 8.41789792e+04, 8.42016911e+04 -, 8.42244046e+04, 8.42471196e+04, 8.42698361e+04, 8.42925542e+04 -, 8.43152738e+04, 8.43379949e+04, 8.43607176e+04, 8.43834418e+04 -, 8.44061675e+04, 8.44288947e+04, 8.44516235e+04, 8.44743538e+04 -, 8.44970857e+04, 8.45198190e+04, 8.45425539e+04, 8.45652904e+04 -, 8.45880283e+04, 8.46107678e+04, 8.46335088e+04, 8.46562513e+04 -, 8.46789954e+04, 8.47017410e+04, 8.47244881e+04, 8.47472368e+04 -, 8.47699869e+04, 8.47927386e+04, 8.48154919e+04, 8.48382466e+04 -, 8.48610029e+04, 8.48837607e+04, 8.49065200e+04, 8.49292809e+04 -, 8.49520433e+04, 8.49748072e+04, 8.49975726e+04, 8.50203395e+04 -, 8.50431080e+04, 8.50658780e+04, 8.50886495e+04, 8.51114226e+04 -, 8.51341972e+04, 8.51569733e+04, 8.51797509e+04, 8.52025300e+04 -, 8.52253107e+04, 8.52480929e+04, 8.52708766e+04, 8.52936618e+04 -, 8.53164486e+04, 8.53392368e+04, 8.53620266e+04, 8.53848179e+04 -, 8.54076108e+04, 8.54304051e+04, 8.54532010e+04, 8.54759984e+04 -, 8.54987973e+04, 8.55215978e+04, 8.55443997e+04, 8.55672032e+04 -, 8.55900082e+04, 8.56128147e+04, 8.56356228e+04, 8.56584323e+04 -, 8.56812434e+04, 8.57040560e+04, 8.57268701e+04, 8.57496857e+04 -, 8.57725029e+04, 8.57953215e+04, 8.58181417e+04, 8.58409634e+04 -, 8.58637866e+04, 8.58866114e+04, 8.59094376e+04, 8.59322654e+04 -, 8.59550946e+04, 8.59779254e+04, 8.60007578e+04, 8.60235916e+04 -, 8.60464269e+04, 8.60692638e+04, 8.60921022e+04, 8.61149420e+04 -, 8.61377834e+04, 8.61606264e+04, 8.61834708e+04, 8.62063167e+04 -, 8.62291642e+04, 8.62520132e+04, 8.62748637e+04, 8.62977157e+04 -, 8.63205692e+04, 8.63434242e+04, 8.63662807e+04, 8.63891388e+04 -, 8.64119983e+04, 8.64348594e+04, 8.64577220e+04, 8.64805861e+04 -, 8.65034517e+04, 8.65263188e+04, 8.65491874e+04, 8.65720576e+04 -, 8.65949292e+04, 8.66178024e+04, 8.66406771e+04, 8.66635532e+04 -, 8.66864309e+04, 8.67093101e+04, 8.67321908e+04, 8.67550731e+04 -, 8.67779568e+04, 8.68008420e+04, 8.68237288e+04, 8.68466170e+04 -, 8.68695068e+04, 8.68923981e+04, 8.69152908e+04, 8.69381851e+04 -, 8.69610809e+04, 8.69839782e+04, 8.70068770e+04, 8.70297773e+04 -, 8.70526792e+04, 8.70755825e+04, 8.70984873e+04, 8.71213937e+04 -, 8.71443015e+04, 8.71672108e+04, 8.71901217e+04, 8.72130341e+04 -, 8.72359479e+04, 8.72588633e+04, 8.72817802e+04, 8.73046985e+04 -, 8.73276184e+04, 8.73505398e+04, 8.73734627e+04, 8.73963871e+04 -, 8.74193130e+04, 8.74422404e+04, 8.74651693e+04, 8.74880997e+04 -, 8.75110316e+04, 8.75339650e+04, 8.75568999e+04, 8.75798364e+04 -, 8.76027743e+04, 8.76257137e+04, 8.76486546e+04, 8.76715970e+04 -, 8.76945410e+04, 8.77174864e+04, 8.77404333e+04, 8.77633817e+04 -, 8.77863317e+04, 8.78092831e+04, 8.78322360e+04, 8.78551904e+04 -, 8.78781464e+04, 8.79011038e+04, 8.79240627e+04, 8.79470231e+04 -, 8.79699850e+04, 8.79929485e+04, 8.80159134e+04, 8.80388798e+04 -, 8.80618477e+04, 8.80848171e+04, 8.81077880e+04, 8.81307604e+04 -, 8.81537343e+04, 8.81767097e+04, 8.81996866e+04, 8.82226650e+04 -, 8.82456449e+04, 8.82686263e+04, 8.82916092e+04, 8.83145935e+04 -, 8.83375794e+04, 8.83605668e+04, 8.83835556e+04, 8.84065460e+04 -, 8.84295379e+04, 8.84525312e+04, 8.84755260e+04, 8.84985224e+04 -, 8.85215202e+04, 8.85445195e+04, 8.85675203e+04, 8.85905227e+04 -, 8.86135265e+04, 8.86365318e+04, 8.86595385e+04, 8.86825468e+04 -, 8.87055566e+04, 8.87285679e+04, 8.87515806e+04, 8.87745949e+04 -, 8.87976106e+04, 8.88206279e+04, 8.88436466e+04, 8.88666668e+04 -, 8.88896885e+04, 8.89127117e+04, 8.89357364e+04, 8.89587626e+04 -, 8.89817902e+04, 8.90048194e+04, 8.90278500e+04, 8.90508822e+04 -, 8.90739158e+04, 8.90969509e+04, 8.91199875e+04, 8.91430256e+04 -, 8.91660652e+04, 8.91891063e+04, 8.92121488e+04, 8.92351929e+04 -, 8.92582384e+04, 8.92812854e+04, 8.93043340e+04, 8.93273840e+04 -, 8.93504354e+04, 8.93734884e+04, 8.93965429e+04, 8.94195988e+04 -, 8.94426562e+04, 8.94657152e+04, 8.94887756e+04, 8.95118374e+04 -, 8.95349008e+04, 8.95579657e+04, 8.95810320e+04, 8.96040999e+04 -, 8.96271692e+04, 8.96502400e+04, 8.96733123e+04, 8.96963860e+04 -, 8.97194613e+04, 8.97425380e+04, 8.97656162e+04, 8.97886959e+04 -, 8.98117771e+04, 8.98348598e+04, 8.98579439e+04, 8.98810296e+04 -, 8.99041167e+04, 8.99272053e+04, 8.99502954e+04, 8.99733869e+04 -, 8.99964800e+04, 9.00195745e+04, 9.00426705e+04, 9.00657680e+04 -, 9.00888670e+04, 9.01119674e+04, 9.01350693e+04, 9.01581727e+04 -, 9.01812776e+04, 9.02043840e+04, 9.02274919e+04, 9.02506012e+04 -, 9.02737120e+04, 9.02968243e+04, 9.03199381e+04, 9.03430533e+04 -, 9.03661700e+04, 9.03892882e+04, 9.04124079e+04, 9.04355291e+04 -, 9.04586517e+04, 9.04817758e+04, 9.05049014e+04, 9.05280285e+04 -, 9.05511570e+04, 9.05742871e+04, 9.05974186e+04, 9.06205515e+04 -, 9.06436860e+04, 9.06668219e+04, 9.06899593e+04, 9.07130982e+04 -, 9.07362386e+04, 9.07593804e+04, 9.07825237e+04, 9.08056685e+04 -, 9.08288148e+04, 9.08519625e+04, 9.08751117e+04, 9.08982624e+04 -, 9.09214146e+04, 9.09445682e+04, 9.09677233e+04, 9.09908799e+04 -, 9.10140379e+04, 9.10371974e+04, 9.10603584e+04, 9.10835209e+04 -, 9.11066849e+04, 9.11298503e+04, 9.11530172e+04, 9.11761855e+04 -, 9.11993553e+04, 9.12225267e+04, 9.12456994e+04, 9.12688737e+04 -, 9.12920494e+04, 9.13152266e+04, 9.13384052e+04, 9.13615854e+04 -, 9.13847670e+04, 9.14079500e+04, 9.14311346e+04, 9.14543206e+04 -, 9.14775081e+04, 9.15006970e+04, 9.15238874e+04, 9.15470793e+04 -, 9.15702727e+04, 9.15934675e+04, 9.16166638e+04, 9.16398616e+04 -, 9.16630608e+04, 9.16862615e+04, 9.17094637e+04, 9.17326673e+04 -, 9.17558724e+04, 9.17790790e+04, 9.18022870e+04, 9.18254965e+04 -, 9.18487075e+04, 9.18719199e+04, 9.18951338e+04, 9.19183492e+04 -, 9.19415660e+04, 9.19647843e+04, 9.19880041e+04, 9.20112253e+04 -, 9.20344480e+04, 9.20576722e+04, 9.20808978e+04, 9.21041249e+04 -, 9.21273534e+04, 9.21505835e+04, 9.21738149e+04, 9.21970479e+04 -, 9.22202823e+04, 9.22435182e+04, 9.22667555e+04, 9.22899943e+04 -, 9.23132346e+04, 9.23364763e+04, 9.23597195e+04, 9.23829642e+04 -, 9.24062103e+04, 9.24294578e+04, 9.24527069e+04, 9.24759574e+04 -, 9.24992093e+04, 9.25224628e+04, 9.25457176e+04, 9.25689740e+04 -, 9.25922318e+04, 9.26154911e+04, 9.26387518e+04, 9.26620140e+04 -, 9.26852776e+04, 9.27085427e+04, 9.27318093e+04, 9.27550773e+04 -, 9.27783468e+04, 9.28016178e+04, 9.28248902e+04, 9.28481640e+04 -, 9.28714393e+04, 9.28947161e+04, 9.29179944e+04, 9.29412741e+04 -, 9.29645552e+04, 9.29878378e+04, 9.30111219e+04, 9.30344074e+04 -, 9.30576944e+04, 9.30809828e+04, 9.31042727e+04, 9.31275641e+04 -, 9.31508569e+04, 9.31741512e+04, 9.31974469e+04, 9.32207441e+04 -, 9.32440427e+04, 9.32673428e+04, 9.32906443e+04, 9.33139473e+04 -, 9.33372518e+04, 9.33605577e+04, 9.33838651e+04, 9.34071739e+04 -, 9.34304841e+04, 9.34537959e+04, 9.34771090e+04, 9.35004237e+04 -, 9.35237398e+04, 9.35470573e+04, 9.35703763e+04, 9.35936967e+04 -, 9.36170186e+04, 9.36403420e+04, 9.36636668e+04, 9.36869931e+04 -, 9.37103208e+04, 9.37336499e+04, 9.37569805e+04, 9.37803126e+04 -, 9.38036461e+04, 9.38269811e+04, 9.38503175e+04, 9.38736554e+04 -, 9.38969947e+04, 9.39203355e+04, 9.39436777e+04, 9.39670213e+04 -, 9.39903665e+04, 9.40137130e+04, 9.40370610e+04, 9.40604105e+04 -, 9.40837614e+04, 9.41071138e+04, 9.41304676e+04, 9.41538229e+04 -, 9.41771796e+04, 9.42005377e+04, 9.42238974e+04, 9.42472584e+04 -, 9.42706209e+04, 9.42939849e+04, 9.43173503e+04, 9.43407171e+04 -, 9.43640854e+04, 9.43874551e+04, 9.44108263e+04, 9.44341990e+04 -, 9.44575730e+04, 9.44809486e+04, 9.45043255e+04, 9.45277039e+04 -, 9.45510838e+04, 9.45744651e+04, 9.45978479e+04, 9.46212321e+04 -, 9.46446177e+04, 9.46680048e+04, 9.46913933e+04, 9.47147833e+04 -, 9.47381747e+04, 9.47615676e+04, 9.47849619e+04, 9.48083576e+04 -, 9.48317548e+04, 9.48551535e+04, 9.48785536e+04, 9.49019551e+04 -, 9.49253580e+04, 9.49487625e+04, 9.49721683e+04, 9.49955756e+04 -, 9.50189843e+04, 9.50423945e+04, 9.50658061e+04, 9.50892192e+04 -, 9.51126337e+04, 9.51360496e+04, 9.51594670e+04, 9.51828858e+04 -, 9.52063061e+04, 9.52297278e+04, 9.52531510e+04, 9.52765755e+04 -, 9.53000016e+04, 9.53234290e+04, 9.53468579e+04, 9.53702883e+04 -, 9.53937201e+04, 9.54171533e+04, 9.54405880e+04, 9.54640241e+04 -, 9.54874616e+04, 9.55109006e+04, 9.55343410e+04, 9.55577828e+04 -, 9.55812261e+04, 9.56046709e+04, 9.56281170e+04, 9.56515646e+04 -, 9.56750137e+04, 9.56984641e+04, 9.57219161e+04, 9.57453694e+04 -, 9.57688242e+04, 9.57922804e+04, 9.58157381e+04, 9.58391972e+04 -, 9.58626577e+04, 9.58861197e+04, 9.59095831e+04, 9.59330479e+04 -, 9.59565142e+04, 9.59799819e+04, 9.60034510e+04, 9.60269216e+04 -, 9.60503936e+04, 9.60738670e+04, 9.60973419e+04, 9.61208182e+04 -, 9.61442960e+04, 9.61677751e+04, 9.61912558e+04, 9.62147378e+04 -, 9.62382213e+04, 9.62617062e+04, 9.62851925e+04, 9.63086803e+04 -, 9.63321695e+04, 9.63556601e+04, 9.63791522e+04, 9.64026457e+04 -, 9.64261406e+04, 9.64496370e+04, 9.64731348e+04, 9.64966340e+04 -, 9.65201347e+04, 9.65436368e+04, 9.65671403e+04, 9.65906452e+04 -, 9.66141516e+04, 9.66376594e+04, 9.66611687e+04, 9.66846793e+04 -, 9.67081914e+04, 9.67317050e+04, 9.67552199e+04, 9.67787363e+04 -, 9.68022541e+04, 9.68257733e+04, 9.68492940e+04, 9.68728161e+04 -, 9.68963396e+04, 9.69198646e+04, 9.69433910e+04, 9.69669188e+04 -, 9.69904480e+04, 9.70139787e+04, 9.70375108e+04, 9.70610443e+04 -, 9.70845792e+04, 9.71081156e+04, 9.71316534e+04, 9.71551926e+04 -, 9.71787333e+04, 9.72022753e+04, 9.72258188e+04, 9.72493637e+04 -, 9.72729101e+04, 9.72964579e+04, 9.73200071e+04, 9.73435577e+04 -, 9.73671097e+04, 9.73906632e+04, 9.74142181e+04, 9.74377744e+04 -, 9.74613322e+04, 9.74848913e+04, 9.75084519e+04, 9.75320139e+04 -, 9.75555774e+04, 9.75791422e+04, 9.76027085e+04, 9.76262762e+04 -, 9.76498454e+04, 9.76734159e+04, 9.76969879e+04, 9.77205613e+04 -, 9.77441361e+04, 9.77677123e+04, 9.77912900e+04, 9.78148691e+04 -, 9.78384496e+04, 9.78620315e+04, 9.78856148e+04, 9.79091996e+04 -, 9.79327858e+04, 9.79563734e+04, 9.79799624e+04, 9.80035529e+04 -, 9.80271447e+04, 9.80507380e+04, 9.80743327e+04, 9.80979288e+04 -, 9.81215264e+04, 9.81451253e+04, 9.81687257e+04, 9.81923275e+04 -, 9.82159307e+04, 9.82395354e+04, 9.82631414e+04, 9.82867489e+04 -, 9.83103578e+04, 9.83339681e+04, 9.83575798e+04, 9.83811929e+04 -, 9.84048075e+04, 9.84284235e+04, 9.84520409e+04, 9.84756597e+04 -, 9.84992799e+04, 9.85229015e+04, 9.85465246e+04, 9.85701490e+04 -, 9.85937749e+04, 9.86174022e+04, 9.86410310e+04, 9.86646611e+04 -, 9.86882926e+04, 9.87119256e+04, 9.87355600e+04, 9.87591958e+04 -, 9.87828330e+04, 9.88064716e+04, 9.88301116e+04, 9.88537531e+04 -, 9.88773959e+04, 9.89010402e+04, 9.89246859e+04, 9.89483330e+04 -, 9.89719815e+04, 9.89956314e+04, 9.90192828e+04, 9.90429355e+04 -, 9.90665897e+04, 9.90902452e+04, 9.91139022e+04, 9.91375606e+04 -, 9.91612204e+04, 9.91848817e+04, 9.92085443e+04, 9.92322083e+04 -, 9.92558738e+04, 9.92795407e+04, 9.93032089e+04, 9.93268786e+04 -, 9.93505497e+04, 9.93742222e+04, 9.93978961e+04, 9.94215715e+04 -, 9.94452482e+04, 9.94689263e+04, 9.94926059e+04, 9.95162869e+04 -, 9.95399692e+04, 9.95636530e+04, 9.95873382e+04, 9.96110248e+04 -, 9.96347128e+04, 9.96584022e+04, 9.96820930e+04, 9.97057853e+04 -, 9.97294789e+04, 9.97531739e+04, 9.97768704e+04, 9.98005683e+04 -, 9.98242675e+04, 9.98479682e+04, 9.98716703e+04, 9.98953738e+04 -, 9.99190786e+04, 9.99427849e+04, 9.99664926e+04, 9.99902018e+04 -, 1.00013912e+05, 1.00037624e+05, 1.00061338e+05, 1.00085052e+05 -, 1.00108768e+05, 1.00132486e+05, 1.00156205e+05, 1.00179925e+05 -, 1.00203647e+05, 1.00227370e+05, 1.00251095e+05, 1.00274821e+05 -, 1.00298548e+05, 1.00322277e+05, 1.00346007e+05, 1.00369739e+05 -, 1.00393472e+05, 1.00417206e+05, 1.00440942e+05, 1.00464679e+05 -, 1.00488417e+05, 1.00512157e+05, 1.00535899e+05, 1.00559642e+05 -, 1.00583386e+05, 1.00607131e+05, 1.00630878e+05, 1.00654627e+05 -, 1.00678377e+05, 1.00702128e+05, 1.00725880e+05, 1.00749634e+05 -, 1.00773390e+05, 1.00797147e+05, 1.00820905e+05, 1.00844664e+05 -, 1.00868425e+05, 1.00892188e+05, 1.00915952e+05, 1.00939717e+05 -, 1.00963483e+05, 1.00987251e+05, 1.01011021e+05, 1.01034792e+05 -, 1.01058564e+05, 1.01082337e+05, 1.01106112e+05, 1.01129889e+05 -, 1.01153667e+05, 1.01177446e+05, 1.01201226e+05, 1.01225008e+05 -, 1.01248792e+05, 1.01272576e+05, 1.01296363e+05, 1.01320150e+05 -, 1.01343939e+05, 1.01367730e+05, 1.01391521e+05, 1.01415314e+05 -, 1.01439109e+05, 1.01462905e+05, 1.01486702e+05, 1.01510501e+05 -, 1.01534301e+05, 1.01558103e+05, 1.01581906e+05, 1.01605710e+05 -, 1.01629516e+05, 1.01653323e+05, 1.01677131e+05, 1.01700941e+05 -, 1.01724752e+05, 1.01748565e+05, 1.01772379e+05, 1.01796194e+05 -, 1.01820011e+05, 1.01843830e+05, 1.01867649e+05, 1.01891470e+05 -, 1.01915293e+05, 1.01939116e+05, 1.01962942e+05, 1.01986768e+05 -, 1.02010596e+05, 1.02034426e+05, 1.02058256e+05, 1.02082089e+05 -, 1.02105922e+05, 1.02129757e+05, 1.02153593e+05, 1.02177431e+05 -, 1.02201270e+05, 1.02225111e+05, 1.02248953e+05, 1.02272796e+05 -, 1.02296641e+05, 1.02320487e+05, 1.02344334e+05, 1.02368183e+05 -, 1.02392033e+05, 1.02415885e+05, 1.02439738e+05, 1.02463592e+05 -, 1.02487448e+05, 1.02511305e+05, 1.02535164e+05, 1.02559024e+05 -, 1.02582885e+05, 1.02606748e+05, 1.02630612e+05, 1.02654477e+05 -, 1.02678344e+05, 1.02702213e+05, 1.02726082e+05, 1.02749953e+05 -, 1.02773826e+05, 1.02797700e+05, 1.02821575e+05, 1.02845451e+05 -, 1.02869329e+05, 1.02893209e+05, 1.02917089e+05, 1.02940972e+05 -, 1.02964855e+05, 1.02988740e+05, 1.03012626e+05, 1.03036514e+05 -, 1.03060403e+05, 1.03084293e+05, 1.03108185e+05, 1.03132079e+05 -, 1.03155973e+05, 1.03179869e+05, 1.03203766e+05, 1.03227665e+05 -, 1.03251565e+05, 1.03275467e+05, 1.03299370e+05, 1.03323274e+05 -, 1.03347180e+05, 1.03371087e+05, 1.03394995e+05, 1.03418905e+05 -, 1.03442816e+05, 1.03466729e+05, 1.03490643e+05, 1.03514558e+05 -, 1.03538475e+05, 1.03562393e+05, 1.03586312e+05, 1.03610233e+05 -, 1.03634155e+05, 1.03658079e+05, 1.03682004e+05, 1.03705931e+05 -, 1.03729858e+05, 1.03753787e+05, 1.03777718e+05, 1.03801650e+05 -, 1.03825583e+05, 1.03849518e+05, 1.03873454e+05, 1.03897391e+05 -, 1.03921330e+05, 1.03945270e+05, 1.03969212e+05, 1.03993155e+05 -, 1.04017099e+05, 1.04041045e+05, 1.04064992e+05, 1.04088940e+05 -, 1.04112890e+05, 1.04136841e+05, 1.04160794e+05, 1.04184748e+05 -, 1.04208703e+05, 1.04232660e+05, 1.04256618e+05, 1.04280577e+05 -, 1.04304538e+05, 1.04328501e+05, 1.04352464e+05, 1.04376429e+05 -, 1.04400395e+05, 1.04424363e+05, 1.04448332e+05, 1.04472303e+05 -, 1.04496275e+05, 1.04520248e+05, 1.04544222e+05, 1.04568198e+05 -, 1.04592176e+05, 1.04616154e+05, 1.04640135e+05, 1.04664116e+05 -, 1.04688099e+05, 1.04712083e+05, 1.04736069e+05, 1.04760056e+05 -, 1.04784044e+05, 1.04808034e+05, 1.04832025e+05, 1.04856017e+05 -, 1.04880011e+05, 1.04904006e+05, 1.04928003e+05, 1.04952001e+05 -, 1.04976000e+05, 1.05000001e+05, 1.05024003e+05, 1.05048006e+05 -, 1.05072011e+05, 1.05096017e+05, 1.05120025e+05, 1.05144034e+05 -, 1.05168044e+05, 1.05192056e+05, 1.05216069e+05, 1.05240083e+05 -, 1.05264099e+05, 1.05288116e+05, 1.05312134e+05, 1.05336154e+05 -, 1.05360175e+05, 1.05384198e+05, 1.05408222e+05, 1.05432247e+05 -, 1.05456274e+05, 1.05480302e+05, 1.05504332e+05, 1.05528363e+05 -, 1.05552395e+05, 1.05576428e+05, 1.05600463e+05, 1.05624499e+05 -, 1.05648537e+05, 1.05672576e+05, 1.05696617e+05, 1.05720658e+05 -, 1.05744701e+05, 1.05768746e+05, 1.05792792e+05, 1.05816839e+05 -, 1.05840888e+05, 1.05864938e+05, 1.05888989e+05, 1.05913042e+05 -, 1.05937096e+05, 1.05961151e+05, 1.05985208e+05, 1.06009266e+05 -, 1.06033326e+05, 1.06057387e+05, 1.06081449e+05, 1.06105512e+05 -, 1.06129577e+05, 1.06153644e+05, 1.06177711e+05, 1.06201780e+05 -, 1.06225851e+05, 1.06249923e+05, 1.06273996e+05, 1.06298070e+05 -, 1.06322146e+05, 1.06346224e+05, 1.06370302e+05, 1.06394382e+05 -, 1.06418464e+05, 1.06442546e+05, 1.06466630e+05, 1.06490716e+05 -, 1.06514803e+05, 1.06538891e+05, 1.06562980e+05, 1.06587071e+05 -, 1.06611163e+05, 1.06635257e+05, 1.06659352e+05, 1.06683448e+05 -, 1.06707546e+05, 1.06731645e+05, 1.06755745e+05, 1.06779847e+05 -, 1.06803950e+05, 1.06828055e+05, 1.06852161e+05, 1.06876268e+05 -, 1.06900376e+05, 1.06924486e+05, 1.06948597e+05, 1.06972710e+05 -, 1.06996824e+05, 1.07020939e+05, 1.07045056e+05, 1.07069174e+05 -, 1.07093294e+05, 1.07117414e+05, 1.07141537e+05, 1.07165660e+05 -, 1.07189785e+05, 1.07213911e+05, 1.07238039e+05, 1.07262168e+05 -, 1.07286298e+05, 1.07310430e+05, 1.07334563e+05, 1.07358697e+05 -, 1.07382833e+05, 1.07406970e+05, 1.07431108e+05, 1.07455248e+05 -, 1.07479389e+05, 1.07503532e+05, 1.07527676e+05, 1.07551821e+05 -, 1.07575967e+05, 1.07600115e+05, 1.07624265e+05, 1.07648415e+05 -, 1.07672567e+05, 1.07696720e+05, 1.07720875e+05, 1.07745031e+05 -, 1.07769189e+05, 1.07793347e+05, 1.07817507e+05, 1.07841669e+05 -, 1.07865832e+05, 1.07889996e+05, 1.07914161e+05, 1.07938328e+05 -, 1.07962497e+05, 1.07986666e+05, 1.08010837e+05, 1.08035009e+05 -, 1.08059183e+05, 1.08083358e+05, 1.08107534e+05, 1.08131712e+05 -, 1.08155891e+05, 1.08180071e+05, 1.08204253e+05, 1.08228436e+05 -, 1.08252621e+05, 1.08276807e+05, 1.08300994e+05, 1.08325182e+05 -, 1.08349372e+05, 1.08373563e+05, 1.08397756e+05, 1.08421950e+05 -, 1.08446145e+05, 1.08470342e+05, 1.08494540e+05, 1.08518739e+05 -, 1.08542939e+05, 1.08567141e+05, 1.08591345e+05, 1.08615550e+05 -, 1.08639756e+05, 1.08663963e+05, 1.08688172e+05, 1.08712382e+05 -, 1.08736593e+05, 1.08760806e+05, 1.08785020e+05, 1.08809236e+05 -, 1.08833452e+05, 1.08857671e+05, 1.08881890e+05, 1.08906111e+05 -, 1.08930333e+05, 1.08954557e+05, 1.08978782e+05, 1.09003008e+05 -, 1.09027236e+05, 1.09051465e+05, 1.09075695e+05, 1.09099926e+05 -, 1.09124159e+05, 1.09148394e+05, 1.09172629e+05, 1.09196866e+05 -, 1.09221105e+05, 1.09245345e+05, 1.09269586e+05, 1.09293828e+05 -, 1.09318072e+05, 1.09342317e+05, 1.09366563e+05, 1.09390811e+05 -, 1.09415060e+05, 1.09439311e+05, 1.09463562e+05, 1.09487816e+05 -, 1.09512070e+05, 1.09536326e+05, 1.09560583e+05, 1.09584842e+05 -, 1.09609101e+05, 1.09633363e+05, 1.09657625e+05, 1.09681889e+05 -, 1.09706154e+05, 1.09730421e+05, 1.09754689e+05, 1.09778958e+05 -, 1.09803229e+05, 1.09827501e+05, 1.09851774e+05, 1.09876049e+05 -, 1.09900325e+05, 1.09924602e+05, 1.09948880e+05, 1.09973160e+05 -, 1.09997442e+05, 1.10021724e+05, 1.10046008e+05, 1.10070294e+05 -, 1.10094580e+05, 1.10118869e+05, 1.10143158e+05, 1.10167449e+05 -, 1.10191741e+05, 1.10216034e+05, 1.10240329e+05, 1.10264625e+05 -, 1.10288922e+05, 1.10313221e+05, 1.10337521e+05, 1.10361822e+05 -, 1.10386125e+05, 1.10410429e+05, 1.10434735e+05, 1.10459041e+05 -, 1.10483350e+05, 1.10507659e+05, 1.10531970e+05, 1.10556282e+05 -, 1.10580595e+05, 1.10604910e+05, 1.10629226e+05, 1.10653544e+05 -, 1.10677862e+05, 1.10702183e+05, 1.10726504e+05, 1.10750827e+05 -, 1.10775151e+05, 1.10799476e+05, 1.10823803e+05, 1.10848131e+05 -, 1.10872461e+05, 1.10896792e+05, 1.10921124e+05, 1.10945457e+05 -, 1.10969792e+05, 1.10994128e+05, 1.11018466e+05, 1.11042805e+05 -, 1.11067145e+05, 1.11091486e+05, 1.11115829e+05, 1.11140173e+05 -, 1.11164519e+05, 1.11188865e+05, 1.11213214e+05, 1.11237563e+05 -, 1.11261914e+05, 1.11286266e+05, 1.11310620e+05, 1.11334974e+05 -, 1.11359330e+05, 1.11383688e+05, 1.11408047e+05, 1.11432407e+05 -, 1.11456768e+05, 1.11481131e+05, 1.11505495e+05, 1.11529861e+05 -, 1.11554228e+05, 1.11578596e+05, 1.11602965e+05, 1.11627336e+05 -, 1.11651708e+05, 1.11676081e+05, 1.11700456e+05, 1.11724832e+05 -, 1.11749210e+05, 1.11773589e+05, 1.11797969e+05, 1.11822350e+05 -, 1.11846733e+05, 1.11871117e+05, 1.11895502e+05, 1.11919889e+05 -, 1.11944277e+05, 1.11968667e+05, 1.11993057e+05, 1.12017449e+05 -, 1.12041843e+05, 1.12066237e+05, 1.12090633e+05, 1.12115031e+05 -, 1.12139429e+05, 1.12163829e+05, 1.12188231e+05, 1.12212633e+05 -, 1.12237037e+05, 1.12261443e+05, 1.12285849e+05, 1.12310257e+05 -, 1.12334667e+05, 1.12359077e+05, 1.12383489e+05, 1.12407903e+05 -, 1.12432317e+05, 1.12456733e+05, 1.12481150e+05, 1.12505569e+05 -, 1.12529989e+05, 1.12554410e+05, 1.12578833e+05, 1.12603257e+05 -, 1.12627682e+05, 1.12652108e+05, 1.12676536e+05, 1.12700965e+05 -, 1.12725396e+05, 1.12749828e+05, 1.12774261e+05, 1.12798695e+05 -, 1.12823131e+05, 1.12847568e+05, 1.12872007e+05, 1.12896446e+05 -, 1.12920888e+05, 1.12945330e+05, 1.12969774e+05, 1.12994219e+05 -, 1.13018665e+05, 1.13043113e+05, 1.13067562e+05, 1.13092012e+05 -, 1.13116464e+05, 1.13140917e+05, 1.13165371e+05, 1.13189827e+05 -, 1.13214284e+05, 1.13238742e+05, 1.13263202e+05, 1.13287662e+05 -, 1.13312125e+05, 1.13336588e+05, 1.13361053e+05, 1.13385519e+05 -, 1.13409987e+05, 1.13434456e+05, 1.13458926e+05, 1.13483397e+05 -, 1.13507870e+05, 1.13532344e+05, 1.13556820e+05, 1.13581296e+05 -, 1.13605774e+05, 1.13630254e+05, 1.13654735e+05, 1.13679217e+05 -, 1.13703700e+05, 1.13728185e+05, 1.13752671e+05, 1.13777158e+05 -, 1.13801646e+05, 1.13826136e+05, 1.13850628e+05, 1.13875120e+05 -, 1.13899614e+05, 1.13924109e+05, 1.13948606e+05, 1.13973104e+05 -, 1.13997603e+05, 1.14022103e+05, 1.14046605e+05, 1.14071108e+05 -, 1.14095613e+05, 1.14120118e+05, 1.14144625e+05, 1.14169134e+05 -, 1.14193643e+05, 1.14218154e+05, 1.14242667e+05, 1.14267180e+05 -, 1.14291695e+05, 1.14316211e+05, 1.14340729e+05, 1.14365248e+05 -, 1.14389768e+05, 1.14414290e+05, 1.14438812e+05, 1.14463337e+05 -, 1.14487862e+05, 1.14512389e+05, 1.14536917e+05, 1.14561446e+05 -, 1.14585977e+05, 1.14610509e+05, 1.14635042e+05, 1.14659577e+05 -, 1.14684113e+05, 1.14708650e+05, 1.14733189e+05, 1.14757729e+05 -, 1.14782270e+05, 1.14806812e+05, 1.14831356e+05, 1.14855901e+05 -, 1.14880448e+05, 1.14904996e+05, 1.14929545e+05, 1.14954095e+05 -, 1.14978647e+05, 1.15003200e+05, 1.15027754e+05, 1.15052310e+05 -, 1.15076867e+05, 1.15101425e+05, 1.15125984e+05, 1.15150545e+05 -, 1.15175107e+05, 1.15199671e+05, 1.15224236e+05, 1.15248802e+05 -, 1.15273369e+05, 1.15297938e+05, 1.15322508e+05, 1.15347079e+05 -, 1.15371652e+05, 1.15396226e+05, 1.15420801e+05, 1.15445378e+05 -, 1.15469956e+05, 1.15494535e+05, 1.15519115e+05, 1.15543697e+05 -, 1.15568280e+05, 1.15592865e+05, 1.15617450e+05, 1.15642037e+05 -, 1.15666626e+05, 1.15691215e+05, 1.15715806e+05, 1.15740399e+05 -, 1.15764992e+05, 1.15789587e+05, 1.15814183e+05, 1.15838781e+05 -, 1.15863379e+05, 1.15887980e+05, 1.15912581e+05, 1.15937184e+05 -, 1.15961788e+05, 1.15986393e+05, 1.16011000e+05, 1.16035608e+05 -, 1.16060217e+05, 1.16084827e+05, 1.16109439e+05, 1.16134052e+05 -, 1.16158667e+05, 1.16183282e+05, 1.16207900e+05, 1.16232518e+05 -, 1.16257138e+05, 1.16281759e+05, 1.16306381e+05, 1.16331004e+05 -, 1.16355629e+05, 1.16380255e+05, 1.16404883e+05, 1.16429512e+05 -, 1.16454142e+05, 1.16478773e+05, 1.16503406e+05, 1.16528040e+05 -, 1.16552675e+05, 1.16577312e+05, 1.16601950e+05, 1.16626589e+05 -, 1.16651229e+05, 1.16675871e+05, 1.16700514e+05, 1.16725159e+05 -, 1.16749804e+05, 1.16774451e+05, 1.16799100e+05, 1.16823749e+05 -, 1.16848400e+05, 1.16873052e+05, 1.16897706e+05, 1.16922361e+05 -, 1.16947017e+05, 1.16971674e+05, 1.16996333e+05, 1.17020993e+05 -, 1.17045654e+05, 1.17070317e+05, 1.17094981e+05, 1.17119646e+05 -, 1.17144313e+05, 1.17168980e+05, 1.17193649e+05, 1.17218320e+05 -, 1.17242992e+05, 1.17267665e+05, 1.17292339e+05, 1.17317014e+05 -, 1.17341691e+05, 1.17366370e+05, 1.17391049e+05, 1.17415730e+05 -, 1.17440412e+05, 1.17465095e+05, 1.17489780e+05, 1.17514466e+05 -, 1.17539153e+05, 1.17563842e+05, 1.17588532e+05, 1.17613223e+05 -, 1.17637915e+05, 1.17662609e+05, 1.17687304e+05, 1.17712000e+05 -, 1.17736698e+05, 1.17761397e+05, 1.17786097e+05, 1.17810799e+05 -, 1.17835501e+05, 1.17860206e+05, 1.17884911e+05, 1.17909618e+05 -, 1.17934326e+05, 1.17959035e+05, 1.17983745e+05, 1.18008457e+05 -, 1.18033171e+05, 1.18057885e+05, 1.18082601e+05, 1.18107318e+05 -, 1.18132036e+05, 1.18156756e+05, 1.18181477e+05, 1.18206199e+05 -, 1.18230922e+05, 1.18255647e+05, 1.18280373e+05, 1.18305101e+05 -, 1.18329829e+05, 1.18354559e+05, 1.18379291e+05, 1.18404023e+05 -, 1.18428757e+05, 1.18453492e+05, 1.18478229e+05, 1.18502966e+05 -, 1.18527705e+05, 1.18552446e+05, 1.18577187e+05, 1.18601930e+05 -, 1.18626674e+05, 1.18651420e+05, 1.18676167e+05, 1.18700915e+05 -, 1.18725664e+05, 1.18750415e+05, 1.18775166e+05, 1.18799920e+05 -, 1.18824674e+05, 1.18849430e+05, 1.18874187e+05, 1.18898945e+05 -, 1.18923705e+05, 1.18948466e+05, 1.18973228e+05, 1.18997992e+05 -, 1.19022757e+05, 1.19047523e+05, 1.19072290e+05, 1.19097059e+05 -, 1.19121829e+05, 1.19146600e+05, 1.19171372e+05, 1.19196146e+05 -, 1.19220921e+05, 1.19245698e+05, 1.19270475e+05, 1.19295254e+05 -, 1.19320035e+05, 1.19344816e+05, 1.19369599e+05, 1.19394383e+05 -, 1.19419169e+05, 1.19443955e+05, 1.19468743e+05, 1.19493532e+05 -, 1.19518323e+05, 1.19543115e+05, 1.19567908e+05, 1.19592702e+05 -, 1.19617498e+05, 1.19642295e+05, 1.19667093e+05, 1.19691893e+05 -, 1.19716694e+05, 1.19741496e+05, 1.19766299e+05, 1.19791104e+05 -, 1.19815910e+05, 1.19840717e+05, 1.19865526e+05, 1.19890335e+05 -, 1.19915146e+05, 1.19939959e+05, 1.19964773e+05, 1.19989587e+05 -, 1.20014404e+05, 1.20039221e+05, 1.20064040e+05, 1.20088860e+05 -, 1.20113681e+05, 1.20138504e+05, 1.20163328e+05, 1.20188153e+05 -, 1.20212980e+05, 1.20237808e+05, 1.20262637e+05, 1.20287467e+05 -, 1.20312299e+05, 1.20337131e+05, 1.20361966e+05, 1.20386801e+05 -, 1.20411638e+05, 1.20436476e+05, 1.20461315e+05, 1.20486156e+05 -, 1.20510998e+05, 1.20535841e+05, 1.20560685e+05, 1.20585531e+05 -, 1.20610378e+05, 1.20635226e+05, 1.20660076e+05, 1.20684927e+05 -, 1.20709779e+05, 1.20734632e+05, 1.20759487e+05, 1.20784343e+05 -, 1.20809200e+05, 1.20834058e+05, 1.20858918e+05, 1.20883779e+05 -, 1.20908641e+05, 1.20933505e+05, 1.20958370e+05, 1.20983236e+05 -, 1.21008104e+05, 1.21032972e+05, 1.21057842e+05, 1.21082714e+05 -, 1.21107586e+05, 1.21132460e+05, 1.21157335e+05, 1.21182212e+05 -, 1.21207089e+05, 1.21231968e+05, 1.21256848e+05, 1.21281730e+05 -, 1.21306613e+05, 1.21331497e+05, 1.21356382e+05, 1.21381269e+05 -, 1.21406156e+05, 1.21431046e+05, 1.21455936e+05, 1.21480828e+05 -, 1.21505721e+05, 1.21530615e+05, 1.21555510e+05, 1.21580407e+05 -, 1.21605305e+05, 1.21630205e+05, 1.21655105e+05, 1.21680007e+05 -, 1.21704910e+05, 1.21729815e+05, 1.21754721e+05, 1.21779628e+05 -, 1.21804536e+05, 1.21829445e+05, 1.21854356e+05, 1.21879268e+05 -, 1.21904182e+05, 1.21929096e+05, 1.21954012e+05, 1.21978929e+05 -, 1.22003848e+05, 1.22028767e+05, 1.22053688e+05, 1.22078611e+05 -, 1.22103534e+05, 1.22128459e+05, 1.22153385e+05, 1.22178313e+05 -, 1.22203241e+05, 1.22228171e+05, 1.22253102e+05, 1.22278035e+05 -, 1.22302968e+05, 1.22327903e+05, 1.22352840e+05, 1.22377777e+05 -, 1.22402716e+05, 1.22427656e+05, 1.22452597e+05, 1.22477540e+05 -, 1.22502484e+05, 1.22527429e+05, 1.22552375e+05, 1.22577323e+05 -, 1.22602272e+05, 1.22627222e+05, 1.22652174e+05, 1.22677126e+05 -, 1.22702080e+05, 1.22727036e+05, 1.22751992e+05, 1.22776950e+05 -, 1.22801909e+05, 1.22826870e+05, 1.22851831e+05, 1.22876794e+05 -, 1.22901758e+05, 1.22926724e+05, 1.22951691e+05, 1.22976659e+05 -, 1.23001628e+05, 1.23026598e+05, 1.23051570e+05, 1.23076543e+05 -, 1.23101517e+05, 1.23126493e+05, 1.23151470e+05, 1.23176448e+05 -, 1.23201427e+05, 1.23226408e+05, 1.23251390e+05, 1.23276373e+05 -, 1.23301358e+05, 1.23326343e+05, 1.23351330e+05, 1.23376318e+05 -, 1.23401308e+05, 1.23426299e+05, 1.23451291e+05, 1.23476284e+05 -, 1.23501279e+05, 1.23526274e+05, 1.23551272e+05, 1.23576270e+05 -, 1.23601270e+05, 1.23626270e+05, 1.23651273e+05, 1.23676276e+05 -, 1.23701281e+05, 1.23726287e+05, 1.23751294e+05, 1.23776302e+05 -, 1.23801312e+05, 1.23826323e+05, 1.23851335e+05, 1.23876349e+05 -, 1.23901364e+05, 1.23926380e+05, 1.23951397e+05, 1.23976416e+05 -, 1.24001435e+05, 1.24026456e+05, 1.24051479e+05, 1.24076502e+05 -, 1.24101527e+05, 1.24126554e+05, 1.24151581e+05, 1.24176610e+05 -, 1.24201640e+05, 1.24226671e+05, 1.24251703e+05, 1.24276737e+05 -, 1.24301772e+05, 1.24326808e+05, 1.24351846e+05, 1.24376884e+05 -, 1.24401924e+05, 1.24426966e+05, 1.24452008e+05, 1.24477052e+05 -, 1.24502097e+05, 1.24527143e+05, 1.24552191e+05, 1.24577240e+05 -, 1.24602290e+05, 1.24627341e+05, 1.24652394e+05, 1.24677448e+05 -, 1.24702503e+05, 1.24727559e+05, 1.24752617e+05, 1.24777676e+05 -, 1.24802736e+05, 1.24827797e+05, 1.24852860e+05, 1.24877924e+05 -, 1.24902989e+05, 1.24928056e+05, 1.24953123e+05, 1.24978192e+05 -, 1.25003262e+05, 1.25028334e+05, 1.25053407e+05, 1.25078481e+05 -, 1.25103556e+05, 1.25128632e+05, 1.25153710e+05, 1.25178789e+05 -, 1.25203869e+05, 1.25228951e+05, 1.25254034e+05, 1.25279118e+05 -, 1.25304203e+05, 1.25329290e+05, 1.25354377e+05, 1.25379467e+05 -, 1.25404557e+05, 1.25429648e+05, 1.25454741e+05, 1.25479835e+05 -, 1.25504931e+05, 1.25530027e+05, 1.25555125e+05, 1.25580224e+05 -, 1.25605325e+05, 1.25630426e+05, 1.25655529e+05, 1.25680633e+05 -, 1.25705739e+05, 1.25730845e+05, 1.25755953e+05, 1.25781062e+05 -, 1.25806173e+05, 1.25831284e+05, 1.25856397e+05, 1.25881511e+05 -, 1.25906627e+05, 1.25931743e+05, 1.25956861e+05, 1.25981980e+05 -, 1.26007101e+05, 1.26032222e+05, 1.26057345e+05, 1.26082470e+05 -, 1.26107595e+05, 1.26132722e+05, 1.26157850e+05, 1.26182979e+05 -, 1.26208109e+05, 1.26233241e+05, 1.26258374e+05, 1.26283508e+05 -, 1.26308643e+05, 1.26333780e+05, 1.26358918e+05, 1.26384057e+05 -, 1.26409197e+05, 1.26434339e+05, 1.26459482e+05, 1.26484626e+05 -, 1.26509772e+05, 1.26534918e+05, 1.26560066e+05, 1.26585215e+05 -, 1.26610366e+05, 1.26635518e+05, 1.26660670e+05, 1.26685825e+05 -, 1.26710980e+05, 1.26736137e+05, 1.26761295e+05, 1.26786454e+05 -, 1.26811614e+05, 1.26836776e+05, 1.26861939e+05, 1.26887103e+05 -, 1.26912268e+05, 1.26937435e+05, 1.26962603e+05, 1.26987772e+05 -, 1.27012942e+05, 1.27038114e+05, 1.27063287e+05, 1.27088461e+05 -, 1.27113636e+05, 1.27138813e+05, 1.27163991e+05, 1.27189170e+05 -, 1.27214350e+05, 1.27239532e+05, 1.27264715e+05, 1.27289899e+05 -, 1.27315084e+05, 1.27340271e+05, 1.27365459e+05, 1.27390648e+05 -, 1.27415838e+05, 1.27441030e+05, 1.27466223e+05, 1.27491417e+05 -, 1.27516612e+05, 1.27541809e+05, 1.27567006e+05, 1.27592205e+05 -, 1.27617406e+05, 1.27642607e+05, 1.27667810e+05, 1.27693014e+05 -, 1.27718219e+05, 1.27743426e+05, 1.27768633e+05, 1.27793842e+05 -, 1.27819053e+05, 1.27844264e+05, 1.27869477e+05, 1.27894691e+05 -, 1.27919906e+05, 1.27945123e+05, 1.27970340e+05, 1.27995559e+05 -, 1.28020779e+05, 1.28046001e+05, 1.28071223e+05, 1.28096447e+05 -, 1.28121672e+05, 1.28146899e+05, 1.28172127e+05, 1.28197355e+05 -, 1.28222585e+05, 1.28247817e+05, 1.28273049e+05, 1.28298283e+05 -, 1.28323518e+05, 1.28348755e+05, 1.28373992e+05, 1.28399231e+05 -, 1.28424471e+05, 1.28449712e+05, 1.28474955e+05, 1.28500199e+05 -, 1.28525444e+05, 1.28550690e+05, 1.28575937e+05, 1.28601186e+05 -, 1.28626436e+05, 1.28651687e+05, 1.28676940e+05, 1.28702193e+05 -, 1.28727448e+05, 1.28752704e+05, 1.28777962e+05, 1.28803220e+05 -, 1.28828480e+05, 1.28853741e+05, 1.28879004e+05, 1.28904267e+05 -, 1.28929532e+05, 1.28954798e+05, 1.28980065e+05, 1.29005334e+05 -, 1.29030604e+05, 1.29055875e+05, 1.29081147e+05, 1.29106420e+05 -, 1.29131695e+05, 1.29156971e+05, 1.29182248e+05, 1.29207527e+05 -, 1.29232806e+05, 1.29258087e+05, 1.29283369e+05, 1.29308653e+05 -, 1.29333937e+05, 1.29359223e+05, 1.29384510e+05, 1.29409799e+05 -, 1.29435088e+05, 1.29460379e+05, 1.29485671e+05, 1.29510964e+05 -, 1.29536259e+05, 1.29561555e+05, 1.29586852e+05, 1.29612150e+05 -, 1.29637449e+05, 1.29662750e+05, 1.29688052e+05, 1.29713355e+05 -, 1.29738659e+05, 1.29763965e+05, 1.29789272e+05, 1.29814580e+05 -, 1.29839889e+05, 1.29865200e+05, 1.29890511e+05, 1.29915824e+05 -, 1.29941139e+05, 1.29966454e+05, 1.29991771e+05, 1.30017089e+05 -, 1.30042408e+05, 1.30067728e+05, 1.30093050e+05, 1.30118373e+05 -, 1.30143697e+05, 1.30169022e+05, 1.30194349e+05, 1.30219677e+05 -, 1.30245006e+05, 1.30270336e+05, 1.30295667e+05, 1.30321000e+05 -, 1.30346334e+05, 1.30371669e+05, 1.30397006e+05, 1.30422343e+05 -, 1.30447682e+05, 1.30473022e+05, 1.30498363e+05, 1.30523706e+05 -, 1.30549050e+05, 1.30574395e+05, 1.30599741e+05, 1.30625089e+05 -, 1.30650437e+05, 1.30675787e+05, 1.30701138e+05, 1.30726491e+05 -, 1.30751844e+05, 1.30777199e+05, 1.30802555e+05, 1.30827913e+05 -, 1.30853271e+05, 1.30878631e+05, 1.30903992e+05, 1.30929354e+05 -, 1.30954718e+05, 1.30980082e+05, 1.31005448e+05, 1.31030816e+05 -, 1.31056184e+05, 1.31081553e+05, 1.31106924e+05, 1.31132296e+05 -, 1.31157670e+05, 1.31183044e+05, 1.31208420e+05, 1.31233797e+05 -, 1.31259175e+05, 1.31284554e+05, 1.31309935e+05, 1.31335317e+05 -, 1.31360700e+05, 1.31386084e+05, 1.31411470e+05, 1.31436857e+05 -, 1.31462245e+05, 1.31487634e+05, 1.31513024e+05, 1.31538416e+05 -, 1.31563809e+05, 1.31589203e+05, 1.31614598e+05, 1.31639995e+05 -, 1.31665393e+05, 1.31690792e+05, 1.31716192e+05, 1.31741594e+05 -, 1.31766996e+05, 1.31792400e+05, 1.31817805e+05, 1.31843212e+05 -, 1.31868619e+05, 1.31894028e+05, 1.31919438e+05, 1.31944850e+05 -, 1.31970262e+05, 1.31995676e+05, 1.32021091e+05, 1.32046507e+05 -, 1.32071924e+05, 1.32097343e+05, 1.32122763e+05, 1.32148184e+05 -, 1.32173606e+05, 1.32199030e+05, 1.32224454e+05, 1.32249880e+05 -, 1.32275307e+05, 1.32300736e+05, 1.32326165e+05, 1.32351596e+05 -, 1.32377028e+05, 1.32402462e+05, 1.32427896e+05, 1.32453332e+05 -, 1.32478769e+05, 1.32504207e+05, 1.32529646e+05, 1.32555087e+05 -, 1.32580529e+05, 1.32605972e+05, 1.32631416e+05, 1.32656861e+05 -, 1.32682308e+05, 1.32707756e+05, 1.32733205e+05, 1.32758656e+05 -, 1.32784107e+05, 1.32809560e+05, 1.32835014e+05, 1.32860469e+05 -, 1.32885926e+05, 1.32911383e+05, 1.32936842e+05, 1.32962302e+05 -, 1.32987764e+05, 1.33013226e+05, 1.33038690e+05, 1.33064155e+05 -, 1.33089621e+05, 1.33115089e+05, 1.33140557e+05, 1.33166027e+05 -, 1.33191498e+05, 1.33216971e+05, 1.33242444e+05, 1.33267919e+05 -, 1.33293395e+05, 1.33318872e+05, 1.33344350e+05, 1.33369830e+05 -, 1.33395311e+05, 1.33420793e+05, 1.33446276e+05, 1.33471761e+05 -, 1.33497246e+05, 1.33522733e+05, 1.33548221e+05, 1.33573711e+05 -, 1.33599201e+05, 1.33624693e+05, 1.33650186e+05, 1.33675680e+05 -, 1.33701176e+05, 1.33726672e+05, 1.33752170e+05, 1.33777669e+05 -, 1.33803170e+05, 1.33828671e+05, 1.33854174e+05, 1.33879678e+05 -, 1.33905183e+05, 1.33930689e+05, 1.33956197e+05, 1.33981706e+05 -, 1.34007216e+05, 1.34032727e+05, 1.34058239e+05, 1.34083753e+05 -, 1.34109268e+05, 1.34134784e+05, 1.34160301e+05, 1.34185819e+05 -, 1.34211339e+05, 1.34236860e+05, 1.34262382e+05, 1.34287906e+05 -, 1.34313430e+05, 1.34338956e+05, 1.34364483e+05, 1.34390011e+05 -, 1.34415541e+05, 1.34441071e+05, 1.34466603e+05, 1.34492136e+05 -, 1.34517670e+05, 1.34543206e+05, 1.34568742e+05, 1.34594280e+05 -, 1.34619819e+05, 1.34645360e+05, 1.34670901e+05, 1.34696444e+05 -, 1.34721988e+05, 1.34747533e+05, 1.34773080e+05, 1.34798627e+05 -, 1.34824176e+05, 1.34849726e+05, 1.34875277e+05, 1.34900830e+05 -, 1.34926383e+05, 1.34951938e+05, 1.34977494e+05, 1.35003051e+05 -, 1.35028610e+05, 1.35054169e+05, 1.35079730e+05, 1.35105292e+05 -, 1.35130856e+05, 1.35156420e+05, 1.35181986e+05, 1.35207553e+05 -, 1.35233121e+05, 1.35258690e+05, 1.35284261e+05, 1.35309833e+05 -, 1.35335406e+05, 1.35360980e+05, 1.35386555e+05, 1.35412132e+05 -, 1.35437710e+05, 1.35463289e+05, 1.35488869e+05, 1.35514450e+05 -, 1.35540033e+05, 1.35565617e+05, 1.35591202e+05, 1.35616788e+05 -, 1.35642376e+05, 1.35667964e+05, 1.35693554e+05, 1.35719145e+05 -, 1.35744738e+05, 1.35770331e+05, 1.35795926e+05, 1.35821522e+05 -, 1.35847119e+05, 1.35872717e+05, 1.35898317e+05, 1.35923918e+05 -, 1.35949519e+05, 1.35975123e+05, 1.36000727e+05, 1.36026333e+05 -, 1.36051939e+05, 1.36077547e+05, 1.36103156e+05, 1.36128767e+05 -, 1.36154378e+05, 1.36179991e+05, 1.36205605e+05, 1.36231220e+05 -, 1.36256837e+05, 1.36282454e+05, 1.36308073e+05, 1.36333693e+05 -, 1.36359314e+05, 1.36384937e+05, 1.36410560e+05, 1.36436185e+05 -, 1.36461811e+05, 1.36487439e+05, 1.36513067e+05, 1.36538697e+05 -, 1.36564327e+05, 1.36589960e+05, 1.36615593e+05, 1.36641227e+05 -, 1.36666863e+05, 1.36692500e+05, 1.36718138e+05, 1.36743777e+05 -, 1.36769418e+05, 1.36795059e+05, 1.36820702e+05, 1.36846346e+05 -, 1.36871991e+05, 1.36897638e+05, 1.36923285e+05, 1.36948934e+05 -, 1.36974584e+05, 1.37000236e+05, 1.37025888e+05, 1.37051542e+05 -, 1.37077197e+05, 1.37102853e+05, 1.37128510e+05, 1.37154169e+05 -, 1.37179828e+05, 1.37205489e+05, 1.37231151e+05, 1.37256814e+05 -, 1.37282479e+05, 1.37308145e+05, 1.37333811e+05, 1.37359480e+05 -, 1.37385149e+05, 1.37410819e+05, 1.37436491e+05, 1.37462164e+05 -, 1.37487838e+05, 1.37513513e+05, 1.37539190e+05, 1.37564867e+05 -, 1.37590546e+05, 1.37616226e+05, 1.37641907e+05, 1.37667590e+05 -, 1.37693274e+05, 1.37718958e+05, 1.37744644e+05, 1.37770332e+05 -, 1.37796020e+05, 1.37821710e+05, 1.37847401e+05, 1.37873093e+05 -, 1.37898786e+05, 1.37924480e+05, 1.37950176e+05, 1.37975873e+05 -, 1.38001571e+05, 1.38027270e+05, 1.38052970e+05, 1.38078672e+05 -, 1.38104375e+05, 1.38130079e+05, 1.38155784e+05, 1.38181490e+05 -, 1.38207198e+05, 1.38232907e+05, 1.38258617e+05, 1.38284328e+05 -, 1.38310040e+05, 1.38335754e+05, 1.38361469e+05, 1.38387185e+05 -, 1.38412902e+05, 1.38438620e+05, 1.38464340e+05, 1.38490060e+05 -, 1.38515782e+05, 1.38541505e+05, 1.38567230e+05, 1.38592955e+05 -, 1.38618682e+05, 1.38644410e+05, 1.38670139e+05, 1.38695869e+05 -, 1.38721601e+05, 1.38747333e+05, 1.38773067e+05, 1.38798802e+05 -, 1.38824538e+05, 1.38850276e+05, 1.38876015e+05, 1.38901754e+05 -, 1.38927495e+05, 1.38953238e+05, 1.38978981e+05, 1.39004726e+05 -, 1.39030471e+05, 1.39056218e+05, 1.39081967e+05, 1.39107716e+05 -, 1.39133466e+05, 1.39159218e+05, 1.39184971e+05, 1.39210725e+05 -, 1.39236481e+05, 1.39262237e+05, 1.39287995e+05, 1.39313754e+05 -, 1.39339514e+05, 1.39365275e+05, 1.39391038e+05, 1.39416801e+05 -, 1.39442566e+05, 1.39468332e+05, 1.39494099e+05, 1.39519868e+05 -, 1.39545637e+05, 1.39571408e+05, 1.39597180e+05, 1.39622953e+05 -, 1.39648728e+05, 1.39674503e+05, 1.39700280e+05, 1.39726058e+05 -, 1.39751837e+05, 1.39777617e+05, 1.39803399e+05, 1.39829181e+05 -, 1.39854965e+05, 1.39880750e+05, 1.39906537e+05, 1.39932324e+05 -, 1.39958113e+05, 1.39983903e+05, 1.40009694e+05, 1.40035486e+05 -, 1.40061279e+05, 1.40087074e+05, 1.40112869e+05, 1.40138666e+05 -, 1.40164465e+05, 1.40190264e+05, 1.40216064e+05, 1.40241866e+05 -, 1.40267669e+05, 1.40293473e+05, 1.40319278e+05, 1.40345085e+05 -, 1.40370892e+05, 1.40396701e+05, 1.40422511e+05, 1.40448322e+05 -, 1.40474135e+05, 1.40499948e+05, 1.40525763e+05, 1.40551579e+05 -, 1.40577396e+05, 1.40603214e+05, 1.40629034e+05, 1.40654854e+05 -, 1.40680676e+05, 1.40706499e+05, 1.40732324e+05, 1.40758149e+05 -, 1.40783976e+05, 1.40809803e+05, 1.40835632e+05, 1.40861462e+05 -, 1.40887294e+05, 1.40913126e+05, 1.40938960e+05, 1.40964795e+05 -, 1.40990631e+05, 1.41016468e+05, 1.41042307e+05, 1.41068146e+05 -, 1.41093987e+05, 1.41119829e+05, 1.41145672e+05, 1.41171516e+05 -, 1.41197362e+05, 1.41223209e+05, 1.41249057e+05, 1.41274906e+05 -, 1.41300756e+05, 1.41326607e+05, 1.41352460e+05, 1.41378314e+05 -, 1.41404169e+05, 1.41430025e+05, 1.41455882e+05, 1.41481741e+05 -, 1.41507601e+05, 1.41533461e+05, 1.41559324e+05, 1.41585187e+05 -, 1.41611051e+05, 1.41636917e+05, 1.41662784e+05, 1.41688652e+05 -, 1.41714521e+05, 1.41740391e+05, 1.41766263e+05, 1.41792135e+05 -, 1.41818009e+05, 1.41843884e+05, 1.41869761e+05, 1.41895638e+05 -, 1.41921517e+05, 1.41947396e+05, 1.41973277e+05, 1.41999160e+05 -, 1.42025043e+05, 1.42050927e+05, 1.42076813e+05, 1.42102700e+05 -, 1.42128588e+05, 1.42154477e+05, 1.42180368e+05, 1.42206259e+05 -, 1.42232152e+05, 1.42258046e+05, 1.42283941e+05, 1.42309837e+05 -, 1.42335735e+05, 1.42361633e+05, 1.42387533e+05, 1.42413434e+05 -, 1.42439336e+05, 1.42465240e+05, 1.42491144e+05, 1.42517050e+05 -, 1.42542957e+05, 1.42568865e+05, 1.42594774e+05, 1.42620685e+05 -, 1.42646596e+05, 1.42672509e+05, 1.42698423e+05, 1.42724338e+05 -, 1.42750254e+05, 1.42776172e+05, 1.42802091e+05, 1.42828010e+05 -, 1.42853931e+05, 1.42879854e+05, 1.42905777e+05, 1.42931701e+05 -, 1.42957627e+05, 1.42983554e+05, 1.43009482e+05, 1.43035411e+05 -, 1.43061342e+05, 1.43087273e+05, 1.43113206e+05, 1.43139140e+05 -, 1.43165075e+05, 1.43191012e+05, 1.43216949e+05, 1.43242888e+05 -, 1.43268827e+05, 1.43294768e+05, 1.43320711e+05, 1.43346654e+05 -, 1.43372598e+05, 1.43398544e+05, 1.43424491e+05, 1.43450439e+05 -, 1.43476388e+05, 1.43502339e+05, 1.43528290e+05, 1.43554243e+05 -, 1.43580197e+05, 1.43606152e+05, 1.43632108e+05, 1.43658065e+05 -, 1.43684024e+05, 1.43709984e+05, 1.43735945e+05, 1.43761907e+05 -, 1.43787870e+05, 1.43813835e+05, 1.43839800e+05, 1.43865767e+05 -, 1.43891735e+05, 1.43917704e+05, 1.43943674e+05, 1.43969646e+05 -, 1.43995619e+05, 1.44021592e+05, 1.44047567e+05, 1.44073543e+05 -, 1.44099521e+05, 1.44125499e+05, 1.44151479e+05, 1.44177460e+05 -, 1.44203442e+05, 1.44229425e+05, 1.44255409e+05, 1.44281395e+05 -, 1.44307382e+05, 1.44333370e+05, 1.44359359e+05, 1.44385349e+05 -, 1.44411340e+05, 1.44437333e+05, 1.44463326e+05, 1.44489321e+05 -, 1.44515317e+05, 1.44541315e+05, 1.44567313e+05, 1.44593313e+05 -, 1.44619313e+05, 1.44645315e+05, 1.44671318e+05, 1.44697322e+05 -, 1.44723328e+05, 1.44749334e+05, 1.44775342e+05, 1.44801351e+05 -, 1.44827361e+05, 1.44853372e+05, 1.44879385e+05, 1.44905398e+05 -, 1.44931413e+05, 1.44957429e+05, 1.44983446e+05, 1.45009464e+05 -, 1.45035484e+05, 1.45061504e+05, 1.45087526e+05, 1.45113549e+05 -, 1.45139573e+05, 1.45165598e+05, 1.45191625e+05, 1.45217652e+05 -, 1.45243681e+05, 1.45269711e+05, 1.45295742e+05, 1.45321774e+05 -, 1.45347808e+05, 1.45373842e+05, 1.45399878e+05, 1.45425915e+05 -, 1.45451953e+05, 1.45477992e+05, 1.45504033e+05, 1.45530074e+05 -, 1.45556117e+05, 1.45582161e+05, 1.45608206e+05, 1.45634252e+05 -, 1.45660300e+05, 1.45686348e+05, 1.45712398e+05, 1.45738449e+05 -, 1.45764501e+05, 1.45790554e+05, 1.45816609e+05, 1.45842664e+05 -, 1.45868721e+05, 1.45894779e+05, 1.45920838e+05, 1.45946898e+05 -, 1.45972959e+05, 1.45999022e+05, 1.46025085e+05, 1.46051150e+05 -, 1.46077216e+05, 1.46103284e+05, 1.46129352e+05, 1.46155421e+05 -, 1.46181492e+05, 1.46207564e+05, 1.46233637e+05, 1.46259711e+05 -, 1.46285786e+05, 1.46311863e+05, 1.46337940e+05, 1.46364019e+05 -, 1.46390099e+05, 1.46416180e+05, 1.46442263e+05, 1.46468346e+05 -, 1.46494431e+05, 1.46520516e+05, 1.46546603e+05, 1.46572691e+05 -, 1.46598781e+05, 1.46624871e+05, 1.46650963e+05, 1.46677055e+05 -, 1.46703149e+05, 1.46729244e+05, 1.46755341e+05, 1.46781438e+05 -, 1.46807537e+05, 1.46833636e+05, 1.46859737e+05, 1.46885839e+05 -, 1.46911942e+05, 1.46938047e+05, 1.46964152e+05, 1.46990259e+05 -, 1.47016367e+05, 1.47042476e+05, 1.47068586e+05, 1.47094697e+05 -, 1.47120809e+05, 1.47146923e+05, 1.47173038e+05, 1.47199154e+05 -, 1.47225271e+05, 1.47251389e+05, 1.47277508e+05, 1.47303629e+05 -, 1.47329751e+05, 1.47355874e+05, 1.47381998e+05, 1.47408123e+05 -, 1.47434249e+05, 1.47460377e+05, 1.47486505e+05, 1.47512635e+05 -, 1.47538766e+05, 1.47564898e+05, 1.47591032e+05, 1.47617166e+05 -, 1.47643302e+05, 1.47669438e+05, 1.47695576e+05, 1.47721715e+05 -, 1.47747856e+05, 1.47773997e+05, 1.47800140e+05, 1.47826283e+05 -, 1.47852428e+05, 1.47878574e+05, 1.47904721e+05, 1.47930870e+05 -, 1.47957019e+05, 1.47983170e+05, 1.48009322e+05, 1.48035474e+05 -, 1.48061629e+05, 1.48087784e+05, 1.48113940e+05, 1.48140098e+05 -, 1.48166257e+05, 1.48192416e+05, 1.48218577e+05, 1.48244740e+05 -, 1.48270903e+05, 1.48297067e+05, 1.48323233e+05, 1.48349400e+05 -, 1.48375568e+05, 1.48401737e+05, 1.48427907e+05, 1.48454079e+05 -, 1.48480251e+05, 1.48506425e+05, 1.48532600e+05, 1.48558776e+05 -, 1.48584953e+05, 1.48611131e+05, 1.48637311e+05, 1.48663491e+05 -, 1.48689673e+05, 1.48715856e+05, 1.48742040e+05, 1.48768226e+05 -, 1.48794412e+05, 1.48820599e+05, 1.48846788e+05, 1.48872978e+05 -, 1.48899169e+05, 1.48925361e+05, 1.48951555e+05, 1.48977749e+05 -, 1.49003945e+05, 1.49030141e+05, 1.49056339e+05, 1.49082538e+05 -, 1.49108739e+05, 1.49134940e+05, 1.49161143e+05, 1.49187346e+05 -, 1.49213551e+05, 1.49239757e+05, 1.49265964e+05, 1.49292172e+05 -, 1.49318382e+05, 1.49344592e+05, 1.49370804e+05, 1.49397017e+05 -, 1.49423231e+05, 1.49449446e+05, 1.49475663e+05, 1.49501880e+05 -, 1.49528099e+05, 1.49554318e+05, 1.49580539e+05, 1.49606761e+05 -, 1.49632985e+05, 1.49659209e+05, 1.49685435e+05, 1.49711661e+05 -, 1.49737889e+05, 1.49764118e+05, 1.49790348e+05, 1.49816579e+05 -, 1.49842812e+05, 1.49869045e+05, 1.49895280e+05, 1.49921516e+05 -, 1.49947753e+05, 1.49973991e+05, 1.50000230e+05, 1.50026471e+05 -, 1.50052712e+05, 1.50078955e+05, 1.50105199e+05, 1.50131444e+05 -, 1.50157690e+05, 1.50183938e+05, 1.50210186e+05, 1.50236436e+05 -, 1.50262686e+05, 1.50288938e+05, 1.50315191e+05, 1.50341446e+05 -, 1.50367701e+05, 1.50393957e+05, 1.50420215e+05, 1.50446474e+05 -, 1.50472734e+05, 1.50498995e+05, 1.50525257e+05, 1.50551521e+05 -, 1.50577785e+05, 1.50604051e+05, 1.50630318e+05, 1.50656585e+05 -, 1.50682855e+05, 1.50709125e+05, 1.50735396e+05, 1.50761669e+05 -, 1.50787942e+05, 1.50814217e+05, 1.50840493e+05, 1.50866770e+05 -, 1.50893049e+05, 1.50919328e+05, 1.50945609e+05, 1.50971890e+05 -, 1.50998173e+05, 1.51024457e+05, 1.51050742e+05, 1.51077028e+05 -, 1.51103316e+05, 1.51129604e+05, 1.51155894e+05, 1.51182185e+05 -, 1.51208477e+05, 1.51234770e+05, 1.51261064e+05, 1.51287360e+05 -, 1.51313656e+05, 1.51339954e+05, 1.51366253e+05, 1.51392553e+05 -, 1.51418854e+05, 1.51445156e+05, 1.51471460e+05, 1.51497764e+05 -, 1.51524070e+05, 1.51550377e+05, 1.51576685e+05, 1.51602994e+05 -, 1.51629304e+05, 1.51655615e+05, 1.51681928e+05, 1.51708242e+05 -, 1.51734556e+05, 1.51760872e+05, 1.51787190e+05, 1.51813508e+05 -, 1.51839827e+05, 1.51866148e+05, 1.51892469e+05, 1.51918792e+05 -, 1.51945116e+05, 1.51971441e+05, 1.51997767e+05, 1.52024095e+05 -, 1.52050423e+05, 1.52076753e+05, 1.52103084e+05, 1.52129416e+05 -, 1.52155749e+05, 1.52182083e+05, 1.52208418e+05, 1.52234755e+05 -, 1.52261092e+05, 1.52287431e+05, 1.52313771e+05, 1.52340112e+05 -, 1.52366454e+05, 1.52392798e+05, 1.52419142e+05, 1.52445488e+05 -, 1.52471834e+05, 1.52498182e+05, 1.52524531e+05, 1.52550881e+05 -, 1.52577233e+05, 1.52603585e+05, 1.52629939e+05, 1.52656293e+05 -, 1.52682649e+05, 1.52709006e+05, 1.52735364e+05, 1.52761724e+05 -, 1.52788084e+05, 1.52814445e+05, 1.52840808e+05, 1.52867172e+05 -, 1.52893537e+05, 1.52919903e+05, 1.52946270e+05, 1.52972638e+05 -, 1.52999008e+05, 1.53025379e+05, 1.53051750e+05, 1.53078123e+05 -, 1.53104497e+05, 1.53130872e+05, 1.53157249e+05, 1.53183626e+05 -, 1.53210005e+05, 1.53236384e+05, 1.53262765e+05, 1.53289147e+05 -, 1.53315530e+05, 1.53341914e+05, 1.53368300e+05, 1.53394686e+05 -, 1.53421074e+05, 1.53447463e+05, 1.53473853e+05, 1.53500244e+05 -, 1.53526636e+05, 1.53553029e+05, 1.53579424e+05, 1.53605819e+05 -, 1.53632216e+05, 1.53658614e+05, 1.53685013e+05, 1.53711413e+05 -, 1.53737814e+05, 1.53764217e+05, 1.53790620e+05, 1.53817025e+05 -, 1.53843431e+05, 1.53869838e+05, 1.53896246e+05, 1.53922655e+05 -, 1.53949065e+05, 1.53975477e+05, 1.54001889e+05, 1.54028303e+05 -, 1.54054718e+05, 1.54081134e+05, 1.54107551e+05, 1.54133969e+05 -, 1.54160388e+05, 1.54186809e+05, 1.54213231e+05, 1.54239653e+05 -, 1.54266077e+05, 1.54292502e+05, 1.54318929e+05, 1.54345356e+05 -, 1.54371784e+05, 1.54398214e+05, 1.54424645e+05, 1.54451076e+05 -, 1.54477509e+05, 1.54503943e+05, 1.54530379e+05, 1.54556815e+05 -, 1.54583252e+05, 1.54609691e+05, 1.54636131e+05, 1.54662572e+05 -, 1.54689014e+05, 1.54715457e+05, 1.54741901e+05, 1.54768346e+05 -, 1.54794793e+05, 1.54821241e+05, 1.54847689e+05, 1.54874139e+05 -, 1.54900590e+05, 1.54927043e+05, 1.54953496e+05, 1.54979950e+05 -, 1.55006406e+05, 1.55032862e+05, 1.55059320e+05, 1.55085779e+05 -, 1.55112239e+05, 1.55138700e+05, 1.55165163e+05, 1.55191626e+05 -, 1.55218091e+05, 1.55244557e+05, 1.55271023e+05, 1.55297491e+05 -, 1.55323960e+05, 1.55350431e+05, 1.55376902e+05, 1.55403375e+05 -, 1.55429848e+05, 1.55456323e+05, 1.55482799e+05, 1.55509276e+05 -, 1.55535754e+05, 1.55562233e+05, 1.55588713e+05, 1.55615195e+05 -, 1.55641678e+05, 1.55668161e+05, 1.55694646e+05, 1.55721132e+05 -, 1.55747619e+05, 1.55774108e+05, 1.55800597e+05, 1.55827087e+05 -, 1.55853579e+05, 1.55880072e+05, 1.55906566e+05, 1.55933061e+05 -, 1.55959557e+05, 1.55986054e+05, 1.56012552e+05, 1.56039052e+05 -, 1.56065553e+05, 1.56092054e+05, 1.56118557e+05, 1.56145061e+05 -, 1.56171566e+05, 1.56198073e+05, 1.56224580e+05, 1.56251089e+05 -, 1.56277598e+05, 1.56304109e+05, 1.56330621e+05, 1.56357134e+05 -, 1.56383648e+05, 1.56410163e+05, 1.56436680e+05, 1.56463197e+05 -, 1.56489716e+05, 1.56516235e+05, 1.56542756e+05, 1.56569278e+05 -, 1.56595801e+05, 1.56622326e+05, 1.56648851e+05, 1.56675378e+05 -, 1.56701905e+05, 1.56728434e+05, 1.56754964e+05, 1.56781495e+05 -, 1.56808027e+05, 1.56834560e+05, 1.56861094e+05, 1.56887630e+05 -, 1.56914166e+05, 1.56940704e+05, 1.56967243e+05, 1.56993783e+05 -, 1.57020324e+05, 1.57046866e+05, 1.57073410e+05, 1.57099954e+05 -, 1.57126500e+05, 1.57153046e+05, 1.57179594e+05, 1.57206143e+05 -, 1.57232693e+05, 1.57259244e+05, 1.57285796e+05, 1.57312350e+05 -, 1.57338904e+05, 1.57365460e+05, 1.57392017e+05, 1.57418575e+05 -, 1.57445134e+05, 1.57471694e+05, 1.57498255e+05, 1.57524817e+05 -, 1.57551381e+05, 1.57577946e+05, 1.57604511e+05, 1.57631078e+05 -, 1.57657646e+05, 1.57684215e+05, 1.57710785e+05, 1.57737357e+05 -, 1.57763929e+05, 1.57790503e+05, 1.57817077e+05, 1.57843653e+05 -, 1.57870230e+05, 1.57896808e+05, 1.57923387e+05, 1.57949968e+05 -, 1.57976549e+05, 1.58003132e+05, 1.58029715e+05, 1.58056300e+05 -, 1.58082886e+05, 1.58109473e+05, 1.58136061e+05, 1.58162650e+05 -, 1.58189240e+05, 1.58215832e+05, 1.58242424e+05, 1.58269018e+05 -, 1.58295613e+05, 1.58322209e+05, 1.58348806e+05, 1.58375404e+05 -, 1.58402003e+05, 1.58428604e+05, 1.58455205e+05, 1.58481808e+05 -, 1.58508412e+05, 1.58535016e+05, 1.58561622e+05, 1.58588230e+05 -, 1.58614838e+05, 1.58641447e+05, 1.58668057e+05, 1.58694669e+05 -, 1.58721282e+05, 1.58747895e+05, 1.58774510e+05, 1.58801126e+05 -, 1.58827744e+05, 1.58854362e+05, 1.58880981e+05, 1.58907602e+05 -, 1.58934223e+05, 1.58960846e+05, 1.58987470e+05, 1.59014095e+05 -, 1.59040721e+05, 1.59067348e+05, 1.59093976e+05, 1.59120606e+05 -, 1.59147236e+05, 1.59173868e+05, 1.59200500e+05, 1.59227134e+05 -, 1.59253769e+05, 1.59280405e+05, 1.59307042e+05, 1.59333681e+05 -, 1.59360320e+05, 1.59386961e+05, 1.59413602e+05, 1.59440245e+05 -, 1.59466889e+05, 1.59493534e+05, 1.59520180e+05, 1.59546827e+05 -, 1.59573476e+05, 1.59600125e+05, 1.59626776e+05, 1.59653427e+05 -, 1.59680080e+05, 1.59706734e+05, 1.59733389e+05, 1.59760045e+05 -, 1.59786702e+05, 1.59813361e+05, 1.59840020e+05, 1.59866681e+05 -, 1.59893342e+05, 1.59920005e+05, 1.59946669e+05, 1.59973334e+05 -, 1.60000000e+05, 1.60026667e+05, 1.60053336e+05, 1.60080005e+05 -, 1.60106676e+05, 1.60133347e+05, 1.60160020e+05, 1.60186694e+05 -, 1.60213369e+05, 1.60240045e+05, 1.60266722e+05, 1.60293401e+05 -, 1.60320080e+05, 1.60346761e+05, 1.60373442e+05, 1.60400125e+05 -, 1.60426809e+05, 1.60453494e+05, 1.60480180e+05, 1.60506867e+05 -, 1.60533555e+05, 1.60560245e+05, 1.60586935e+05, 1.60613627e+05 -, 1.60640320e+05, 1.60667014e+05, 1.60693709e+05, 1.60720405e+05 -, 1.60747102e+05, 1.60773800e+05, 1.60800500e+05, 1.60827200e+05 -, 1.60853902e+05, 1.60880604e+05, 1.60907308e+05, 1.60934013e+05 -, 1.60960719e+05, 1.60987426e+05, 1.61014135e+05, 1.61040844e+05 -, 1.61067555e+05, 1.61094266e+05, 1.61120979e+05, 1.61147693e+05 -, 1.61174408e+05, 1.61201124e+05, 1.61227841e+05, 1.61254559e+05 -, 1.61281278e+05, 1.61307999e+05, 1.61334720e+05, 1.61361443e+05 -, 1.61388167e+05, 1.61414892e+05, 1.61441618e+05, 1.61468345e+05 -, 1.61495073e+05, 1.61521802e+05, 1.61548533e+05, 1.61575264e+05 -, 1.61601997e+05, 1.61628730e+05, 1.61655465e+05, 1.61682201e+05 -, 1.61708938e+05, 1.61735676e+05, 1.61762416e+05, 1.61789156e+05 -, 1.61815897e+05, 1.61842640e+05, 1.61869384e+05, 1.61896128e+05 -, 1.61922874e+05, 1.61949621e+05, 1.61976369e+05, 1.62003119e+05 -, 1.62029869e+05, 1.62056620e+05, 1.62083373e+05, 1.62110126e+05 -, 1.62136881e+05, 1.62163637e+05, 1.62190394e+05, 1.62217152e+05 -, 1.62243911e+05, 1.62270671e+05, 1.62297432e+05, 1.62324195e+05 -, 1.62350958e+05, 1.62377723e+05, 1.62404489e+05, 1.62431256e+05 -, 1.62458024e+05, 1.62484793e+05, 1.62511563e+05, 1.62538334e+05 -, 1.62565106e+05, 1.62591880e+05, 1.62618654e+05, 1.62645430e+05 -, 1.62672207e+05, 1.62698985e+05, 1.62725764e+05, 1.62752544e+05 -, 1.62779325e+05, 1.62806107e+05, 1.62832891e+05, 1.62859675e+05 -, 1.62886461e+05, 1.62913247e+05, 1.62940035e+05, 1.62966824e+05 -, 1.62993614e+05, 1.63020405e+05, 1.63047197e+05, 1.63073991e+05 -, 1.63100785e+05, 1.63127580e+05, 1.63154377e+05, 1.63181175e+05 -, 1.63207973e+05, 1.63234773e+05, 1.63261574e+05, 1.63288376e+05 -, 1.63315180e+05, 1.63341984e+05, 1.63368789e+05, 1.63395596e+05 -, 1.63422403e+05, 1.63449212e+05, 1.63476022e+05, 1.63502833e+05 -, 1.63529645e+05, 1.63556458e+05, 1.63583272e+05, 1.63610087e+05 -, 1.63636904e+05, 1.63663721e+05, 1.63690540e+05, 1.63717359e+05 -, 1.63744180e+05, 1.63771002e+05, 1.63797825e+05, 1.63824649e+05 -, 1.63851474e+05, 1.63878301e+05, 1.63905128e+05, 1.63931956e+05 -, 1.63958786e+05, 1.63985617e+05, 1.64012448e+05, 1.64039281e+05 -, 1.64066115e+05, 1.64092950e+05, 1.64119786e+05, 1.64146624e+05 -, 1.64173462e+05, 1.64200301e+05, 1.64227142e+05, 1.64253983e+05 -, 1.64280826e+05, 1.64307670e+05, 1.64334515e+05, 1.64361361e+05 -, 1.64388208e+05, 1.64415056e+05, 1.64441906e+05, 1.64468756e+05 -, 1.64495607e+05, 1.64522460e+05, 1.64549314e+05, 1.64576169e+05 -, 1.64603024e+05, 1.64629881e+05, 1.64656739e+05, 1.64683599e+05 -, 1.64710459e+05, 1.64737320e+05, 1.64764183e+05, 1.64791046e+05 -, 1.64817911e+05, 1.64844777e+05, 1.64871643e+05, 1.64898511e+05 -, 1.64925380e+05, 1.64952250e+05, 1.64979122e+05, 1.65005994e+05 -, 1.65032867e+05, 1.65059742e+05, 1.65086617e+05, 1.65113494e+05 -, 1.65140372e+05, 1.65167251e+05, 1.65194131e+05, 1.65221012e+05 -, 1.65247894e+05, 1.65274777e+05, 1.65301661e+05, 1.65328547e+05 -, 1.65355433e+05, 1.65382321e+05, 1.65409210e+05, 1.65436099e+05 -, 1.65462990e+05, 1.65489882e+05, 1.65516775e+05 + 0.00000000e+00f, 1.00000000e+00f, 2.51984210e+00f, 4.32674871e+00f +, 6.34960421e+00f, 8.54987973e+00f, 1.09027236e+01f, 1.33905183e+01f +, 1.60000000e+01f, 1.87207544e+01f, 2.15443469e+01f, 2.44637810e+01f +, 2.74731418e+01f, 3.05673509e+01f, 3.37419917e+01f, 3.69931811e+01f +, 4.03174736e+01f, 4.37117870e+01f, 4.71733451e+01f, 5.06996313e+01f +, 5.42883523e+01f, 5.79374077e+01f, 6.16448653e+01f, 6.54089405e+01f +, 6.92279794e+01f, 7.31004435e+01f, 7.70248978e+01f, 8.10000000e+01f +, 8.50244912e+01f, 8.90971879e+01f, 9.32169752e+01f, 9.73828002e+01f +, 1.01593667e+02f, 1.05848633e+02f, 1.10146801e+02f, 1.14487321e+02f +, 1.18869381e+02f, 1.23292209e+02f, 1.27755065e+02f, 1.32257246e+02f +, 1.36798076e+02f, 1.41376907e+02f, 1.45993119e+02f, 1.50646117e+02f +, 1.55335327e+02f, 1.60060199e+02f, 1.64820202e+02f, 1.69614826e+02f +, 1.74443577e+02f, 1.79305980e+02f, 1.84201575e+02f, 1.89129918e+02f +, 1.94090580e+02f, 1.99083145e+02f, 2.04107210e+02f, 2.09162385e+02f +, 2.14248292e+02f, 2.19364564e+02f, 2.24510845e+02f, 2.29686789e+02f +, 2.34892058e+02f, 2.40126328e+02f, 2.45389280e+02f, 2.50680604e+02f +, 2.56000000e+02f, 2.61347174e+02f, 2.66721841e+02f, 2.72123723e+02f +, 2.77552547e+02f, 2.83008049e+02f, 2.88489971e+02f, 2.93998060e+02f +, 2.99532071e+02f, 3.05091761e+02f, 3.10676898e+02f, 3.16287249e+02f +, 3.21922592e+02f, 3.27582707e+02f, 3.33267377e+02f, 3.38976394e+02f +, 3.44709550e+02f, 3.50466646e+02f, 3.56247482e+02f, 3.62051866e+02f +, 3.67879608e+02f, 3.73730522e+02f, 3.79604427e+02f, 3.85501143e+02f +, 3.91420496e+02f, 3.97362314e+02f, 4.03326427e+02f, 4.09312672e+02f +, 4.15320884e+02f, 4.21350905e+02f, 4.27402579e+02f, 4.33475750e+02f +, 4.39570269e+02f, 4.45685987e+02f, 4.51822757e+02f, 4.57980436e+02f +, 4.64158883e+02f, 4.70357960e+02f, 4.76577530e+02f, 4.82817459e+02f +, 4.89077615e+02f, 4.95357868e+02f, 5.01658090e+02f, 5.07978156e+02f +, 5.14317941e+02f, 5.20677324e+02f, 5.27056184e+02f, 5.33454404e+02f +, 5.39871867e+02f, 5.46308458e+02f, 5.52764065e+02f, 5.59238575e+02f +, 5.65731879e+02f, 5.72243870e+02f, 5.78774440e+02f, 5.85323483e+02f +, 5.91890898e+02f, 5.98476581e+02f, 6.05080431e+02f, 6.11702349e+02f +, 6.18342238e+02f, 6.25000000e+02f, 6.31675540e+02f, 6.38368763e+02f +, 6.45079578e+02f, 6.51807891e+02f, 6.58553612e+02f, 6.65316653e+02f +, 6.72096925e+02f, 6.78894340e+02f, 6.85708813e+02f, 6.92540258e+02f +, 6.99388593e+02f, 7.06253733e+02f, 7.13135597e+02f, 7.20034104e+02f +, 7.26949174e+02f, 7.33880729e+02f, 7.40828689e+02f, 7.47792979e+02f +, 7.54773522e+02f, 7.61770242e+02f, 7.68783065e+02f, 7.75811917e+02f +, 7.82856726e+02f, 7.89917420e+02f, 7.96993927e+02f, 8.04086177e+02f +, 8.11194101e+02f, 8.18317630e+02f, 8.25456695e+02f, 8.32611230e+02f +, 8.39781167e+02f, 8.46966442e+02f, 8.54166988e+02f, 8.61382741e+02f +, 8.68613637e+02f, 8.75859614e+02f, 8.83120608e+02f, 8.90396558e+02f +, 8.97687403e+02f, 9.04993081e+02f, 9.12313534e+02f, 9.19648701e+02f +, 9.26998523e+02f, 9.34362944e+02f, 9.41741904e+02f, 9.49135347e+02f +, 9.56543216e+02f, 9.63965455e+02f, 9.71402010e+02f, 9.78852824e+02f +, 9.86317844e+02f, 9.93797016e+02f, 1.00129029e+03f, 1.00879760e+03f +, 1.01631891e+03f, 1.02385416e+03f, 1.03140330e+03f, 1.03896628e+03f +, 1.04654305e+03f, 1.05413355e+03f, 1.06173775e+03f, 1.06935559e+03f +, 1.07698701e+03f, 1.08463198e+03f, 1.09229044e+03f, 1.09996236e+03f +, 1.10764767e+03f, 1.11534634e+03f, 1.12305831e+03f, 1.13078355e+03f +, 1.13852200e+03f, 1.14627363e+03f, 1.15403838e+03f, 1.16181622e+03f +, 1.16960710e+03f, 1.17741097e+03f, 1.18522779e+03f, 1.19305752e+03f +, 1.20090012e+03f, 1.20875555e+03f, 1.21662376e+03f, 1.22450471e+03f +, 1.23239836e+03f, 1.24030468e+03f, 1.24822361e+03f, 1.25615512e+03f +, 1.26409918e+03f, 1.27205573e+03f, 1.28002474e+03f, 1.28800618e+03f +, 1.29600000e+03f, 1.30400617e+03f, 1.31202464e+03f, 1.32005539e+03f +, 1.32809836e+03f, 1.33615353e+03f, 1.34422087e+03f, 1.35230032e+03f +, 1.36039186e+03f, 1.36849545e+03f, 1.37661105e+03f, 1.38473864e+03f +, 1.39287816e+03f, 1.40102960e+03f, 1.40919291e+03f, 1.41736805e+03f +, 1.42555501e+03f, 1.43375373e+03f, 1.44196419e+03f, 1.45018636e+03f +, 1.45842020e+03f, 1.46666567e+03f, 1.47492276e+03f, 1.48319141e+03f +, 1.49147160e+03f, 1.49976331e+03f, 1.50806648e+03f, 1.51638111e+03f +, 1.52470714e+03f, 1.53304456e+03f, 1.54139333e+03f, 1.54975342e+03f +, 1.55812480e+03f, 1.56650744e+03f, 1.57490131e+03f, 1.58330638e+03f +, 1.59172262e+03f, 1.60015000e+03f, 1.60858848e+03f, 1.61703805e+03f +, 1.62549868e+03f, 1.63397032e+03f, 1.64245296e+03f, 1.65094657e+03f +, 1.65945112e+03f, 1.66796657e+03f, 1.67649291e+03f, 1.68503011e+03f +, 1.69357813e+03f, 1.70213695e+03f, 1.71070654e+03f, 1.71928688e+03f +, 1.72787793e+03f, 1.73647968e+03f, 1.74509210e+03f, 1.75371515e+03f +, 1.76234882e+03f, 1.77099307e+03f, 1.77964789e+03f, 1.78831324e+03f +, 1.79698910e+03f, 1.80567544e+03f, 1.81437225e+03f, 1.82307949e+03f +, 1.83179713e+03f, 1.84052517e+03f, 1.84926356e+03f, 1.85801228e+03f +, 1.86677132e+03f, 1.87554064e+03f, 1.88432023e+03f, 1.89311006e+03f +, 1.90191010e+03f, 1.91072033e+03f, 1.91954072e+03f, 1.92837127e+03f +, 1.93721193e+03f, 1.94606269e+03f, 1.95492353e+03f, 1.96379442e+03f +, 1.97267534e+03f, 1.98156626e+03f, 1.99046717e+03f, 1.99937804e+03f +, 2.00829885e+03f, 2.01722958e+03f, 2.02617020e+03f, 2.03512070e+03f +, 2.04408105e+03f, 2.05305123e+03f, 2.06203121e+03f, 2.07102099e+03f +, 2.08002053e+03f, 2.08902982e+03f, 2.09804883e+03f, 2.10707754e+03f +, 2.11611594e+03f, 2.12516400e+03f, 2.13422170e+03f, 2.14328902e+03f +, 2.15236594e+03f, 2.16145244e+03f, 2.17054849e+03f, 2.17965409e+03f +, 2.18876921e+03f, 2.19789383e+03f, 2.20702793e+03f, 2.21617149e+03f +, 2.22532449e+03f, 2.23448691e+03f, 2.24365873e+03f, 2.25283994e+03f +, 2.26203051e+03f, 2.27123042e+03f, 2.28043967e+03f, 2.28965821e+03f +, 2.29888605e+03f, 2.30812316e+03f, 2.31736951e+03f, 2.32662510e+03f +, 2.33588991e+03f, 2.34516390e+03f, 2.35444708e+03f, 2.36373942e+03f +, 2.37304090e+03f, 2.38235150e+03f, 2.39167120e+03f, 2.40100000e+03f +, 2.41033787e+03f, 2.41968478e+03f, 2.42904074e+03f, 2.43840571e+03f +, 2.44777968e+03f, 2.45716264e+03f, 2.46655456e+03f, 2.47595543e+03f +, 2.48536523e+03f, 2.49478394e+03f, 2.50421156e+03f, 2.51364806e+03f +, 2.52309342e+03f, 2.53254763e+03f, 2.54201067e+03f, 2.55148252e+03f +, 2.56096318e+03f, 2.57045262e+03f, 2.57995082e+03f, 2.58945777e+03f +, 2.59897346e+03f, 2.60849787e+03f, 2.61803097e+03f, 2.62757277e+03f +, 2.63712323e+03f, 2.64668235e+03f, 2.65625011e+03f, 2.66582649e+03f +, 2.67541148e+03f, 2.68500506e+03f, 2.69460722e+03f, 2.70421794e+03f +, 2.71383721e+03f, 2.72346501e+03f, 2.73310133e+03f, 2.74274614e+03f +, 2.75239945e+03f, 2.76206122e+03f, 2.77173146e+03f, 2.78141013e+03f +, 2.79109723e+03f, 2.80079274e+03f, 2.81049666e+03f, 2.82020895e+03f +, 2.82992962e+03f, 2.83965863e+03f, 2.84939599e+03f, 2.85914168e+03f +, 2.86889568e+03f, 2.87865797e+03f, 2.88842855e+03f, 2.89820740e+03f +, 2.90799450e+03f, 2.91778985e+03f, 2.92759342e+03f, 2.93740521e+03f +, 2.94722520e+03f, 2.95705337e+03f, 2.96688972e+03f, 2.97673423e+03f +, 2.98658688e+03f, 2.99644767e+03f, 3.00631658e+03f, 3.01619359e+03f +, 3.02607869e+03f, 3.03597188e+03f, 3.04587312e+03f, 3.05578243e+03f +, 3.06569977e+03f, 3.07562514e+03f, 3.08555852e+03f, 3.09549991e+03f +, 3.10544928e+03f, 3.11540663e+03f, 3.12537194e+03f, 3.13534520e+03f +, 3.14532640e+03f, 3.15531553e+03f, 3.16531256e+03f, 3.17531750e+03f +, 3.18533032e+03f, 3.19535102e+03f, 3.20537958e+03f, 3.21541599e+03f +, 3.22546023e+03f, 3.23551231e+03f, 3.24557220e+03f, 3.25563988e+03f +, 3.26571536e+03f, 3.27579862e+03f, 3.28588964e+03f, 3.29598841e+03f +, 3.30609493e+03f, 3.31620917e+03f, 3.32633113e+03f, 3.33646080e+03f +, 3.34659817e+03f, 3.35674321e+03f, 3.36689593e+03f, 3.37705631e+03f +, 3.38722433e+03f, 3.39739999e+03f, 3.40758328e+03f, 3.41777418e+03f +, 3.42797268e+03f, 3.43817877e+03f, 3.44839245e+03f, 3.45861369e+03f +, 3.46884249e+03f, 3.47907883e+03f, 3.48932271e+03f, 3.49957411e+03f +, 3.50983303e+03f, 3.52009945e+03f, 3.53037336e+03f, 3.54065475e+03f +, 3.55094361e+03f, 3.56123993e+03f, 3.57154369e+03f, 3.58185489e+03f +, 3.59217352e+03f, 3.60249957e+03f, 3.61283301e+03f, 3.62317386e+03f +, 3.63352208e+03f, 3.64387768e+03f, 3.65424065e+03f, 3.66461096e+03f +, 3.67498862e+03f, 3.68537360e+03f, 3.69576591e+03f, 3.70616553e+03f +, 3.71657245e+03f, 3.72698666e+03f, 3.73740815e+03f, 3.74783692e+03f +, 3.75827294e+03f, 3.76871621e+03f, 3.77916672e+03f, 3.78962446e+03f +, 3.80008941e+03f, 3.81056158e+03f, 3.82104095e+03f, 3.83152751e+03f +, 3.84202125e+03f, 3.85252216e+03f, 3.86303023e+03f, 3.87354545e+03f +, 3.88406781e+03f, 3.89459731e+03f, 3.90513392e+03f, 3.91567765e+03f +, 3.92622848e+03f, 3.93678640e+03f, 3.94735141e+03f, 3.95792349e+03f +, 3.96850263e+03f, 3.97908883e+03f, 3.98968207e+03f, 4.00028236e+03f +, 4.01088967e+03f, 4.02150399e+03f, 4.03212533e+03f, 4.04275366e+03f +, 4.05338899e+03f, 4.06403129e+03f, 4.07468057e+03f, 4.08533681e+03f +, 4.09600000e+03f, 4.10667014e+03f, 4.11734721e+03f, 4.12803121e+03f +, 4.13872213e+03f, 4.14941995e+03f, 4.16012468e+03f, 4.17083629e+03f +, 4.18155479e+03f, 4.19228016e+03f, 4.20301239e+03f, 4.21375148e+03f +, 4.22449742e+03f, 4.23525020e+03f, 4.24600980e+03f, 4.25677622e+03f +, 4.26754946e+03f, 4.27832950e+03f, 4.28911634e+03f, 4.29990996e+03f +, 4.31071036e+03f, 4.32151753e+03f, 4.33233146e+03f, 4.34315214e+03f +, 4.35397956e+03f, 4.36481373e+03f, 4.37565461e+03f, 4.38650222e+03f +, 4.39735654e+03f, 4.40821756e+03f, 4.41908527e+03f, 4.42995967e+03f +, 4.44084075e+03f, 4.45172850e+03f, 4.46262291e+03f, 4.47352397e+03f +, 4.48443167e+03f, 4.49534602e+03f, 4.50626699e+03f, 4.51719458e+03f +, 4.52812879e+03f, 4.53906960e+03f, 4.55001700e+03f, 4.56097100e+03f +, 4.57193158e+03f, 4.58289873e+03f, 4.59387244e+03f, 4.60485271e+03f +, 4.61583954e+03f, 4.62683290e+03f, 4.63783280e+03f, 4.64883922e+03f +, 4.65985216e+03f, 4.67087162e+03f, 4.68189757e+03f, 4.69293002e+03f +, 4.70396896e+03f, 4.71501438e+03f, 4.72606627e+03f, 4.73712463e+03f +, 4.74818945e+03f, 4.75926071e+03f, 4.77033842e+03f, 4.78142256e+03f +, 4.79251313e+03f, 4.80361012e+03f, 4.81471352e+03f, 4.82582333e+03f +, 4.83693953e+03f, 4.84806213e+03f, 4.85919110e+03f, 4.87032646e+03f +, 4.88146818e+03f, 4.89261627e+03f, 4.90377070e+03f, 4.91493149e+03f +, 4.92609861e+03f, 4.93727207e+03f, 4.94845185e+03f, 4.95963795e+03f +, 4.97083036e+03f, 4.98202908e+03f, 4.99323409e+03f, 5.00444539e+03f +, 5.01566297e+03f, 5.02688683e+03f, 5.03811696e+03f, 5.04935335e+03f +, 5.06059599e+03f, 5.07184488e+03f, 5.08310002e+03f, 5.09436138e+03f +, 5.10562897e+03f, 5.11690279e+03f, 5.12818281e+03f, 5.13946905e+03f +, 5.15076148e+03f, 5.16206010e+03f, 5.17336491e+03f, 5.18467590e+03f +, 5.19599307e+03f, 5.20731639e+03f, 5.21864588e+03f, 5.22998152e+03f +, 5.24132331e+03f, 5.25267123e+03f, 5.26402529e+03f, 5.27538547e+03f +, 5.28675177e+03f, 5.29812418e+03f, 5.30950270e+03f, 5.32088732e+03f +, 5.33227803e+03f, 5.34367483e+03f, 5.35507771e+03f, 5.36648666e+03f +, 5.37790168e+03f, 5.38932276e+03f, 5.40074990e+03f, 5.41218308e+03f +, 5.42362230e+03f, 5.43506756e+03f, 5.44651884e+03f, 5.45797615e+03f +, 5.46943948e+03f, 5.48090881e+03f, 5.49238415e+03f, 5.50386548e+03f +, 5.51535281e+03f, 5.52684612e+03f, 5.53834540e+03f, 5.54985066e+03f +, 5.56136189e+03f, 5.57287908e+03f, 5.58440221e+03f, 5.59593130e+03f +, 5.60746633e+03f, 5.61900729e+03f, 5.63055418e+03f, 5.64210700e+03f +, 5.65366573e+03f, 5.66523038e+03f, 5.67680092e+03f, 5.68837737e+03f +, 5.69995971e+03f, 5.71154794e+03f, 5.72314204e+03f, 5.73474203e+03f +, 5.74634788e+03f, 5.75795959e+03f, 5.76957716e+03f, 5.78120058e+03f +, 5.79282985e+03f, 5.80446496e+03f, 5.81610590e+03f, 5.82775267e+03f +, 5.83940526e+03f, 5.85106367e+03f, 5.86272788e+03f, 5.87439790e+03f +, 5.88607372e+03f, 5.89775534e+03f, 5.90944274e+03f, 5.92113592e+03f +, 5.93283488e+03f, 5.94453961e+03f, 5.95625010e+03f, 5.96796635e+03f +, 5.97968835e+03f, 5.99141611e+03f, 6.00314960e+03f, 6.01488883e+03f +, 6.02663379e+03f, 6.03838448e+03f, 6.05014088e+03f, 6.06190300e+03f +, 6.07367083e+03f, 6.08544436e+03f, 6.09722359e+03f, 6.10900851e+03f +, 6.12079911e+03f, 6.13259540e+03f, 6.14439736e+03f, 6.15620499e+03f +, 6.16801829e+03f, 6.17983725e+03f, 6.19166185e+03f, 6.20349211e+03f +, 6.21532801e+03f, 6.22716955e+03f, 6.23901672e+03f, 6.25086952e+03f +, 6.26272794e+03f, 6.27459197e+03f, 6.28646161e+03f, 6.29833687e+03f +, 6.31021772e+03f, 6.32210416e+03f, 6.33399620e+03f, 6.34589382e+03f +, 6.35779702e+03f, 6.36970579e+03f, 6.38162013e+03f, 6.39354004e+03f +, 6.40546550e+03f, 6.41739652e+03f, 6.42933308e+03f, 6.44127519e+03f +, 6.45322284e+03f, 6.46517601e+03f, 6.47713472e+03f, 6.48909895e+03f +, 6.50106869e+03f, 6.51304395e+03f, 6.52502471e+03f, 6.53701098e+03f +, 6.54900274e+03f, 6.56100000e+03f, 6.57300274e+03f, 6.58501097e+03f +, 6.59702467e+03f, 6.60904384e+03f, 6.62106848e+03f, 6.63309859e+03f +, 6.64513415e+03f, 6.65717516e+03f, 6.66922162e+03f, 6.68127352e+03f +, 6.69333086e+03f, 6.70539363e+03f, 6.71746183e+03f, 6.72953545e+03f +, 6.74161449e+03f, 6.75369894e+03f, 6.76578880e+03f, 6.77788406e+03f +, 6.78998472e+03f, 6.80209078e+03f, 6.81420222e+03f, 6.82631905e+03f +, 6.83844126e+03f, 6.85056884e+03f, 6.86270179e+03f, 6.87484011e+03f +, 6.88698379e+03f, 6.89913282e+03f, 6.91128720e+03f, 6.92344693e+03f +, 6.93561201e+03f, 6.94778241e+03f, 6.95995815e+03f, 6.97213922e+03f +, 6.98432561e+03f, 6.99651732e+03f, 7.00871434e+03f, 7.02091667e+03f +, 7.03312431e+03f, 7.04533724e+03f, 7.05755547e+03f, 7.06977899e+03f +, 7.08200780e+03f, 7.09424188e+03f, 7.10648125e+03f, 7.11872588e+03f +, 7.13097578e+03f, 7.14323095e+03f, 7.15549138e+03f, 7.16775706e+03f +, 7.18002798e+03f, 7.19230416e+03f, 7.20458557e+03f, 7.21687222e+03f +, 7.22916411e+03f, 7.24146122e+03f, 7.25376355e+03f, 7.26607110e+03f +, 7.27838386e+03f, 7.29070184e+03f, 7.30302502e+03f, 7.31535340e+03f +, 7.32768697e+03f, 7.34002574e+03f, 7.35236970e+03f, 7.36471884e+03f +, 7.37707316e+03f, 7.38943265e+03f, 7.40179731e+03f, 7.41416714e+03f +, 7.42654213e+03f, 7.43892228e+03f, 7.45130758e+03f, 7.46369803e+03f +, 7.47609363e+03f, 7.48849436e+03f, 7.50090023e+03f, 7.51331123e+03f +, 7.52572736e+03f, 7.53814862e+03f, 7.55057499e+03f, 7.56300648e+03f +, 7.57544307e+03f, 7.58788478e+03f, 7.60033158e+03f, 7.61278349e+03f +, 7.62524048e+03f, 7.63770257e+03f, 7.65016975e+03f, 7.66264200e+03f +, 7.67511933e+03f, 7.68760174e+03f, 7.70008921e+03f, 7.71258175e+03f +, 7.72507935e+03f, 7.73758200e+03f, 7.75008971e+03f, 7.76260247e+03f +, 7.77512027e+03f, 7.78764311e+03f, 7.80017099e+03f, 7.81270390e+03f +, 7.82524184e+03f, 7.83778480e+03f, 7.85033279e+03f, 7.86288579e+03f +, 7.87544380e+03f, 7.88800682e+03f, 7.90057484e+03f, 7.91314787e+03f +, 7.92572589e+03f, 7.93830890e+03f, 7.95089690e+03f, 7.96348989e+03f +, 7.97608785e+03f, 7.98869079e+03f, 8.00129871e+03f, 8.01391159e+03f +, 8.02652944e+03f, 8.03915225e+03f, 8.05178002e+03f, 8.06441274e+03f +, 8.07705040e+03f, 8.08969302e+03f, 8.10234057e+03f, 8.11499306e+03f +, 8.12765049e+03f, 8.14031285e+03f, 8.15298013e+03f, 8.16565233e+03f +, 8.17832946e+03f, 8.19101149e+03f, 8.20369844e+03f, 8.21639030e+03f +, 8.22908705e+03f, 8.24178871e+03f, 8.25449526e+03f, 8.26720671e+03f +, 8.27992304e+03f, 8.29264426e+03f, 8.30537036e+03f, 8.31810133e+03f +, 8.33083718e+03f, 8.34357790e+03f, 8.35632348e+03f, 8.36907392e+03f +, 8.38182923e+03f, 8.39458939e+03f, 8.40735439e+03f, 8.42012425e+03f +, 8.43289895e+03f, 8.44567849e+03f, 8.45846286e+03f, 8.47125207e+03f +, 8.48404611e+03f, 8.49684497e+03f, 8.50964865e+03f, 8.52245715e+03f +, 8.53527047e+03f, 8.54808859e+03f, 8.56091153e+03f, 8.57373926e+03f +, 8.58657180e+03f, 8.59940913e+03f, 8.61225126e+03f, 8.62509817e+03f +, 8.63794987e+03f, 8.65080636e+03f, 8.66366762e+03f, 8.67653365e+03f +, 8.68940446e+03f, 8.70228004e+03f, 8.71516038e+03f, 8.72804548e+03f +, 8.74093533e+03f, 8.75382995e+03f, 8.76672931e+03f, 8.77963342e+03f +, 8.79254227e+03f, 8.80545586e+03f, 8.81837419e+03f, 8.83129725e+03f +, 8.84422504e+03f, 8.85715755e+03f, 8.87009479e+03f, 8.88303675e+03f +, 8.89598342e+03f, 8.90893481e+03f, 8.92189090e+03f, 8.93485170e+03f +, 8.94781720e+03f, 8.96078740e+03f, 8.97376230e+03f, 8.98674188e+03f +, 8.99972616e+03f, 9.01271512e+03f, 9.02570876e+03f, 9.03870708e+03f +, 9.05171007e+03f, 9.06471774e+03f, 9.07773007e+03f, 9.09074707e+03f +, 9.10376873e+03f, 9.11679505e+03f, 9.12982602e+03f, 9.14286165e+03f +, 9.15590192e+03f, 9.16894683e+03f, 9.18199639e+03f, 9.19505059e+03f +, 9.20810942e+03f, 9.22117289e+03f, 9.23424098e+03f, 9.24731369e+03f +, 9.26039103e+03f, 9.27347299e+03f, 9.28655956e+03f, 9.29965075e+03f +, 9.31274654e+03f, 9.32584694e+03f, 9.33895194e+03f, 9.35206154e+03f +, 9.36517573e+03f, 9.37829452e+03f, 9.39141790e+03f, 9.40454586e+03f +, 9.41767841e+03f, 9.43081554e+03f, 9.44395724e+03f, 9.45710352e+03f +, 9.47025437e+03f, 9.48340978e+03f, 9.49656976e+03f, 9.50973430e+03f +, 9.52290339e+03f, 9.53607704e+03f, 9.54925524e+03f, 9.56243800e+03f +, 9.57562529e+03f, 9.58881713e+03f, 9.60201350e+03f, 9.61521441e+03f +, 9.62841986e+03f, 9.64162983e+03f, 9.65484433e+03f, 9.66806335e+03f +, 9.68128690e+03f, 9.69451496e+03f, 9.70774753e+03f, 9.72098461e+03f +, 9.73422621e+03f, 9.74747230e+03f, 9.76072290e+03f, 9.77397800e+03f +, 9.78723759e+03f, 9.80050168e+03f, 9.81377025e+03f, 9.82704331e+03f +, 9.84032086e+03f, 9.85360288e+03f, 9.86688938e+03f, 9.88018036e+03f +, 9.89347581e+03f, 9.90677573e+03f, 9.92008011e+03f, 9.93338895e+03f +, 9.94670225e+03f, 9.96002001e+03f, 9.97334223e+03f, 9.98666889e+03f +, 1.00000000e+04f, 1.00133356e+04f, 1.00266756e+04f, 1.00400200e+04f +, 1.00533689e+04f, 1.00667222e+04f, 1.00800799e+04f, 1.00934421e+04f +, 1.01068086e+04f, 1.01201796e+04f, 1.01335551e+04f, 1.01469349e+04f +, 1.01603192e+04f, 1.01737078e+04f, 1.01871009e+04f, 1.02004983e+04f +, 1.02139002e+04f, 1.02273065e+04f, 1.02407171e+04f, 1.02541322e+04f +, 1.02675516e+04f, 1.02809755e+04f, 1.02944037e+04f, 1.03078363e+04f +, 1.03212732e+04f, 1.03347146e+04f, 1.03481603e+04f, 1.03616104e+04f +, 1.03750648e+04f, 1.03885237e+04f, 1.04019868e+04f, 1.04154544e+04f +, 1.04289263e+04f, 1.04424025e+04f, 1.04558831e+04f, 1.04693680e+04f +, 1.04828573e+04f, 1.04963509e+04f, 1.05098489e+04f, 1.05233512e+04f +, 1.05368578e+04f, 1.05503688e+04f, 1.05638840e+04f, 1.05774036e+04f +, 1.05909276e+04f, 1.06044558e+04f, 1.06179884e+04f, 1.06315253e+04f +, 1.06450665e+04f, 1.06586119e+04f, 1.06721617e+04f, 1.06857158e+04f +, 1.06992743e+04f, 1.07128369e+04f, 1.07264039e+04f, 1.07399752e+04f +, 1.07535508e+04f, 1.07671307e+04f, 1.07807148e+04f, 1.07943032e+04f +, 1.08078959e+04f, 1.08214929e+04f, 1.08350941e+04f, 1.08486997e+04f +, 1.08623094e+04f, 1.08759235e+04f, 1.08895418e+04f, 1.09031644e+04f +, 1.09167912e+04f, 1.09304223e+04f, 1.09440576e+04f, 1.09576972e+04f +, 1.09713410e+04f, 1.09849891e+04f, 1.09986414e+04f, 1.10122979e+04f +, 1.10259587e+04f, 1.10396237e+04f, 1.10532930e+04f, 1.10669664e+04f +, 1.10806441e+04f, 1.10943261e+04f, 1.11080122e+04f, 1.11217025e+04f +, 1.11353971e+04f, 1.11490959e+04f, 1.11627989e+04f, 1.11765061e+04f +, 1.11902175e+04f, 1.12039331e+04f, 1.12176529e+04f, 1.12313769e+04f +, 1.12451051e+04f, 1.12588375e+04f, 1.12725740e+04f, 1.12863148e+04f +, 1.13000597e+04f, 1.13138088e+04f, 1.13275621e+04f, 1.13413196e+04f +, 1.13550813e+04f, 1.13688471e+04f, 1.13826171e+04f, 1.13963912e+04f +, 1.14101695e+04f, 1.14239520e+04f, 1.14377387e+04f, 1.14515295e+04f +, 1.14653244e+04f, 1.14791235e+04f, 1.14929267e+04f, 1.15067341e+04f +, 1.15205457e+04f, 1.15343613e+04f, 1.15481811e+04f, 1.15620051e+04f +, 1.15758332e+04f, 1.15896654e+04f, 1.16035017e+04f, 1.16173422e+04f +, 1.16311868e+04f, 1.16450355e+04f, 1.16588883e+04f, 1.16727453e+04f +, 1.16866063e+04f, 1.17004715e+04f, 1.17143408e+04f, 1.17282142e+04f +, 1.17420917e+04f, 1.17559733e+04f, 1.17698589e+04f, 1.17837487e+04f +, 1.17976426e+04f, 1.18115406e+04f, 1.18254426e+04f, 1.18393488e+04f +, 1.18532590e+04f, 1.18671733e+04f, 1.18810917e+04f, 1.18950142e+04f +, 1.19089408e+04f, 1.19228714e+04f, 1.19368061e+04f, 1.19507448e+04f +, 1.19646877e+04f, 1.19786346e+04f, 1.19925855e+04f, 1.20065405e+04f +, 1.20204996e+04f, 1.20344627e+04f, 1.20484299e+04f, 1.20624011e+04f +, 1.20763763e+04f, 1.20903557e+04f, 1.21043390e+04f, 1.21183264e+04f +, 1.21323178e+04f, 1.21463133e+04f, 1.21603128e+04f, 1.21743163e+04f +, 1.21883239e+04f, 1.22023354e+04f, 1.22163510e+04f, 1.22303707e+04f +, 1.22443943e+04f, 1.22584220e+04f, 1.22724537e+04f, 1.22864893e+04f +, 1.23005290e+04f, 1.23145727e+04f, 1.23286204e+04f, 1.23426722e+04f +, 1.23567279e+04f, 1.23707876e+04f, 1.23848513e+04f, 1.23989190e+04f +, 1.24129907e+04f, 1.24270664e+04f, 1.24411460e+04f, 1.24552297e+04f +, 1.24693173e+04f, 1.24834089e+04f, 1.24975045e+04f, 1.25116041e+04f +, 1.25257076e+04f, 1.25398151e+04f, 1.25539266e+04f, 1.25680421e+04f +, 1.25821615e+04f, 1.25962848e+04f, 1.26104122e+04f, 1.26245435e+04f +, 1.26386787e+04f, 1.26528179e+04f, 1.26669611e+04f, 1.26811082e+04f +, 1.26952592e+04f, 1.27094142e+04f, 1.27235731e+04f, 1.27377360e+04f +, 1.27519028e+04f, 1.27660736e+04f, 1.27802483e+04f, 1.27944269e+04f +, 1.28086094e+04f, 1.28227959e+04f, 1.28369863e+04f, 1.28511806e+04f +, 1.28653788e+04f, 1.28795810e+04f, 1.28937871e+04f, 1.29079971e+04f +, 1.29222109e+04f, 1.29364288e+04f, 1.29506505e+04f, 1.29648761e+04f +, 1.29791056e+04f, 1.29933390e+04f, 1.30075764e+04f, 1.30218176e+04f +, 1.30360627e+04f, 1.30503117e+04f, 1.30645646e+04f, 1.30788214e+04f +, 1.30930821e+04f, 1.31073466e+04f, 1.31216151e+04f, 1.31358874e+04f +, 1.31501636e+04f, 1.31644437e+04f, 1.31787276e+04f, 1.31930154e+04f +, 1.32073071e+04f, 1.32216027e+04f, 1.32359021e+04f, 1.32502054e+04f +, 1.32645125e+04f, 1.32788235e+04f, 1.32931384e+04f, 1.33074571e+04f +, 1.33217797e+04f, 1.33361061e+04f, 1.33504364e+04f, 1.33647705e+04f +, 1.33791084e+04f, 1.33934502e+04f, 1.34077959e+04f, 1.34221454e+04f +, 1.34364987e+04f, 1.34508558e+04f, 1.34652168e+04f, 1.34795816e+04f +, 1.34939503e+04f, 1.35083227e+04f, 1.35226990e+04f, 1.35370791e+04f +, 1.35514631e+04f, 1.35658508e+04f, 1.35802424e+04f, 1.35946378e+04f +, 1.36090370e+04f, 1.36234400e+04f, 1.36378468e+04f, 1.36522574e+04f +, 1.36666718e+04f, 1.36810900e+04f, 1.36955120e+04f, 1.37099379e+04f +, 1.37243675e+04f, 1.37388009e+04f, 1.37532381e+04f, 1.37676791e+04f +, 1.37821239e+04f, 1.37965724e+04f, 1.38110248e+04f, 1.38254809e+04f +, 1.38399408e+04f, 1.38544045e+04f, 1.38688720e+04f, 1.38833432e+04f +, 1.38978182e+04f, 1.39122970e+04f, 1.39267795e+04f, 1.39412658e+04f +, 1.39557559e+04f, 1.39702498e+04f, 1.39847474e+04f, 1.39992487e+04f +, 1.40137538e+04f, 1.40282627e+04f, 1.40427753e+04f, 1.40572917e+04f +, 1.40718118e+04f, 1.40863357e+04f, 1.41008633e+04f, 1.41153946e+04f +, 1.41299297e+04f, 1.41444686e+04f, 1.41590111e+04f, 1.41735574e+04f +, 1.41881075e+04f, 1.42026613e+04f, 1.42172187e+04f, 1.42317800e+04f +, 1.42463449e+04f, 1.42609136e+04f, 1.42754860e+04f, 1.42900621e+04f +, 1.43046420e+04f, 1.43192255e+04f, 1.43338128e+04f, 1.43484038e+04f +, 1.43629984e+04f, 1.43775968e+04f, 1.43921989e+04f, 1.44068048e+04f +, 1.44214143e+04f, 1.44360275e+04f, 1.44506444e+04f, 1.44652650e+04f +, 1.44798893e+04f, 1.44945173e+04f, 1.45091490e+04f, 1.45237844e+04f +, 1.45384234e+04f, 1.45530662e+04f, 1.45677126e+04f, 1.45823627e+04f +, 1.45970165e+04f, 1.46116740e+04f, 1.46263352e+04f, 1.46410000e+04f +, 1.46556685e+04f, 1.46703407e+04f, 1.46850165e+04f, 1.46996960e+04f +, 1.47143792e+04f, 1.47290660e+04f, 1.47437566e+04f, 1.47584507e+04f +, 1.47731485e+04f, 1.47878500e+04f, 1.48025551e+04f, 1.48172639e+04f +, 1.48319764e+04f, 1.48466925e+04f, 1.48614122e+04f, 1.48761356e+04f +, 1.48908626e+04f, 1.49055933e+04f, 1.49203276e+04f, 1.49350655e+04f +, 1.49498071e+04f, 1.49645523e+04f, 1.49793012e+04f, 1.49940536e+04f +, 1.50088098e+04f, 1.50235695e+04f, 1.50383329e+04f, 1.50530998e+04f +, 1.50678705e+04f, 1.50826447e+04f, 1.50974225e+04f, 1.51122040e+04f +, 1.51269891e+04f, 1.51417778e+04f, 1.51565701e+04f, 1.51713660e+04f +, 1.51861655e+04f, 1.52009687e+04f, 1.52157754e+04f, 1.52305858e+04f +, 1.52453997e+04f, 1.52602172e+04f, 1.52750384e+04f, 1.52898631e+04f +, 1.53046915e+04f, 1.53195234e+04f, 1.53343589e+04f, 1.53491980e+04f +, 1.53640407e+04f, 1.53788870e+04f, 1.53937368e+04f, 1.54085903e+04f +, 1.54234473e+04f, 1.54383079e+04f, 1.54531721e+04f, 1.54680398e+04f +, 1.54829111e+04f, 1.54977860e+04f, 1.55126645e+04f, 1.55275466e+04f +, 1.55424322e+04f, 1.55573213e+04f, 1.55722141e+04f, 1.55871104e+04f +, 1.56020102e+04f, 1.56169136e+04f, 1.56318206e+04f, 1.56467311e+04f +, 1.56616452e+04f, 1.56765628e+04f, 1.56914840e+04f, 1.57064087e+04f +, 1.57213370e+04f, 1.57362688e+04f, 1.57512042e+04f, 1.57661431e+04f +, 1.57810855e+04f, 1.57960315e+04f, 1.58109810e+04f, 1.58259341e+04f +, 1.58408906e+04f, 1.58558507e+04f, 1.58708144e+04f, 1.58857816e+04f +, 1.59007523e+04f, 1.59157265e+04f, 1.59307042e+04f, 1.59456855e+04f +, 1.59606703e+04f, 1.59756586e+04f, 1.59906504e+04f, 1.60056457e+04f +, 1.60206446e+04f, 1.60356469e+04f, 1.60506528e+04f, 1.60656622e+04f +, 1.60806751e+04f, 1.60956915e+04f, 1.61107114e+04f, 1.61257347e+04f +, 1.61407616e+04f, 1.61557920e+04f, 1.61708259e+04f, 1.61858633e+04f +, 1.62009042e+04f, 1.62159485e+04f, 1.62309964e+04f, 1.62460477e+04f +, 1.62611026e+04f, 1.62761609e+04f, 1.62912227e+04f, 1.63062880e+04f +, 1.63213568e+04f, 1.63364290e+04f, 1.63515047e+04f, 1.63665839e+04f +, 1.63816666e+04f, 1.63967527e+04f, 1.64118423e+04f, 1.64269354e+04f +, 1.64420320e+04f, 1.64571320e+04f, 1.64722355e+04f, 1.64873424e+04f +, 1.65024528e+04f, 1.65175667e+04f, 1.65326840e+04f, 1.65478048e+04f +, 1.65629290e+04f, 1.65780567e+04f, 1.65931879e+04f, 1.66083225e+04f +, 1.66234605e+04f, 1.66386020e+04f, 1.66537469e+04f, 1.66688953e+04f +, 1.66840471e+04f, 1.66992024e+04f, 1.67143611e+04f, 1.67295232e+04f +, 1.67446888e+04f, 1.67598578e+04f, 1.67750302e+04f, 1.67902061e+04f +, 1.68053854e+04f, 1.68205681e+04f, 1.68357543e+04f, 1.68509439e+04f +, 1.68661369e+04f, 1.68813333e+04f, 1.68965332e+04f, 1.69117364e+04f +, 1.69269431e+04f, 1.69421532e+04f, 1.69573667e+04f, 1.69725837e+04f +, 1.69878040e+04f, 1.70030278e+04f, 1.70182549e+04f, 1.70334855e+04f +, 1.70487195e+04f, 1.70639568e+04f, 1.70791976e+04f, 1.70944418e+04f +, 1.71096894e+04f, 1.71249403e+04f, 1.71401947e+04f, 1.71554525e+04f +, 1.71707136e+04f, 1.71859782e+04f, 1.72012461e+04f, 1.72165175e+04f +, 1.72317922e+04f, 1.72470703e+04f, 1.72623518e+04f, 1.72776366e+04f +, 1.72929249e+04f, 1.73082165e+04f, 1.73235115e+04f, 1.73388099e+04f +, 1.73541117e+04f, 1.73694168e+04f, 1.73847253e+04f, 1.74000372e+04f +, 1.74153525e+04f, 1.74306711e+04f, 1.74459931e+04f, 1.74613184e+04f +, 1.74766471e+04f, 1.74919792e+04f, 1.75073146e+04f, 1.75226534e+04f +, 1.75379956e+04f, 1.75533411e+04f, 1.75686899e+04f, 1.75840421e+04f +, 1.75993977e+04f, 1.76147566e+04f, 1.76301189e+04f, 1.76454845e+04f +, 1.76608535e+04f, 1.76762258e+04f, 1.76916014e+04f, 1.77069804e+04f +, 1.77223627e+04f, 1.77377484e+04f, 1.77531374e+04f, 1.77685297e+04f +, 1.77839254e+04f, 1.77993244e+04f, 1.78147267e+04f, 1.78301324e+04f +, 1.78455414e+04f, 1.78609537e+04f, 1.78763694e+04f, 1.78917883e+04f +, 1.79072106e+04f, 1.79226362e+04f, 1.79380652e+04f, 1.79534974e+04f +, 1.79689330e+04f, 1.79843719e+04f, 1.79998141e+04f, 1.80152596e+04f +, 1.80307084e+04f, 1.80461605e+04f, 1.80616160e+04f, 1.80770747e+04f +, 1.80925368e+04f, 1.81080022e+04f, 1.81234708e+04f, 1.81389428e+04f +, 1.81544180e+04f, 1.81698966e+04f, 1.81853785e+04f, 1.82008636e+04f +, 1.82163521e+04f, 1.82318438e+04f, 1.82473388e+04f, 1.82628372e+04f +, 1.82783388e+04f, 1.82938437e+04f, 1.83093519e+04f, 1.83248633e+04f +, 1.83403781e+04f, 1.83558961e+04f, 1.83714174e+04f, 1.83869420e+04f +, 1.84024699e+04f, 1.84180010e+04f, 1.84335355e+04f, 1.84490732e+04f +, 1.84646141e+04f, 1.84801584e+04f, 1.84957059e+04f, 1.85112567e+04f +, 1.85268107e+04f, 1.85423680e+04f, 1.85579286e+04f, 1.85734924e+04f +, 1.85890595e+04f, 1.86046299e+04f, 1.86202035e+04f, 1.86357804e+04f +, 1.86513605e+04f, 1.86669439e+04f, 1.86825305e+04f, 1.86981204e+04f +, 1.87137135e+04f, 1.87293099e+04f, 1.87449095e+04f, 1.87605124e+04f +, 1.87761185e+04f, 1.87917279e+04f, 1.88073405e+04f, 1.88229564e+04f +, 1.88385755e+04f, 1.88541978e+04f, 1.88698234e+04f, 1.88854522e+04f +, 1.89010842e+04f, 1.89167195e+04f, 1.89323580e+04f, 1.89479997e+04f +, 1.89636446e+04f, 1.89792928e+04f, 1.89949442e+04f, 1.90105989e+04f +, 1.90262567e+04f, 1.90419178e+04f, 1.90575821e+04f, 1.90732496e+04f +, 1.90889204e+04f, 1.91045943e+04f, 1.91202715e+04f, 1.91359519e+04f +, 1.91516355e+04f, 1.91673223e+04f, 1.91830123e+04f, 1.91987056e+04f +, 1.92144020e+04f, 1.92301016e+04f, 1.92458045e+04f, 1.92615105e+04f +, 1.92772198e+04f, 1.92929323e+04f, 1.93086479e+04f, 1.93243668e+04f +, 1.93400888e+04f, 1.93558141e+04f, 1.93715425e+04f, 1.93872741e+04f +, 1.94030090e+04f, 1.94187470e+04f, 1.94344882e+04f, 1.94502326e+04f +, 1.94659802e+04f, 1.94817309e+04f, 1.94974849e+04f, 1.95132420e+04f +, 1.95290023e+04f, 1.95447658e+04f, 1.95605325e+04f, 1.95763024e+04f +, 1.95920754e+04f, 1.96078516e+04f, 1.96236310e+04f, 1.96394135e+04f +, 1.96551992e+04f, 1.96709881e+04f, 1.96867802e+04f, 1.97025754e+04f +, 1.97183738e+04f, 1.97341754e+04f, 1.97499801e+04f, 1.97657880e+04f +, 1.97815991e+04f, 1.97974133e+04f, 1.98132306e+04f, 1.98290512e+04f +, 1.98448748e+04f, 1.98607017e+04f, 1.98765317e+04f, 1.98923648e+04f +, 1.99082011e+04f, 1.99240405e+04f, 1.99398831e+04f, 1.99557289e+04f +, 1.99715778e+04f, 1.99874298e+04f, 2.00032850e+04f, 2.00191433e+04f +, 2.00350047e+04f, 2.00508693e+04f, 2.00667371e+04f, 2.00826080e+04f +, 2.00984820e+04f, 2.01143591e+04f, 2.01302394e+04f, 2.01461228e+04f +, 2.01620093e+04f, 2.01778990e+04f, 2.01937918e+04f, 2.02096877e+04f +, 2.02255868e+04f, 2.02414890e+04f, 2.02573943e+04f, 2.02733027e+04f +, 2.02892143e+04f, 2.03051289e+04f, 2.03210467e+04f, 2.03369676e+04f +, 2.03528916e+04f, 2.03688188e+04f, 2.03847490e+04f, 2.04006824e+04f +, 2.04166189e+04f, 2.04325585e+04f, 2.04485012e+04f, 2.04644470e+04f +, 2.04803959e+04f, 2.04963479e+04f, 2.05123030e+04f, 2.05282612e+04f +, 2.05442226e+04f, 2.05601870e+04f, 2.05761545e+04f, 2.05921251e+04f +, 2.06080989e+04f, 2.06240757e+04f, 2.06400556e+04f, 2.06560386e+04f +, 2.06720247e+04f, 2.06880139e+04f, 2.07040062e+04f, 2.07200015e+04f +, 2.07360000e+04f, 2.07520015e+04f, 2.07680062e+04f, 2.07840139e+04f +, 2.08000247e+04f, 2.08160386e+04f, 2.08320555e+04f, 2.08480755e+04f +, 2.08640987e+04f, 2.08801249e+04f, 2.08961541e+04f, 2.09121865e+04f +, 2.09282219e+04f, 2.09442604e+04f, 2.09603019e+04f, 2.09763466e+04f +, 2.09923943e+04f, 2.10084450e+04f, 2.10244988e+04f, 2.10405557e+04f +, 2.10566157e+04f, 2.10726787e+04f, 2.10887448e+04f, 2.11048140e+04f +, 2.11208862e+04f, 2.11369614e+04f, 2.11530397e+04f, 2.11691211e+04f +, 2.11852055e+04f, 2.12012930e+04f, 2.12173836e+04f, 2.12334772e+04f +, 2.12495738e+04f, 2.12656735e+04f, 2.12817762e+04f, 2.12978820e+04f +, 2.13139908e+04f, 2.13301027e+04f, 2.13462176e+04f, 2.13623356e+04f +, 2.13784566e+04f, 2.13945806e+04f, 2.14107077e+04f, 2.14268378e+04f +, 2.14429709e+04f, 2.14591071e+04f, 2.14752463e+04f, 2.14913886e+04f +, 2.15075339e+04f, 2.15236822e+04f, 2.15398335e+04f, 2.15559879e+04f +, 2.15721453e+04f, 2.15883057e+04f, 2.16044692e+04f, 2.16206356e+04f +, 2.16368051e+04f, 2.16529776e+04f, 2.16691532e+04f, 2.16853317e+04f +, 2.17015133e+04f, 2.17176979e+04f, 2.17338855e+04f, 2.17500761e+04f +, 2.17662698e+04f, 2.17824664e+04f, 2.17986661e+04f, 2.18148687e+04f +, 2.18310744e+04f, 2.18472831e+04f, 2.18634948e+04f, 2.18797095e+04f +, 2.18959272e+04f, 2.19121479e+04f, 2.19283716e+04f, 2.19445983e+04f +, 2.19608280e+04f, 2.19770607e+04f, 2.19932964e+04f, 2.20095351e+04f +, 2.20257768e+04f, 2.20420215e+04f, 2.20582692e+04f, 2.20745199e+04f +, 2.20907736e+04f, 2.21070302e+04f, 2.21232899e+04f, 2.21395525e+04f +, 2.21558182e+04f, 2.21720868e+04f, 2.21883584e+04f, 2.22046330e+04f +, 2.22209105e+04f, 2.22371911e+04f, 2.22534746e+04f, 2.22697611e+04f +, 2.22860506e+04f, 2.23023430e+04f, 2.23186385e+04f, 2.23349369e+04f +, 2.23512383e+04f, 2.23675426e+04f, 2.23838500e+04f, 2.24001603e+04f +, 2.24164735e+04f, 2.24327898e+04f, 2.24491090e+04f, 2.24654312e+04f +, 2.24817563e+04f, 2.24980844e+04f, 2.25144155e+04f, 2.25307495e+04f +, 2.25470865e+04f, 2.25634264e+04f, 2.25797693e+04f, 2.25961152e+04f +, 2.26124640e+04f, 2.26288158e+04f, 2.26451705e+04f, 2.26615282e+04f +, 2.26778889e+04f, 2.26942524e+04f, 2.27106190e+04f, 2.27269885e+04f +, 2.27433609e+04f, 2.27597363e+04f, 2.27761146e+04f, 2.27924959e+04f +, 2.28088801e+04f, 2.28252673e+04f, 2.28416574e+04f, 2.28580504e+04f +, 2.28744464e+04f, 2.28908453e+04f, 2.29072472e+04f, 2.29236520e+04f +, 2.29400597e+04f, 2.29564704e+04f, 2.29728840e+04f, 2.29893005e+04f +, 2.30057200e+04f, 2.30221424e+04f, 2.30385677e+04f, 2.30549959e+04f +, 2.30714271e+04f, 2.30878612e+04f, 2.31042982e+04f, 2.31207382e+04f +, 2.31371811e+04f, 2.31536269e+04f, 2.31700756e+04f, 2.31865272e+04f +, 2.32029818e+04f, 2.32194393e+04f, 2.32358996e+04f, 2.32523630e+04f +, 2.32688292e+04f, 2.32852983e+04f, 2.33017704e+04f, 2.33182453e+04f +, 2.33347232e+04f, 2.33512040e+04f, 2.33676876e+04f, 2.33841742e+04f +, 2.34006637e+04f, 2.34171562e+04f, 2.34336515e+04f, 2.34501497e+04f +, 2.34666508e+04f, 2.34831548e+04f, 2.34996617e+04f, 2.35161715e+04f +, 2.35326843e+04f, 2.35491999e+04f, 2.35657184e+04f, 2.35822398e+04f +, 2.35987641e+04f, 2.36152913e+04f, 2.36318214e+04f, 2.36483543e+04f +, 2.36648902e+04f, 2.36814290e+04f, 2.36979706e+04f, 2.37145151e+04f +, 2.37310625e+04f, 2.37476128e+04f, 2.37641660e+04f, 2.37807221e+04f +, 2.37972810e+04f, 2.38138429e+04f, 2.38304076e+04f, 2.38469752e+04f +, 2.38635456e+04f, 2.38801190e+04f, 2.38966952e+04f, 2.39132743e+04f +, 2.39298563e+04f, 2.39464411e+04f, 2.39630288e+04f, 2.39796194e+04f +, 2.39962129e+04f, 2.40128092e+04f, 2.40294084e+04f, 2.40460105e+04f +, 2.40626154e+04f, 2.40792232e+04f, 2.40958338e+04f, 2.41124474e+04f +, 2.41290637e+04f, 2.41456830e+04f, 2.41623051e+04f, 2.41789300e+04f +, 2.41955579e+04f, 2.42121885e+04f, 2.42288221e+04f, 2.42454585e+04f +, 2.42620977e+04f, 2.42787398e+04f, 2.42953848e+04f, 2.43120326e+04f +, 2.43286832e+04f, 2.43453367e+04f, 2.43619931e+04f, 2.43786523e+04f +, 2.43953143e+04f, 2.44119792e+04f, 2.44286469e+04f, 2.44453175e+04f +, 2.44619909e+04f, 2.44786672e+04f, 2.44953463e+04f, 2.45120282e+04f +, 2.45287130e+04f, 2.45454006e+04f, 2.45620911e+04f, 2.45787844e+04f +, 2.45954805e+04f, 2.46121795e+04f, 2.46288812e+04f, 2.46455859e+04f +, 2.46622933e+04f, 2.46790036e+04f, 2.46957167e+04f, 2.47124327e+04f +, 2.47291514e+04f, 2.47458730e+04f, 2.47625975e+04f, 2.47793247e+04f +, 2.47960548e+04f, 2.48127877e+04f, 2.48295234e+04f, 2.48462619e+04f +, 2.48630033e+04f, 2.48797474e+04f, 2.48964944e+04f, 2.49132442e+04f +, 2.49299969e+04f, 2.49467523e+04f, 2.49635105e+04f, 2.49802716e+04f +, 2.49970355e+04f, 2.50138022e+04f, 2.50305717e+04f, 2.50473440e+04f +, 2.50641191e+04f, 2.50808970e+04f, 2.50976777e+04f, 2.51144613e+04f +, 2.51312476e+04f, 2.51480368e+04f, 2.51648287e+04f, 2.51816235e+04f +, 2.51984210e+04f, 2.52152213e+04f, 2.52320245e+04f, 2.52488304e+04f +, 2.52656392e+04f, 2.52824507e+04f, 2.52992650e+04f, 2.53160822e+04f +, 2.53329021e+04f, 2.53497248e+04f, 2.53665503e+04f, 2.53833786e+04f +, 2.54002097e+04f, 2.54170436e+04f, 2.54338802e+04f, 2.54507197e+04f +, 2.54675619e+04f, 2.54844069e+04f, 2.55012547e+04f, 2.55181053e+04f +, 2.55349587e+04f, 2.55518148e+04f, 2.55686737e+04f, 2.55855355e+04f +, 2.56023999e+04f, 2.56192672e+04f, 2.56361373e+04f, 2.56530101e+04f +, 2.56698857e+04f, 2.56867640e+04f, 2.57036452e+04f, 2.57205291e+04f +, 2.57374158e+04f, 2.57543052e+04f, 2.57711974e+04f, 2.57880924e+04f +, 2.58049902e+04f, 2.58218907e+04f, 2.58387940e+04f, 2.58557001e+04f +, 2.58726089e+04f, 2.58895205e+04f, 2.59064348e+04f, 2.59233519e+04f +, 2.59402718e+04f, 2.59571944e+04f, 2.59741198e+04f, 2.59910479e+04f +, 2.60079788e+04f, 2.60249125e+04f, 2.60418489e+04f, 2.60587881e+04f +, 2.60757300e+04f, 2.60926747e+04f, 2.61096221e+04f, 2.61265722e+04f +, 2.61435252e+04f, 2.61604808e+04f, 2.61774393e+04f, 2.61944004e+04f +, 2.62113643e+04f, 2.62283310e+04f, 2.62453004e+04f, 2.62622725e+04f +, 2.62792474e+04f, 2.62962251e+04f, 2.63132054e+04f, 2.63301885e+04f +, 2.63471744e+04f, 2.63641630e+04f, 2.63811543e+04f, 2.63981484e+04f +, 2.64151451e+04f, 2.64321447e+04f, 2.64491469e+04f, 2.64661519e+04f +, 2.64831597e+04f, 2.65001701e+04f, 2.65171833e+04f, 2.65341992e+04f +, 2.65512179e+04f, 2.65682393e+04f, 2.65852634e+04f, 2.66022902e+04f +, 2.66193197e+04f, 2.66363520e+04f, 2.66533870e+04f, 2.66704247e+04f +, 2.66874652e+04f, 2.67045083e+04f, 2.67215542e+04f, 2.67386028e+04f +, 2.67556542e+04f, 2.67727082e+04f, 2.67897649e+04f, 2.68068244e+04f +, 2.68238866e+04f, 2.68409515e+04f, 2.68580191e+04f, 2.68750894e+04f +, 2.68921625e+04f, 2.69092382e+04f, 2.69263167e+04f, 2.69433978e+04f +, 2.69604817e+04f, 2.69775683e+04f, 2.69946576e+04f, 2.70117495e+04f +, 2.70288442e+04f, 2.70459416e+04f, 2.70630417e+04f, 2.70801445e+04f +, 2.70972500e+04f, 2.71143582e+04f, 2.71314691e+04f, 2.71485827e+04f +, 2.71656990e+04f, 2.71828180e+04f, 2.71999397e+04f, 2.72170641e+04f +, 2.72341911e+04f, 2.72513209e+04f, 2.72684534e+04f, 2.72855885e+04f +, 2.73027264e+04f, 2.73198669e+04f, 2.73370101e+04f, 2.73541560e+04f +, 2.73713046e+04f, 2.73884559e+04f, 2.74056099e+04f, 2.74227665e+04f +, 2.74399259e+04f, 2.74570879e+04f, 2.74742526e+04f, 2.74914200e+04f +, 2.75085900e+04f, 2.75257628e+04f, 2.75429382e+04f, 2.75601163e+04f +, 2.75772971e+04f, 2.75944805e+04f, 2.76116667e+04f, 2.76288555e+04f +, 2.76460470e+04f, 2.76632411e+04f, 2.76804379e+04f, 2.76976374e+04f +, 2.77148396e+04f, 2.77320444e+04f, 2.77492519e+04f, 2.77664621e+04f +, 2.77836749e+04f, 2.78008905e+04f, 2.78181086e+04f, 2.78353295e+04f +, 2.78525530e+04f, 2.78697791e+04f, 2.78870079e+04f, 2.79042394e+04f +, 2.79214736e+04f, 2.79387104e+04f, 2.79559499e+04f, 2.79731920e+04f +, 2.79904368e+04f, 2.80076842e+04f, 2.80249343e+04f, 2.80421870e+04f +, 2.80594424e+04f, 2.80767005e+04f, 2.80939612e+04f, 2.81112246e+04f +, 2.81284906e+04f, 2.81457592e+04f, 2.81630306e+04f, 2.81803045e+04f +, 2.81975811e+04f, 2.82148604e+04f, 2.82321423e+04f, 2.82494268e+04f +, 2.82667140e+04f, 2.82840038e+04f, 2.83012963e+04f, 2.83185914e+04f +, 2.83358892e+04f, 2.83531896e+04f, 2.83704926e+04f, 2.83877983e+04f +, 2.84051066e+04f, 2.84224176e+04f, 2.84397311e+04f, 2.84570474e+04f +, 2.84743662e+04f, 2.84916877e+04f, 2.85090118e+04f, 2.85263386e+04f +, 2.85436680e+04f, 2.85610000e+04f, 2.85783346e+04f, 2.85956719e+04f +, 2.86130118e+04f, 2.86303544e+04f, 2.86476995e+04f, 2.86650473e+04f +, 2.86823977e+04f, 2.86997508e+04f, 2.87171064e+04f, 2.87344647e+04f +, 2.87518256e+04f, 2.87691891e+04f, 2.87865553e+04f, 2.88039240e+04f +, 2.88212954e+04f, 2.88386694e+04f, 2.88560460e+04f, 2.88734253e+04f +, 2.88908071e+04f, 2.89081916e+04f, 2.89255787e+04f, 2.89429683e+04f +, 2.89603607e+04f, 2.89777556e+04f, 2.89951531e+04f, 2.90125532e+04f +, 2.90299560e+04f, 2.90473613e+04f, 2.90647693e+04f, 2.90821799e+04f +, 2.90995930e+04f, 2.91170088e+04f, 2.91344272e+04f, 2.91518482e+04f +, 2.91692718e+04f, 2.91866980e+04f, 2.92041268e+04f, 2.92215582e+04f +, 2.92389922e+04f, 2.92564288e+04f, 2.92738680e+04f, 2.92913098e+04f +, 2.93087541e+04f, 2.93262011e+04f, 2.93436507e+04f, 2.93611029e+04f +, 2.93785576e+04f, 2.93960150e+04f, 2.94134750e+04f, 2.94309375e+04f +, 2.94484026e+04f, 2.94658704e+04f, 2.94833407e+04f, 2.95008136e+04f +, 2.95182891e+04f, 2.95357672e+04f, 2.95532478e+04f, 2.95707311e+04f +, 2.95882169e+04f, 2.96057053e+04f, 2.96231963e+04f, 2.96406899e+04f +, 2.96581861e+04f, 2.96756848e+04f, 2.96931861e+04f, 2.97106900e+04f +, 2.97281965e+04f, 2.97457056e+04f, 2.97632172e+04f, 2.97807314e+04f +, 2.97982482e+04f, 2.98157676e+04f, 2.98332895e+04f, 2.98508140e+04f +, 2.98683411e+04f, 2.98858708e+04f, 2.99034030e+04f, 2.99209378e+04f +, 2.99384752e+04f, 2.99560151e+04f, 2.99735576e+04f, 2.99911027e+04f +, 3.00086503e+04f, 3.00262005e+04f, 3.00437533e+04f, 3.00613086e+04f +, 3.00788665e+04f, 3.00964270e+04f, 3.01139900e+04f, 3.01315555e+04f +, 3.01491237e+04f, 3.01666944e+04f, 3.01842676e+04f, 3.02018435e+04f +, 3.02194218e+04f, 3.02370028e+04f, 3.02545863e+04f, 3.02721723e+04f +, 3.02897609e+04f, 3.03073520e+04f, 3.03249457e+04f, 3.03425420e+04f +, 3.03601408e+04f, 3.03777422e+04f, 3.03953461e+04f, 3.04129525e+04f +, 3.04305615e+04f, 3.04481731e+04f, 3.04657872e+04f, 3.04834038e+04f +, 3.05010230e+04f, 3.05186448e+04f, 3.05362690e+04f, 3.05538959e+04f +, 3.05715252e+04f, 3.05891571e+04f, 3.06067916e+04f, 3.06244286e+04f +, 3.06420681e+04f, 3.06597102e+04f, 3.06773548e+04f, 3.06950019e+04f +, 3.07126516e+04f, 3.07303038e+04f, 3.07479586e+04f, 3.07656159e+04f +, 3.07832757e+04f, 3.08009380e+04f, 3.08186029e+04f, 3.08362703e+04f +, 3.08539403e+04f, 3.08716128e+04f, 3.08892878e+04f, 3.09069653e+04f +, 3.09246454e+04f, 3.09423280e+04f, 3.09600131e+04f, 3.09777007e+04f +, 3.09953909e+04f, 3.10130836e+04f, 3.10307788e+04f, 3.10484766e+04f +, 3.10661768e+04f, 3.10838796e+04f, 3.11015849e+04f, 3.11192927e+04f +, 3.11370031e+04f, 3.11547160e+04f, 3.11724313e+04f, 3.11901492e+04f +, 3.12078697e+04f, 3.12255926e+04f, 3.12433180e+04f, 3.12610460e+04f +, 3.12787765e+04f, 3.12965095e+04f, 3.13142450e+04f, 3.13319830e+04f +, 3.13497235e+04f, 3.13674665e+04f, 3.13852121e+04f, 3.14029601e+04f +, 3.14207107e+04f, 3.14384638e+04f, 3.14562193e+04f, 3.14739774e+04f +, 3.14917380e+04f, 3.15095011e+04f, 3.15272667e+04f, 3.15450348e+04f +, 3.15628054e+04f, 3.15805785e+04f, 3.15983541e+04f, 3.16161322e+04f +, 3.16339128e+04f, 3.16516959e+04f, 3.16694815e+04f, 3.16872696e+04f +, 3.17050602e+04f, 3.17228533e+04f, 3.17406488e+04f, 3.17584469e+04f +, 3.17762475e+04f, 3.17940506e+04f, 3.18118561e+04f, 3.18296642e+04f +, 3.18474747e+04f, 3.18652877e+04f, 3.18831033e+04f, 3.19009213e+04f +, 3.19187418e+04f, 3.19365648e+04f, 3.19543902e+04f, 3.19722182e+04f +, 3.19900486e+04f, 3.20078816e+04f, 3.20257170e+04f, 3.20435549e+04f +, 3.20613953e+04f, 3.20792381e+04f, 3.20970835e+04f, 3.21149313e+04f +, 3.21327816e+04f, 3.21506344e+04f, 3.21684897e+04f, 3.21863474e+04f +, 3.22042076e+04f, 3.22220703e+04f, 3.22399355e+04f, 3.22578031e+04f +, 3.22756732e+04f, 3.22935458e+04f, 3.23114209e+04f, 3.23292985e+04f +, 3.23471785e+04f, 3.23650609e+04f, 3.23829459e+04f, 3.24008333e+04f +, 3.24187232e+04f, 3.24366156e+04f, 3.24545104e+04f, 3.24724077e+04f +, 3.24903075e+04f, 3.25082097e+04f, 3.25261144e+04f, 3.25440216e+04f +, 3.25619312e+04f, 3.25798433e+04f, 3.25977578e+04f, 3.26156748e+04f +, 3.26335943e+04f, 3.26515162e+04f, 3.26694406e+04f, 3.26873675e+04f +, 3.27052968e+04f, 3.27232285e+04f, 3.27411627e+04f, 3.27590994e+04f +, 3.27770386e+04f, 3.27949801e+04f, 3.28129242e+04f, 3.28308707e+04f +, 3.28488196e+04f, 3.28667710e+04f, 3.28847249e+04f, 3.29026812e+04f +, 3.29206399e+04f, 3.29386011e+04f, 3.29565648e+04f, 3.29745309e+04f +, 3.29924994e+04f, 3.30104704e+04f, 3.30284439e+04f, 3.30464198e+04f +, 3.30643981e+04f, 3.30823789e+04f, 3.31003621e+04f, 3.31183477e+04f +, 3.31363358e+04f, 3.31543264e+04f, 3.31723194e+04f, 3.31903148e+04f +, 3.32083127e+04f, 3.32263130e+04f, 3.32443157e+04f, 3.32623209e+04f +, 3.32803285e+04f, 3.32983386e+04f, 3.33163511e+04f, 3.33343660e+04f +, 3.33523833e+04f, 3.33704031e+04f, 3.33884254e+04f, 3.34064500e+04f +, 3.34244771e+04f, 3.34425066e+04f, 3.34605386e+04f, 3.34785730e+04f +, 3.34966098e+04f, 3.35146490e+04f, 3.35326907e+04f, 3.35507348e+04f +, 3.35687813e+04f, 3.35868302e+04f, 3.36048816e+04f, 3.36229354e+04f +, 3.36409916e+04f, 3.36590503e+04f, 3.36771113e+04f, 3.36951748e+04f +, 3.37132407e+04f, 3.37313090e+04f, 3.37493798e+04f, 3.37674529e+04f +, 3.37855285e+04f, 3.38036065e+04f, 3.38216870e+04f, 3.38397698e+04f +, 3.38578550e+04f, 3.38759427e+04f, 3.38940328e+04f, 3.39121253e+04f +, 3.39302202e+04f, 3.39483175e+04f, 3.39664173e+04f, 3.39845194e+04f +, 3.40026240e+04f, 3.40207309e+04f, 3.40388403e+04f, 3.40569521e+04f +, 3.40750663e+04f, 3.40931829e+04f, 3.41113019e+04f, 3.41294233e+04f +, 3.41475472e+04f, 3.41656734e+04f, 3.41838020e+04f, 3.42019330e+04f +, 3.42200665e+04f, 3.42382023e+04f, 3.42563406e+04f, 3.42744812e+04f +, 3.42926243e+04f, 3.43107697e+04f, 3.43289176e+04f, 3.43470678e+04f +, 3.43652204e+04f, 3.43833755e+04f, 3.44015329e+04f, 3.44196927e+04f +, 3.44378550e+04f, 3.44560196e+04f, 3.44741866e+04f, 3.44923560e+04f +, 3.45105278e+04f, 3.45287020e+04f, 3.45468786e+04f, 3.45650576e+04f +, 3.45832390e+04f, 3.46014227e+04f, 3.46196089e+04f, 3.46377974e+04f +, 3.46559883e+04f, 3.46741817e+04f, 3.46923774e+04f, 3.47105754e+04f +, 3.47287759e+04f, 3.47469788e+04f, 3.47651840e+04f, 3.47833916e+04f +, 3.48016016e+04f, 3.48198140e+04f, 3.48380288e+04f, 3.48562460e+04f +, 3.48744655e+04f, 3.48926874e+04f, 3.49109117e+04f, 3.49291384e+04f +, 3.49473674e+04f, 3.49655988e+04f, 3.49838327e+04f, 3.50020688e+04f +, 3.50203074e+04f, 3.50385483e+04f, 3.50567916e+04f, 3.50750373e+04f +, 3.50932854e+04f, 3.51115358e+04f, 3.51297886e+04f, 3.51480437e+04f +, 3.51663013e+04f, 3.51845612e+04f, 3.52028235e+04f, 3.52210881e+04f +, 3.52393551e+04f, 3.52576245e+04f, 3.52758963e+04f, 3.52941704e+04f +, 3.53124469e+04f, 3.53307257e+04f, 3.53490069e+04f, 3.53672905e+04f +, 3.53855764e+04f, 3.54038647e+04f, 3.54221554e+04f, 3.54404484e+04f +, 3.54587438e+04f, 3.54770415e+04f, 3.54953417e+04f, 3.55136441e+04f +, 3.55319489e+04f, 3.55502561e+04f, 3.55685657e+04f, 3.55868776e+04f +, 3.56051918e+04f, 3.56235084e+04f, 3.56418274e+04f, 3.56601487e+04f +, 3.56784723e+04f, 3.56967984e+04f, 3.57151267e+04f, 3.57334575e+04f +, 3.57517905e+04f, 3.57701260e+04f, 3.57884637e+04f, 3.58068039e+04f +, 3.58251463e+04f, 3.58434912e+04f, 3.58618383e+04f, 3.58801879e+04f +, 3.58985397e+04f, 3.59168939e+04f, 3.59352505e+04f, 3.59536094e+04f +, 3.59719706e+04f, 3.59903342e+04f, 3.60087001e+04f, 3.60270684e+04f +, 3.60454390e+04f, 3.60638120e+04f, 3.60821873e+04f, 3.61005649e+04f +, 3.61189449e+04f, 3.61373272e+04f, 3.61557118e+04f, 3.61740988e+04f +, 3.61924882e+04f, 3.62108798e+04f, 3.62292738e+04f, 3.62476701e+04f +, 3.62660688e+04f, 3.62844698e+04f, 3.63028731e+04f, 3.63212788e+04f +, 3.63396868e+04f, 3.63580971e+04f, 3.63765098e+04f, 3.63949248e+04f +, 3.64133421e+04f, 3.64317617e+04f, 3.64501837e+04f, 3.64686080e+04f +, 3.64870347e+04f, 3.65054636e+04f, 3.65238949e+04f, 3.65423285e+04f +, 3.65607644e+04f, 3.65792027e+04f, 3.65976433e+04f, 3.66160862e+04f +, 3.66345314e+04f, 3.66529790e+04f, 3.66714288e+04f, 3.66898810e+04f +, 3.67083356e+04f, 3.67267924e+04f, 3.67452515e+04f, 3.67637130e+04f +, 3.67821768e+04f, 3.68006429e+04f, 3.68191113e+04f, 3.68375821e+04f +, 3.68560551e+04f, 3.68745305e+04f, 3.68930082e+04f, 3.69114882e+04f +, 3.69299705e+04f, 3.69484551e+04f, 3.69669421e+04f, 3.69854313e+04f +, 3.70039229e+04f, 3.70224167e+04f, 3.70409129e+04f, 3.70594114e+04f +, 3.70779122e+04f, 3.70964153e+04f, 3.71149207e+04f, 3.71334284e+04f +, 3.71519385e+04f, 3.71704508e+04f, 3.71889654e+04f, 3.72074824e+04f +, 3.72260016e+04f, 3.72445232e+04f, 3.72630470e+04f, 3.72815732e+04f +, 3.73001016e+04f, 3.73186324e+04f, 3.73371655e+04f, 3.73557008e+04f +, 3.73742385e+04f, 3.73927784e+04f, 3.74113207e+04f, 3.74298653e+04f +, 3.74484121e+04f, 3.74669613e+04f, 3.74855127e+04f, 3.75040664e+04f +, 3.75226225e+04f, 3.75411808e+04f, 3.75597414e+04f, 3.75783043e+04f +, 3.75968696e+04f, 3.76154371e+04f, 3.76340068e+04f, 3.76525789e+04f +, 3.76711533e+04f, 3.76897300e+04f, 3.77083089e+04f, 3.77268902e+04f +, 3.77454737e+04f, 3.77640595e+04f, 3.77826476e+04f, 3.78012380e+04f +, 3.78198307e+04f, 3.78384257e+04f, 3.78570229e+04f, 3.78756224e+04f +, 3.78942242e+04f, 3.79128283e+04f, 3.79314347e+04f, 3.79500434e+04f +, 3.79686543e+04f, 3.79872676e+04f, 3.80058831e+04f, 3.80245009e+04f +, 3.80431209e+04f, 3.80617433e+04f, 3.80803679e+04f, 3.80989948e+04f +, 3.81176240e+04f, 3.81362554e+04f, 3.81548891e+04f, 3.81735251e+04f +, 3.81921634e+04f, 3.82108040e+04f, 3.82294468e+04f, 3.82480919e+04f +, 3.82667393e+04f, 3.82853889e+04f, 3.83040408e+04f, 3.83226950e+04f +, 3.83413515e+04f, 3.83600102e+04f, 3.83786712e+04f, 3.83973345e+04f +, 3.84160000e+04f, 3.84346678e+04f, 3.84533379e+04f, 3.84720102e+04f +, 3.84906848e+04f, 3.85093617e+04f, 3.85280408e+04f, 3.85467222e+04f +, 3.85654058e+04f, 3.85840918e+04f, 3.86027800e+04f, 3.86214704e+04f +, 3.86401631e+04f, 3.86588581e+04f, 3.86775553e+04f, 3.86962548e+04f +, 3.87149565e+04f, 3.87336605e+04f, 3.87523668e+04f, 3.87710753e+04f +, 3.87897861e+04f, 3.88084992e+04f, 3.88272144e+04f, 3.88459320e+04f +, 3.88646518e+04f, 3.88833739e+04f, 3.89020982e+04f, 3.89208247e+04f +, 3.89395535e+04f, 3.89582846e+04f, 3.89770179e+04f, 3.89957535e+04f +, 3.90144913e+04f, 3.90332314e+04f, 3.90519737e+04f, 3.90707183e+04f +, 3.90894651e+04f, 3.91082142e+04f, 3.91269655e+04f, 3.91457191e+04f +, 3.91644749e+04f, 3.91832329e+04f, 3.92019932e+04f, 3.92207558e+04f +, 3.92395206e+04f, 3.92582876e+04f, 3.92770569e+04f, 3.92958284e+04f +, 3.93146022e+04f, 3.93333782e+04f, 3.93521564e+04f, 3.93709369e+04f +, 3.93897196e+04f, 3.94085046e+04f, 3.94272918e+04f, 3.94460812e+04f +, 3.94648729e+04f, 3.94836668e+04f, 3.95024630e+04f, 3.95212614e+04f +, 3.95400620e+04f, 3.95588648e+04f, 3.95776699e+04f, 3.95964773e+04f +, 3.96152868e+04f, 3.96340986e+04f, 3.96529126e+04f, 3.96717289e+04f +, 3.96905474e+04f, 3.97093681e+04f, 3.97281911e+04f, 3.97470162e+04f +, 3.97658436e+04f, 3.97846733e+04f, 3.98035052e+04f, 3.98223392e+04f +, 3.98411756e+04f, 3.98600141e+04f, 3.98788549e+04f, 3.98976979e+04f +, 3.99165431e+04f, 3.99353906e+04f, 3.99542402e+04f, 3.99730921e+04f +, 3.99919463e+04f, 4.00108026e+04f, 4.00296612e+04f, 4.00485220e+04f +, 4.00673850e+04f, 4.00862502e+04f, 4.01051176e+04f, 4.01239873e+04f +, 4.01428592e+04f, 4.01617333e+04f, 4.01806096e+04f, 4.01994882e+04f +, 4.02183689e+04f, 4.02372519e+04f, 4.02561371e+04f, 4.02750245e+04f +, 4.02939141e+04f, 4.03128059e+04f, 4.03317000e+04f, 4.03505962e+04f +, 4.03694947e+04f, 4.03883954e+04f, 4.04072983e+04f, 4.04262034e+04f +, 4.04451107e+04f, 4.04640202e+04f, 4.04829319e+04f, 4.05018459e+04f +, 4.05207620e+04f, 4.05396804e+04f, 4.05586010e+04f, 4.05775237e+04f +, 4.05964487e+04f, 4.06153759e+04f, 4.06343053e+04f, 4.06532369e+04f +, 4.06721707e+04f, 4.06911067e+04f, 4.07100449e+04f, 4.07289853e+04f +, 4.07479279e+04f, 4.07668727e+04f, 4.07858198e+04f, 4.08047690e+04f +, 4.08237204e+04f, 4.08426740e+04f, 4.08616298e+04f, 4.08805878e+04f +, 4.08995480e+04f, 4.09185105e+04f, 4.09374751e+04f, 4.09564419e+04f +, 4.09754109e+04f, 4.09943821e+04f, 4.10133555e+04f, 4.10323310e+04f +, 4.10513088e+04f, 4.10702888e+04f, 4.10892710e+04f, 4.11082553e+04f +, 4.11272419e+04f, 4.11462306e+04f, 4.11652215e+04f, 4.11842147e+04f +, 4.12032100e+04f, 4.12222075e+04f, 4.12412072e+04f, 4.12602091e+04f +, 4.12792131e+04f, 4.12982194e+04f, 4.13172278e+04f, 4.13362385e+04f +, 4.13552513e+04f, 4.13742663e+04f, 4.13932835e+04f, 4.14123028e+04f +, 4.14313244e+04f, 4.14503481e+04f, 4.14693740e+04f, 4.14884021e+04f +, 4.15074324e+04f, 4.15264649e+04f, 4.15454995e+04f, 4.15645364e+04f +, 4.15835754e+04f, 4.16026166e+04f, 4.16216599e+04f, 4.16407055e+04f +, 4.16597532e+04f, 4.16788031e+04f, 4.16978552e+04f, 4.17169094e+04f +, 4.17359659e+04f, 4.17550245e+04f, 4.17740853e+04f, 4.17931482e+04f +, 4.18122133e+04f, 4.18312807e+04f, 4.18503501e+04f, 4.18694218e+04f +, 4.18884956e+04f, 4.19075716e+04f, 4.19266498e+04f, 4.19457301e+04f +, 4.19648126e+04f, 4.19838973e+04f, 4.20029841e+04f, 4.20220731e+04f +, 4.20411643e+04f, 4.20602576e+04f, 4.20793532e+04f, 4.20984508e+04f +, 4.21175507e+04f, 4.21366527e+04f, 4.21557569e+04f, 4.21748632e+04f +, 4.21939717e+04f, 4.22130824e+04f, 4.22321952e+04f, 4.22513102e+04f +, 4.22704274e+04f, 4.22895467e+04f, 4.23086682e+04f, 4.23277918e+04f +, 4.23469176e+04f, 4.23660456e+04f, 4.23851757e+04f, 4.24043080e+04f +, 4.24234424e+04f, 4.24425790e+04f, 4.24617178e+04f, 4.24808587e+04f +, 4.25000018e+04f, 4.25191470e+04f, 4.25382944e+04f, 4.25574439e+04f +, 4.25765956e+04f, 4.25957494e+04f, 4.26149054e+04f, 4.26340636e+04f +, 4.26532239e+04f, 4.26723863e+04f, 4.26915509e+04f, 4.27107177e+04f +, 4.27298866e+04f, 4.27490576e+04f, 4.27682308e+04f, 4.27874062e+04f +, 4.28065837e+04f, 4.28257634e+04f, 4.28449452e+04f, 4.28641291e+04f +, 4.28833152e+04f, 4.29025034e+04f, 4.29216938e+04f, 4.29408863e+04f +, 4.29600810e+04f, 4.29792778e+04f, 4.29984768e+04f, 4.30176779e+04f +, 4.30368812e+04f, 4.30560865e+04f, 4.30752941e+04f, 4.30945038e+04f +, 4.31137156e+04f, 4.31329295e+04f, 4.31521456e+04f, 4.31713639e+04f +, 4.31905842e+04f, 4.32098067e+04f, 4.32290314e+04f, 4.32482582e+04f +, 4.32674871e+04f, 4.32867182e+04f, 4.33059514e+04f, 4.33251867e+04f +, 4.33444242e+04f, 4.33636638e+04f, 4.33829055e+04f, 4.34021494e+04f +, 4.34213954e+04f, 4.34406435e+04f, 4.34598938e+04f, 4.34791462e+04f +, 4.34984007e+04f, 4.35176574e+04f, 4.35369162e+04f, 4.35561771e+04f +, 4.35754402e+04f, 4.35947054e+04f, 4.36139727e+04f, 4.36332421e+04f +, 4.36525137e+04f, 4.36717874e+04f, 4.36910632e+04f, 4.37103412e+04f +, 4.37296212e+04f, 4.37489034e+04f, 4.37681878e+04f, 4.37874742e+04f +, 4.38067628e+04f, 4.38260535e+04f, 4.38453463e+04f, 4.38646413e+04f +, 4.38839383e+04f, 4.39032375e+04f, 4.39225388e+04f, 4.39418422e+04f +, 4.39611478e+04f, 4.39804555e+04f, 4.39997652e+04f, 4.40190772e+04f +, 4.40383912e+04f, 4.40577073e+04f, 4.40770256e+04f, 4.40963460e+04f +, 4.41156684e+04f, 4.41349931e+04f, 4.41543198e+04f, 4.41736486e+04f +, 4.41929796e+04f, 4.42123126e+04f, 4.42316478e+04f, 4.42509851e+04f +, 4.42703245e+04f, 4.42896661e+04f, 4.43090097e+04f, 4.43283554e+04f +, 4.43477033e+04f, 4.43670533e+04f, 4.43864053e+04f, 4.44057595e+04f +, 4.44251158e+04f, 4.44444742e+04f, 4.44638347e+04f, 4.44831973e+04f +, 4.45025621e+04f, 4.45219289e+04f, 4.45412978e+04f, 4.45606689e+04f +, 4.45800420e+04f, 4.45994173e+04f, 4.46187947e+04f, 4.46381741e+04f +, 4.46575557e+04f, 4.46769394e+04f, 4.46963251e+04f, 4.47157130e+04f +, 4.47351030e+04f, 4.47544951e+04f, 4.47738892e+04f, 4.47932855e+04f +, 4.48126839e+04f, 4.48320844e+04f, 4.48514870e+04f, 4.48708916e+04f +, 4.48902984e+04f, 4.49097073e+04f, 4.49291183e+04f, 4.49485313e+04f +, 4.49679465e+04f, 4.49873638e+04f, 4.50067831e+04f, 4.50262046e+04f +, 4.50456281e+04f, 4.50650537e+04f, 4.50844815e+04f, 4.51039113e+04f +, 4.51233432e+04f, 4.51427772e+04f, 4.51622133e+04f, 4.51816515e+04f +, 4.52010918e+04f, 4.52205342e+04f, 4.52399787e+04f, 4.52594252e+04f +, 4.52788738e+04f, 4.52983246e+04f, 4.53177774e+04f, 4.53372323e+04f +, 4.53566893e+04f, 4.53761484e+04f, 4.53956096e+04f, 4.54150728e+04f +, 4.54345382e+04f, 4.54540056e+04f, 4.54734751e+04f, 4.54929467e+04f +, 4.55124204e+04f, 4.55318961e+04f, 4.55513740e+04f, 4.55708539e+04f +, 4.55903359e+04f, 4.56098200e+04f, 4.56293062e+04f, 4.56487944e+04f +, 4.56682847e+04f, 4.56877772e+04f, 4.57072717e+04f, 4.57267682e+04f +, 4.57462669e+04f, 4.57657676e+04f, 4.57852704e+04f, 4.58047753e+04f +, 4.58242822e+04f, 4.58437913e+04f, 4.58633024e+04f, 4.58828156e+04f +, 4.59023308e+04f, 4.59218482e+04f, 4.59413676e+04f, 4.59608891e+04f +, 4.59804126e+04f, 4.59999382e+04f, 4.60194659e+04f, 4.60389957e+04f +, 4.60585275e+04f, 4.60780615e+04f, 4.60975974e+04f, 4.61171355e+04f +, 4.61366756e+04f, 4.61562178e+04f, 4.61757621e+04f, 4.61953084e+04f +, 4.62148568e+04f, 4.62344073e+04f, 4.62539598e+04f, 4.62735144e+04f +, 4.62930711e+04f, 4.63126298e+04f, 4.63321906e+04f, 4.63517535e+04f +, 4.63713184e+04f, 4.63908854e+04f, 4.64104544e+04f, 4.64300255e+04f +, 4.64495987e+04f, 4.64691740e+04f, 4.64887513e+04f, 4.65083306e+04f +, 4.65279120e+04f, 4.65474955e+04f, 4.65670811e+04f, 4.65866687e+04f +, 4.66062583e+04f, 4.66258501e+04f, 4.66454438e+04f, 4.66650397e+04f +, 4.66846376e+04f, 4.67042375e+04f, 4.67238395e+04f, 4.67434436e+04f +, 4.67630497e+04f, 4.67826579e+04f, 4.68022681e+04f, 4.68218804e+04f +, 4.68414948e+04f, 4.68611112e+04f, 4.68807296e+04f, 4.69003501e+04f +, 4.69199727e+04f, 4.69395973e+04f, 4.69592239e+04f, 4.69788526e+04f +, 4.69984834e+04f, 4.70181162e+04f, 4.70377510e+04f, 4.70573879e+04f +, 4.70770269e+04f, 4.70966679e+04f, 4.71163109e+04f, 4.71359560e+04f +, 4.71556032e+04f, 4.71752524e+04f, 4.71949036e+04f, 4.72145569e+04f +, 4.72342122e+04f, 4.72538696e+04f, 4.72735290e+04f, 4.72931905e+04f +, 4.73128540e+04f, 4.73325195e+04f, 4.73521871e+04f, 4.73718568e+04f +, 4.73915284e+04f, 4.74112022e+04f, 4.74308779e+04f, 4.74505557e+04f +, 4.74702356e+04f, 4.74899174e+04f, 4.75096014e+04f, 4.75292873e+04f +, 4.75489753e+04f, 4.75686653e+04f, 4.75883574e+04f, 4.76080515e+04f +, 4.76277477e+04f, 4.76474459e+04f, 4.76671461e+04f, 4.76868483e+04f +, 4.77065526e+04f, 4.77262590e+04f, 4.77459673e+04f, 4.77656777e+04f +, 4.77853901e+04f, 4.78051046e+04f, 4.78248211e+04f, 4.78445396e+04f +, 4.78642602e+04f, 4.78839828e+04f, 4.79037074e+04f, 4.79234340e+04f +, 4.79431627e+04f, 4.79628934e+04f, 4.79826262e+04f, 4.80023609e+04f +, 4.80220977e+04f, 4.80418366e+04f, 4.80615774e+04f, 4.80813203e+04f +, 4.81010652e+04f, 4.81208122e+04f, 4.81405611e+04f, 4.81603121e+04f +, 4.81800651e+04f, 4.81998201e+04f, 4.82195772e+04f, 4.82393363e+04f +, 4.82590974e+04f, 4.82788605e+04f, 4.82986257e+04f, 4.83183929e+04f +, 4.83381621e+04f, 4.83579333e+04f, 4.83777065e+04f, 4.83974818e+04f +, 4.84172591e+04f, 4.84370384e+04f, 4.84568197e+04f, 4.84766030e+04f +, 4.84963884e+04f, 4.85161758e+04f, 4.85359652e+04f, 4.85557566e+04f +, 4.85755500e+04f, 4.85953454e+04f, 4.86151429e+04f, 4.86349424e+04f +, 4.86547439e+04f, 4.86745474e+04f, 4.86943529e+04f, 4.87141604e+04f +, 4.87339700e+04f, 4.87537816e+04f, 4.87735951e+04f, 4.87934107e+04f +, 4.88132283e+04f, 4.88330479e+04f, 4.88528696e+04f, 4.88726932e+04f +, 4.88925188e+04f, 4.89123465e+04f, 4.89321762e+04f, 4.89520078e+04f +, 4.89718415e+04f, 4.89916772e+04f, 4.90115149e+04f, 4.90313546e+04f +, 4.90511963e+04f, 4.90710401e+04f, 4.90908858e+04f, 4.91107335e+04f +, 4.91305832e+04f, 4.91504350e+04f, 4.91702887e+04f, 4.91901445e+04f +, 4.92100022e+04f, 4.92298620e+04f, 4.92497238e+04f, 4.92695875e+04f +, 4.92894533e+04f, 4.93093211e+04f, 4.93291908e+04f, 4.93490626e+04f +, 4.93689364e+04f, 4.93888122e+04f, 4.94086899e+04f, 4.94285697e+04f +, 4.94484515e+04f, 4.94683352e+04f, 4.94882210e+04f, 4.95081088e+04f +, 4.95279985e+04f, 4.95478903e+04f, 4.95677841e+04f, 4.95876798e+04f +, 4.96075776e+04f, 4.96274773e+04f, 4.96473791e+04f, 4.96672828e+04f +, 4.96871885e+04f, 4.97070962e+04f, 4.97270060e+04f, 4.97469177e+04f +, 4.97668314e+04f, 4.97867471e+04f, 4.98066648e+04f, 4.98265844e+04f +, 4.98465061e+04f, 4.98664298e+04f, 4.98863554e+04f, 4.99062830e+04f +, 4.99262127e+04f, 4.99461443e+04f, 4.99660779e+04f, 4.99860135e+04f +, 5.00059511e+04f, 5.00258907e+04f, 5.00458322e+04f, 5.00657758e+04f +, 5.00857213e+04f, 5.01056688e+04f, 5.01256183e+04f, 5.01455698e+04f +, 5.01655233e+04f, 5.01854787e+04f, 5.02054362e+04f, 5.02253956e+04f +, 5.02453570e+04f, 5.02653204e+04f, 5.02852858e+04f, 5.03052531e+04f +, 5.03252224e+04f, 5.03451938e+04f, 5.03651671e+04f, 5.03851423e+04f +, 5.04051196e+04f, 5.04250988e+04f, 5.04450800e+04f, 5.04650632e+04f +, 5.04850484e+04f, 5.05050356e+04f, 5.05250247e+04f, 5.05450158e+04f +, 5.05650089e+04f, 5.05850040e+04f, 5.06050010e+04f, 5.06250000e+04f +, 5.06450010e+04f, 5.06650040e+04f, 5.06850089e+04f, 5.07050158e+04f +, 5.07250247e+04f, 5.07450355e+04f, 5.07650484e+04f, 5.07850632e+04f +, 5.08050800e+04f, 5.08250987e+04f, 5.08451194e+04f, 5.08651421e+04f +, 5.08851668e+04f, 5.09051934e+04f, 5.09252220e+04f, 5.09452526e+04f +, 5.09652851e+04f, 5.09853196e+04f, 5.10053561e+04f, 5.10253945e+04f +, 5.10454350e+04f, 5.10654773e+04f, 5.10855217e+04f, 5.11055680e+04f +, 5.11256163e+04f, 5.11456665e+04f, 5.11657187e+04f, 5.11857729e+04f +, 5.12058290e+04f, 5.12258871e+04f, 5.12459472e+04f, 5.12660092e+04f +, 5.12860732e+04f, 5.13061392e+04f, 5.13262071e+04f, 5.13462770e+04f +, 5.13663488e+04f, 5.13864226e+04f, 5.14064984e+04f, 5.14265761e+04f +, 5.14466558e+04f, 5.14667374e+04f, 5.14868210e+04f, 5.15069066e+04f +, 5.15269941e+04f, 5.15470836e+04f, 5.15671750e+04f, 5.15872684e+04f +, 5.16073638e+04f, 5.16274611e+04f, 5.16475603e+04f, 5.16676615e+04f +, 5.16877647e+04f, 5.17078698e+04f, 5.17279769e+04f, 5.17480859e+04f +, 5.17681969e+04f, 5.17883099e+04f, 5.18084248e+04f, 5.18285416e+04f +, 5.18486604e+04f, 5.18687812e+04f, 5.18889039e+04f, 5.19090285e+04f +, 5.19291551e+04f, 5.19492837e+04f, 5.19694142e+04f, 5.19895466e+04f +, 5.20096810e+04f, 5.20298174e+04f, 5.20499557e+04f, 5.20700959e+04f +, 5.20902381e+04f, 5.21103823e+04f, 5.21305284e+04f, 5.21506764e+04f +, 5.21708264e+04f, 5.21909783e+04f, 5.22111322e+04f, 5.22312880e+04f +, 5.22514458e+04f, 5.22716055e+04f, 5.22917671e+04f, 5.23119307e+04f +, 5.23320963e+04f, 5.23522638e+04f, 5.23724332e+04f, 5.23926046e+04f +, 5.24127779e+04f, 5.24329531e+04f, 5.24531303e+04f, 5.24733094e+04f +, 5.24934905e+04f, 5.25136735e+04f, 5.25338585e+04f, 5.25540454e+04f +, 5.25742342e+04f, 5.25944250e+04f, 5.26146177e+04f, 5.26348123e+04f +, 5.26550089e+04f, 5.26752074e+04f, 5.26954079e+04f, 5.27156102e+04f +, 5.27358146e+04f, 5.27560208e+04f, 5.27762290e+04f, 5.27964392e+04f +, 5.28166512e+04f, 5.28368652e+04f, 5.28570811e+04f, 5.28772990e+04f +, 5.28975188e+04f, 5.29177405e+04f, 5.29379642e+04f, 5.29581898e+04f +, 5.29784173e+04f, 5.29986468e+04f, 5.30188782e+04f, 5.30391115e+04f +, 5.30593467e+04f, 5.30795839e+04f, 5.30998230e+04f, 5.31200640e+04f +, 5.31403070e+04f, 5.31605519e+04f, 5.31807987e+04f, 5.32010475e+04f +, 5.32212981e+04f, 5.32415507e+04f, 5.32618053e+04f, 5.32820617e+04f +, 5.33023201e+04f, 5.33225804e+04f, 5.33428426e+04f, 5.33631068e+04f +, 5.33833728e+04f, 5.34036408e+04f, 5.34239108e+04f, 5.34441826e+04f +, 5.34644564e+04f, 5.34847321e+04f, 5.35050097e+04f, 5.35252892e+04f +, 5.35455706e+04f, 5.35658540e+04f, 5.35861393e+04f, 5.36064265e+04f +, 5.36267157e+04f, 5.36470067e+04f, 5.36672997e+04f, 5.36875946e+04f +, 5.37078914e+04f, 5.37281901e+04f, 5.37484908e+04f, 5.37687933e+04f +, 5.37890978e+04f, 5.38094042e+04f, 5.38297125e+04f, 5.38500227e+04f +, 5.38703349e+04f, 5.38906489e+04f, 5.39109649e+04f, 5.39312828e+04f +, 5.39516026e+04f, 5.39719243e+04f, 5.39922479e+04f, 5.40125734e+04f +, 5.40329009e+04f, 5.40532302e+04f, 5.40735615e+04f, 5.40938947e+04f +, 5.41142298e+04f, 5.41345668e+04f, 5.41549057e+04f, 5.41752465e+04f +, 5.41955893e+04f, 5.42159339e+04f, 5.42362805e+04f, 5.42566289e+04f +, 5.42769793e+04f, 5.42973316e+04f, 5.43176858e+04f, 5.43380419e+04f +, 5.43583999e+04f, 5.43787598e+04f, 5.43991216e+04f, 5.44194853e+04f +, 5.44398509e+04f, 5.44602184e+04f, 5.44805879e+04f, 5.45009592e+04f +, 5.45213324e+04f, 5.45417076e+04f, 5.45620846e+04f, 5.45824636e+04f +, 5.46028444e+04f, 5.46232272e+04f, 5.46436118e+04f, 5.46639984e+04f +, 5.46843868e+04f, 5.47047772e+04f, 5.47251694e+04f, 5.47455636e+04f +, 5.47659597e+04f, 5.47863576e+04f, 5.48067575e+04f, 5.48271592e+04f +, 5.48475629e+04f, 5.48679684e+04f, 5.48883759e+04f, 5.49087852e+04f +, 5.49291964e+04f, 5.49496096e+04f, 5.49700246e+04f, 5.49904415e+04f +, 5.50108604e+04f, 5.50312811e+04f, 5.50517037e+04f, 5.50721282e+04f +, 5.50925546e+04f, 5.51129829e+04f, 5.51334131e+04f, 5.51538452e+04f +, 5.51742791e+04f, 5.51947150e+04f, 5.52151528e+04f, 5.52355924e+04f +, 5.52560339e+04f, 5.52764774e+04f, 5.52969227e+04f, 5.53173699e+04f +, 5.53378190e+04f, 5.53582700e+04f, 5.53787229e+04f, 5.53991776e+04f +, 5.54196343e+04f, 5.54400928e+04f, 5.54605533e+04f, 5.54810156e+04f +, 5.55014798e+04f, 5.55219459e+04f, 5.55424138e+04f, 5.55628837e+04f +, 5.55833555e+04f, 5.56038291e+04f, 5.56243046e+04f, 5.56447820e+04f +, 5.56652613e+04f, 5.56857425e+04f, 5.57062255e+04f, 5.57267105e+04f +, 5.57471973e+04f, 5.57676860e+04f, 5.57881766e+04f, 5.58086690e+04f +, 5.58291634e+04f, 5.58496596e+04f, 5.58701577e+04f, 5.58906577e+04f +, 5.59111596e+04f, 5.59316633e+04f, 5.59521689e+04f, 5.59726765e+04f +, 5.59931858e+04f, 5.60136971e+04f, 5.60342102e+04f, 5.60547253e+04f +, 5.60752422e+04f, 5.60957609e+04f, 5.61162816e+04f, 5.61368041e+04f +, 5.61573285e+04f, 5.61778548e+04f, 5.61983829e+04f, 5.62189130e+04f +, 5.62394449e+04f, 5.62599786e+04f, 5.62805143e+04f, 5.63010518e+04f +, 5.63215912e+04f, 5.63421325e+04f, 5.63626756e+04f, 5.63832206e+04f +, 5.64037675e+04f, 5.64243163e+04f, 5.64448669e+04f, 5.64654194e+04f +, 5.64859738e+04f, 5.65065300e+04f, 5.65270881e+04f, 5.65476481e+04f +, 5.65682099e+04f, 5.65887737e+04f, 5.66093392e+04f, 5.66299067e+04f +, 5.66504760e+04f, 5.66710472e+04f, 5.66916202e+04f, 5.67121952e+04f +, 5.67327720e+04f, 5.67533506e+04f, 5.67739311e+04f, 5.67945135e+04f +, 5.68150978e+04f, 5.68356839e+04f, 5.68562718e+04f, 5.68768617e+04f +, 5.68974534e+04f, 5.69180470e+04f, 5.69386424e+04f, 5.69592397e+04f +, 5.69798388e+04f, 5.70004399e+04f, 5.70210427e+04f, 5.70416475e+04f +, 5.70622541e+04f, 5.70828625e+04f, 5.71034729e+04f, 5.71240850e+04f +, 5.71446991e+04f, 5.71653150e+04f, 5.71859327e+04f, 5.72065524e+04f +, 5.72271738e+04f, 5.72477972e+04f, 5.72684224e+04f, 5.72890494e+04f +, 5.73096783e+04f, 5.73303091e+04f, 5.73509417e+04f, 5.73715762e+04f +, 5.73922125e+04f, 5.74128507e+04f, 5.74334907e+04f, 5.74541326e+04f +, 5.74747764e+04f, 5.74954220e+04f, 5.75160694e+04f, 5.75367187e+04f +, 5.75573699e+04f, 5.75780229e+04f, 5.75986778e+04f, 5.76193345e+04f +, 5.76399931e+04f, 5.76606535e+04f, 5.76813158e+04f, 5.77019799e+04f +, 5.77226458e+04f, 5.77433137e+04f, 5.77639833e+04f, 5.77846549e+04f +, 5.78053282e+04f, 5.78260035e+04f, 5.78466805e+04f, 5.78673594e+04f +, 5.78880402e+04f, 5.79087228e+04f, 5.79294073e+04f, 5.79500936e+04f +, 5.79707817e+04f, 5.79914717e+04f, 5.80121636e+04f, 5.80328572e+04f +, 5.80535528e+04f, 5.80742501e+04f, 5.80949494e+04f, 5.81156504e+04f +, 5.81363533e+04f, 5.81570581e+04f, 5.81777647e+04f, 5.81984731e+04f +, 5.82191834e+04f, 5.82398955e+04f, 5.82606095e+04f, 5.82813253e+04f +, 5.83020429e+04f, 5.83227624e+04f, 5.83434837e+04f, 5.83642069e+04f +, 5.83849319e+04f, 5.84056588e+04f, 5.84263874e+04f, 5.84471180e+04f +, 5.84678503e+04f, 5.84885845e+04f, 5.85093206e+04f, 5.85300584e+04f +, 5.85507982e+04f, 5.85715397e+04f, 5.85922831e+04f, 5.86130283e+04f +, 5.86337754e+04f, 5.86545243e+04f, 5.86752750e+04f, 5.86960275e+04f +, 5.87167819e+04f, 5.87375382e+04f, 5.87582962e+04f, 5.87790561e+04f +, 5.87998179e+04f, 5.88205814e+04f, 5.88413468e+04f, 5.88621141e+04f +, 5.88828831e+04f, 5.89036540e+04f, 5.89244267e+04f, 5.89452013e+04f +, 5.89659777e+04f, 5.89867559e+04f, 5.90075359e+04f, 5.90283178e+04f +, 5.90491015e+04f, 5.90698870e+04f, 5.90906744e+04f, 5.91114636e+04f +, 5.91322546e+04f, 5.91530475e+04f, 5.91738421e+04f, 5.91946386e+04f +, 5.92154370e+04f, 5.92362371e+04f, 5.92570391e+04f, 5.92778429e+04f +, 5.92986485e+04f, 5.93194560e+04f, 5.93402653e+04f, 5.93610764e+04f +, 5.93818893e+04f, 5.94027041e+04f, 5.94235206e+04f, 5.94443390e+04f +, 5.94651593e+04f, 5.94859813e+04f, 5.95068052e+04f, 5.95276309e+04f +, 5.95484584e+04f, 5.95692877e+04f, 5.95901189e+04f, 5.96109518e+04f +, 5.96317866e+04f, 5.96526232e+04f, 5.96734617e+04f, 5.96943019e+04f +, 5.97151440e+04f, 5.97359879e+04f, 5.97568336e+04f, 5.97776811e+04f +, 5.97985305e+04f, 5.98193816e+04f, 5.98402346e+04f, 5.98610894e+04f +, 5.98819460e+04f, 5.99028045e+04f, 5.99236647e+04f, 5.99445268e+04f +, 5.99653906e+04f, 5.99862563e+04f, 6.00071238e+04f, 6.00279932e+04f +, 6.00488643e+04f, 6.00697372e+04f, 6.00906120e+04f, 6.01114886e+04f +, 6.01323670e+04f, 6.01532472e+04f, 6.01741292e+04f, 6.01950130e+04f +, 6.02158986e+04f, 6.02367861e+04f, 6.02576753e+04f, 6.02785664e+04f +, 6.02994593e+04f, 6.03203540e+04f, 6.03412505e+04f, 6.03621488e+04f +, 6.03830489e+04f, 6.04039508e+04f, 6.04248546e+04f, 6.04457601e+04f +, 6.04666675e+04f, 6.04875766e+04f, 6.05084876e+04f, 6.05294003e+04f +, 6.05503149e+04f, 6.05712313e+04f, 6.05921495e+04f, 6.06130695e+04f +, 6.06339913e+04f, 6.06549149e+04f, 6.06758403e+04f, 6.06967675e+04f +, 6.07176965e+04f, 6.07386274e+04f, 6.07595600e+04f, 6.07804944e+04f +, 6.08014306e+04f, 6.08223687e+04f, 6.08433085e+04f, 6.08642501e+04f +, 6.08851936e+04f, 6.09061388e+04f, 6.09270859e+04f, 6.09480347e+04f +, 6.09689853e+04f, 6.09899378e+04f, 6.10108920e+04f, 6.10318481e+04f +, 6.10528059e+04f, 6.10737655e+04f, 6.10947270e+04f, 6.11156902e+04f +, 6.11366552e+04f, 6.11576221e+04f, 6.11785907e+04f, 6.11995611e+04f +, 6.12205333e+04f, 6.12415074e+04f, 6.12624832e+04f, 6.12834608e+04f +, 6.13044402e+04f, 6.13254214e+04f, 6.13464044e+04f, 6.13673892e+04f +, 6.13883757e+04f, 6.14093641e+04f, 6.14303543e+04f, 6.14513463e+04f +, 6.14723400e+04f, 6.14933356e+04f, 6.15143329e+04f, 6.15353320e+04f +, 6.15563330e+04f, 6.15773357e+04f, 6.15983402e+04f, 6.16193465e+04f +, 6.16403546e+04f, 6.16613644e+04f, 6.16823761e+04f, 6.17033896e+04f +, 6.17244048e+04f, 6.17454218e+04f, 6.17664407e+04f, 6.17874613e+04f +, 6.18084837e+04f, 6.18295079e+04f, 6.18505338e+04f, 6.18715616e+04f +, 6.18925912e+04f, 6.19136225e+04f, 6.19346556e+04f, 6.19556905e+04f +, 6.19767272e+04f, 6.19977657e+04f, 6.20188060e+04f, 6.20398480e+04f +, 6.20608918e+04f, 6.20819374e+04f, 6.21029848e+04f, 6.21240340e+04f +, 6.21450850e+04f, 6.21661377e+04f, 6.21871923e+04f, 6.22082486e+04f +, 6.22293067e+04f, 6.22503666e+04f, 6.22714282e+04f, 6.22924917e+04f +, 6.23135569e+04f, 6.23346239e+04f, 6.23556927e+04f, 6.23767632e+04f +, 6.23978356e+04f, 6.24189097e+04f, 6.24399856e+04f, 6.24610633e+04f +, 6.24821427e+04f, 6.25032240e+04f, 6.25243070e+04f, 6.25453918e+04f +, 6.25664783e+04f, 6.25875667e+04f, 6.26086568e+04f, 6.26297487e+04f +, 6.26508424e+04f, 6.26719378e+04f, 6.26930350e+04f, 6.27141340e+04f +, 6.27352348e+04f, 6.27563373e+04f, 6.27774417e+04f, 6.27985478e+04f +, 6.28196556e+04f, 6.28407653e+04f, 6.28618767e+04f, 6.28829899e+04f +, 6.29041048e+04f, 6.29252216e+04f, 6.29463401e+04f, 6.29674603e+04f +, 6.29885824e+04f, 6.30097062e+04f, 6.30308318e+04f, 6.30519592e+04f +, 6.30730883e+04f, 6.30942192e+04f, 6.31153518e+04f, 6.31364863e+04f +, 6.31576225e+04f, 6.31787605e+04f, 6.31999002e+04f, 6.32210417e+04f +, 6.32421850e+04f, 6.32633300e+04f, 6.32844768e+04f, 6.33056254e+04f +, 6.33267758e+04f, 6.33479279e+04f, 6.33690818e+04f, 6.33902374e+04f +, 6.34113948e+04f, 6.34325540e+04f, 6.34537149e+04f, 6.34748776e+04f +, 6.34960421e+04f, 6.35172083e+04f, 6.35383763e+04f, 6.35595461e+04f +, 6.35807176e+04f, 6.36018909e+04f, 6.36230659e+04f, 6.36442427e+04f +, 6.36654213e+04f, 6.36866016e+04f, 6.37077837e+04f, 6.37289675e+04f +, 6.37501532e+04f, 6.37713405e+04f, 6.37925297e+04f, 6.38137205e+04f +, 6.38349132e+04f, 6.38561076e+04f, 6.38773038e+04f, 6.38985017e+04f +, 6.39197014e+04f, 6.39409028e+04f, 6.39621060e+04f, 6.39833110e+04f +, 6.40045177e+04f, 6.40257262e+04f, 6.40469364e+04f, 6.40681484e+04f +, 6.40893621e+04f, 6.41105776e+04f, 6.41317949e+04f, 6.41530139e+04f +, 6.41742346e+04f, 6.41954572e+04f, 6.42166814e+04f, 6.42379075e+04f +, 6.42591352e+04f, 6.42803648e+04f, 6.43015960e+04f, 6.43228291e+04f +, 6.43440639e+04f, 6.43653004e+04f, 6.43865387e+04f, 6.44077788e+04f +, 6.44290205e+04f, 6.44502641e+04f, 6.44715094e+04f, 6.44927564e+04f +, 6.45140052e+04f, 6.45352558e+04f, 6.45565081e+04f, 6.45777621e+04f +, 6.45990179e+04f, 6.46202755e+04f, 6.46415348e+04f, 6.46627958e+04f +, 6.46840586e+04f, 6.47053231e+04f, 6.47265894e+04f, 6.47478574e+04f +, 6.47691272e+04f, 6.47903987e+04f, 6.48116720e+04f, 6.48329470e+04f +, 6.48542238e+04f, 6.48755023e+04f, 6.48967825e+04f, 6.49180645e+04f +, 6.49393483e+04f, 6.49606337e+04f, 6.49819210e+04f, 6.50032099e+04f +, 6.50245007e+04f, 6.50457931e+04f, 6.50670873e+04f, 6.50883832e+04f +, 6.51096809e+04f, 6.51309804e+04f, 6.51522815e+04f, 6.51735844e+04f +, 6.51948891e+04f, 6.52161955e+04f, 6.52375036e+04f, 6.52588135e+04f +, 6.52801251e+04f, 6.53014384e+04f, 6.53227535e+04f, 6.53440703e+04f +, 6.53653889e+04f, 6.53867092e+04f, 6.54080313e+04f, 6.54293550e+04f +, 6.54506806e+04f, 6.54720078e+04f, 6.54933368e+04f, 6.55146675e+04f +, 6.55360000e+04f, 6.55573342e+04f, 6.55786701e+04f, 6.56000078e+04f +, 6.56213472e+04f, 6.56426884e+04f, 6.56640312e+04f, 6.56853759e+04f +, 6.57067222e+04f, 6.57280703e+04f, 6.57494201e+04f, 6.57707716e+04f +, 6.57921249e+04f, 6.58134799e+04f, 6.58348367e+04f, 6.58561952e+04f +, 6.58775554e+04f, 6.58989173e+04f, 6.59202810e+04f, 6.59416464e+04f +, 6.59630135e+04f, 6.59843824e+04f, 6.60057530e+04f, 6.60271253e+04f +, 6.60484994e+04f, 6.60698751e+04f, 6.60912526e+04f, 6.61126319e+04f +, 6.61340129e+04f, 6.61553956e+04f, 6.61767800e+04f, 6.61981661e+04f +, 6.62195540e+04f, 6.62409436e+04f, 6.62623350e+04f, 6.62837280e+04f +, 6.63051228e+04f, 6.63265193e+04f, 6.63479176e+04f, 6.63693175e+04f +, 6.63907192e+04f, 6.64121226e+04f, 6.64335278e+04f, 6.64549346e+04f +, 6.64763432e+04f, 6.64977535e+04f, 6.65191656e+04f, 6.65405793e+04f +, 6.65619948e+04f, 6.65834120e+04f, 6.66048309e+04f, 6.66262516e+04f +, 6.66476740e+04f, 6.66690981e+04f, 6.66905239e+04f, 6.67119514e+04f +, 6.67333807e+04f, 6.67548116e+04f, 6.67762443e+04f, 6.67976788e+04f +, 6.68191149e+04f, 6.68405527e+04f, 6.68619923e+04f, 6.68834336e+04f +, 6.69048766e+04f, 6.69263214e+04f, 6.69477678e+04f, 6.69692160e+04f +, 6.69906658e+04f, 6.70121174e+04f, 6.70335708e+04f, 6.70550258e+04f +, 6.70764825e+04f, 6.70979410e+04f, 6.71194012e+04f, 6.71408631e+04f +, 6.71623267e+04f, 6.71837920e+04f, 6.72052591e+04f, 6.72267278e+04f +, 6.72481983e+04f, 6.72696705e+04f, 6.72911444e+04f, 6.73126200e+04f +, 6.73340973e+04f, 6.73555764e+04f, 6.73770571e+04f, 6.73985396e+04f +, 6.74200237e+04f, 6.74415096e+04f, 6.74629972e+04f, 6.74844865e+04f +, 6.75059776e+04f, 6.75274703e+04f, 6.75489647e+04f, 6.75704609e+04f +, 6.75919587e+04f, 6.76134583e+04f, 6.76349596e+04f, 6.76564626e+04f +, 6.76779673e+04f, 6.76994737e+04f, 6.77209818e+04f, 6.77424916e+04f +, 6.77640031e+04f, 6.77855164e+04f, 6.78070313e+04f, 6.78285480e+04f +, 6.78500663e+04f, 6.78715864e+04f, 6.78931081e+04f, 6.79146316e+04f +, 6.79361568e+04f, 6.79576837e+04f, 6.79792123e+04f, 6.80007426e+04f +, 6.80222746e+04f, 6.80438083e+04f, 6.80653437e+04f, 6.80868808e+04f +, 6.81084196e+04f, 6.81299601e+04f, 6.81515023e+04f, 6.81730463e+04f +, 6.81945919e+04f, 6.82161392e+04f, 6.82376882e+04f, 6.82592390e+04f +, 6.82807914e+04f, 6.83023455e+04f, 6.83239014e+04f, 6.83454589e+04f +, 6.83670181e+04f, 6.83885790e+04f, 6.84101417e+04f, 6.84317060e+04f +, 6.84532720e+04f, 6.84748398e+04f, 6.84964092e+04f, 6.85179803e+04f +, 6.85395531e+04f, 6.85611277e+04f, 6.85827039e+04f, 6.86042818e+04f +, 6.86258614e+04f, 6.86474427e+04f, 6.86690257e+04f, 6.86906104e+04f +, 6.87121968e+04f, 6.87337849e+04f, 6.87553747e+04f, 6.87769662e+04f +, 6.87985593e+04f, 6.88201542e+04f, 6.88417508e+04f, 6.88633490e+04f +, 6.88849490e+04f, 6.89065506e+04f, 6.89281540e+04f, 6.89497590e+04f +, 6.89713657e+04f, 6.89929741e+04f, 6.90145843e+04f, 6.90361961e+04f +, 6.90578095e+04f, 6.90794247e+04f, 6.91010416e+04f, 6.91226602e+04f +, 6.91442804e+04f, 6.91659024e+04f, 6.91875260e+04f, 6.92091513e+04f +, 6.92307783e+04f, 6.92524071e+04f, 6.92740374e+04f, 6.92956695e+04f +, 6.93173033e+04f, 6.93389388e+04f, 6.93605759e+04f, 6.93822147e+04f +, 6.94038553e+04f, 6.94254975e+04f, 6.94471414e+04f, 6.94687869e+04f +, 6.94904342e+04f, 6.95120832e+04f, 6.95337338e+04f, 6.95553861e+04f +, 6.95770401e+04f, 6.95986958e+04f, 6.96203532e+04f, 6.96420123e+04f +, 6.96636730e+04f, 6.96853355e+04f, 6.97069996e+04f, 6.97286654e+04f +, 6.97503328e+04f, 6.97720020e+04f, 6.97936729e+04f, 6.98153454e+04f +, 6.98370196e+04f, 6.98586955e+04f, 6.98803731e+04f, 6.99020523e+04f +, 6.99237333e+04f, 6.99454159e+04f, 6.99671002e+04f, 6.99887862e+04f +, 7.00104738e+04f, 7.00321632e+04f, 7.00538542e+04f, 7.00755469e+04f +, 7.00972412e+04f, 7.01189373e+04f, 7.01406350e+04f, 7.01623344e+04f +, 7.01840355e+04f, 7.02057383e+04f, 7.02274427e+04f, 7.02491489e+04f +, 7.02708567e+04f, 7.02925661e+04f, 7.03142773e+04f, 7.03359901e+04f +, 7.03577046e+04f, 7.03794208e+04f, 7.04011387e+04f, 7.04228582e+04f +, 7.04445794e+04f, 7.04663023e+04f, 7.04880268e+04f, 7.05097530e+04f +, 7.05314809e+04f, 7.05532105e+04f, 7.05749418e+04f, 7.05966747e+04f +, 7.06184093e+04f, 7.06401455e+04f, 7.06618835e+04f, 7.06836231e+04f +, 7.07053644e+04f, 7.07271073e+04f, 7.07488519e+04f, 7.07705982e+04f +, 7.07923462e+04f, 7.08140958e+04f, 7.08358472e+04f, 7.08576001e+04f +, 7.08793548e+04f, 7.09011111e+04f, 7.09228691e+04f, 7.09446287e+04f +, 7.09663900e+04f, 7.09881530e+04f, 7.10099177e+04f, 7.10316840e+04f +, 7.10534520e+04f, 7.10752217e+04f, 7.10969930e+04f, 7.11187660e+04f +, 7.11405407e+04f, 7.11623170e+04f, 7.11840950e+04f, 7.12058746e+04f +, 7.12276560e+04f, 7.12494390e+04f, 7.12712236e+04f, 7.12930099e+04f +, 7.13147979e+04f, 7.13365876e+04f, 7.13583789e+04f, 7.13801719e+04f +, 7.14019665e+04f, 7.14237628e+04f, 7.14455608e+04f, 7.14673604e+04f +, 7.14891617e+04f, 7.15109646e+04f, 7.15327693e+04f, 7.15545755e+04f +, 7.15763835e+04f, 7.15981931e+04f, 7.16200043e+04f, 7.16418173e+04f +, 7.16636318e+04f, 7.16854481e+04f, 7.17072660e+04f, 7.17290856e+04f +, 7.17509068e+04f, 7.17727297e+04f, 7.17945542e+04f, 7.18163804e+04f +, 7.18382083e+04f, 7.18600378e+04f, 7.18818689e+04f, 7.19037018e+04f +, 7.19255363e+04f, 7.19473724e+04f, 7.19692102e+04f, 7.19910497e+04f +, 7.20128908e+04f, 7.20347336e+04f, 7.20565780e+04f, 7.20784241e+04f +, 7.21002718e+04f, 7.21221212e+04f, 7.21439723e+04f, 7.21658250e+04f +, 7.21876793e+04f, 7.22095353e+04f, 7.22313930e+04f, 7.22532523e+04f +, 7.22751133e+04f, 7.22969759e+04f, 7.23188402e+04f, 7.23407061e+04f +, 7.23625737e+04f, 7.23844430e+04f, 7.24063138e+04f, 7.24281864e+04f +, 7.24500606e+04f, 7.24719364e+04f, 7.24938139e+04f, 7.25156931e+04f +, 7.25375739e+04f, 7.25594563e+04f, 7.25813404e+04f, 7.26032262e+04f +, 7.26251135e+04f, 7.26470026e+04f, 7.26688933e+04f, 7.26907856e+04f +, 7.27126796e+04f, 7.27345753e+04f, 7.27564725e+04f, 7.27783715e+04f +, 7.28002721e+04f, 7.28221743e+04f, 7.28440782e+04f, 7.28659837e+04f +, 7.28878909e+04f, 7.29097997e+04f, 7.29317101e+04f, 7.29536222e+04f +, 7.29755360e+04f, 7.29974514e+04f, 7.30193684e+04f, 7.30412871e+04f +, 7.30632075e+04f, 7.30851294e+04f, 7.31070530e+04f, 7.31289783e+04f +, 7.31509052e+04f, 7.31728338e+04f, 7.31947640e+04f, 7.32166958e+04f +, 7.32386293e+04f, 7.32605644e+04f, 7.32825012e+04f, 7.33044396e+04f +, 7.33263796e+04f, 7.33483213e+04f, 7.33702646e+04f, 7.33922096e+04f +, 7.34141562e+04f, 7.34361045e+04f, 7.34580544e+04f, 7.34800059e+04f +, 7.35019591e+04f, 7.35239139e+04f, 7.35458703e+04f, 7.35678284e+04f +, 7.35897881e+04f, 7.36117495e+04f, 7.36337125e+04f, 7.36556771e+04f +, 7.36776434e+04f, 7.36996113e+04f, 7.37215809e+04f, 7.37435521e+04f +, 7.37655249e+04f, 7.37874994e+04f, 7.38094755e+04f, 7.38314532e+04f +, 7.38534326e+04f, 7.38754136e+04f, 7.38973962e+04f, 7.39193805e+04f +, 7.39413664e+04f, 7.39633540e+04f, 7.39853431e+04f, 7.40073339e+04f +, 7.40293264e+04f, 7.40513205e+04f, 7.40733162e+04f, 7.40953135e+04f +, 7.41173125e+04f, 7.41393131e+04f, 7.41613154e+04f, 7.41833192e+04f +, 7.42053248e+04f, 7.42273319e+04f, 7.42493407e+04f, 7.42713511e+04f +, 7.42933631e+04f, 7.43153768e+04f, 7.43373921e+04f, 7.43594090e+04f +, 7.43814275e+04f, 7.44034477e+04f, 7.44254695e+04f, 7.44474930e+04f +, 7.44695180e+04f, 7.44915447e+04f, 7.45135731e+04f, 7.45356030e+04f +, 7.45576346e+04f, 7.45796678e+04f, 7.46017027e+04f, 7.46237391e+04f +, 7.46457772e+04f, 7.46678169e+04f, 7.46898583e+04f, 7.47119013e+04f +, 7.47339459e+04f, 7.47559921e+04f, 7.47780399e+04f, 7.48000894e+04f +, 7.48221405e+04f, 7.48441932e+04f, 7.48662476e+04f, 7.48883036e+04f +, 7.49103612e+04f, 7.49324204e+04f, 7.49544812e+04f, 7.49765437e+04f +, 7.49986078e+04f, 7.50206735e+04f, 7.50427408e+04f, 7.50648098e+04f +, 7.50868804e+04f, 7.51089526e+04f, 7.51310264e+04f, 7.51531019e+04f +, 7.51751789e+04f, 7.51972576e+04f, 7.52193379e+04f, 7.52414199e+04f +, 7.52635034e+04f, 7.52855886e+04f, 7.53076754e+04f, 7.53297638e+04f +, 7.53518538e+04f, 7.53739455e+04f, 7.53960387e+04f, 7.54181336e+04f +, 7.54402301e+04f, 7.54623282e+04f, 7.54844280e+04f, 7.55065293e+04f +, 7.55286323e+04f, 7.55507369e+04f, 7.55728431e+04f, 7.55949510e+04f +, 7.56170604e+04f, 7.56391715e+04f, 7.56612841e+04f, 7.56833984e+04f +, 7.57055143e+04f, 7.57276319e+04f, 7.57497510e+04f, 7.57718717e+04f +, 7.57939941e+04f, 7.58161181e+04f, 7.58382437e+04f, 7.58603709e+04f +, 7.58824997e+04f, 7.59046302e+04f, 7.59267622e+04f, 7.59488959e+04f +, 7.59710311e+04f, 7.59931680e+04f, 7.60153065e+04f, 7.60374466e+04f +, 7.60595884e+04f, 7.60817317e+04f, 7.61038766e+04f, 7.61260232e+04f +, 7.61481714e+04f, 7.61703212e+04f, 7.61924725e+04f, 7.62146255e+04f +, 7.62367801e+04f, 7.62589364e+04f, 7.62810942e+04f, 7.63032536e+04f +, 7.63254147e+04f, 7.63475773e+04f, 7.63697416e+04f, 7.63919075e+04f +, 7.64140750e+04f, 7.64362440e+04f, 7.64584147e+04f, 7.64805870e+04f +, 7.65027609e+04f, 7.65249365e+04f, 7.65471136e+04f, 7.65692923e+04f +, 7.65914727e+04f, 7.66136546e+04f, 7.66358381e+04f, 7.66580233e+04f +, 7.66802101e+04f, 7.67023984e+04f, 7.67245884e+04f, 7.67467800e+04f +, 7.67689731e+04f, 7.67911679e+04f, 7.68133643e+04f, 7.68355623e+04f +, 7.68577619e+04f, 7.68799631e+04f, 7.69021659e+04f, 7.69243703e+04f +, 7.69465763e+04f, 7.69687839e+04f, 7.69909931e+04f, 7.70132039e+04f +, 7.70354163e+04f, 7.70576303e+04f, 7.70798459e+04f, 7.71020631e+04f +, 7.71242820e+04f, 7.71465024e+04f, 7.71687244e+04f, 7.71909480e+04f +, 7.72131732e+04f, 7.72354000e+04f, 7.72576284e+04f, 7.72798585e+04f +, 7.73020901e+04f, 7.73243233e+04f, 7.73465581e+04f, 7.73687945e+04f +, 7.73910325e+04f, 7.74132721e+04f, 7.74355133e+04f, 7.74577561e+04f +, 7.74800005e+04f, 7.75022465e+04f, 7.75244941e+04f, 7.75467432e+04f +, 7.75689940e+04f, 7.75912464e+04f, 7.76135004e+04f, 7.76357559e+04f +, 7.76580131e+04f, 7.76802718e+04f, 7.77025322e+04f, 7.77247941e+04f +, 7.77470577e+04f, 7.77693228e+04f, 7.77915895e+04f, 7.78138578e+04f +, 7.78361278e+04f, 7.78583993e+04f, 7.78806724e+04f, 7.79029471e+04f +, 7.79252233e+04f, 7.79475012e+04f, 7.79697807e+04f, 7.79920617e+04f +, 7.80143444e+04f, 7.80366286e+04f, 7.80589145e+04f, 7.80812019e+04f +, 7.81034909e+04f, 7.81257815e+04f, 7.81480737e+04f, 7.81703675e+04f +, 7.81926629e+04f, 7.82149598e+04f, 7.82372584e+04f, 7.82595585e+04f +, 7.82818602e+04f, 7.83041636e+04f, 7.83264685e+04f, 7.83487750e+04f +, 7.83710830e+04f, 7.83933927e+04f, 7.84157040e+04f, 7.84380168e+04f +, 7.84603313e+04f, 7.84826473e+04f, 7.85049649e+04f, 7.85272841e+04f +, 7.85496048e+04f, 7.85719272e+04f, 7.85942512e+04f, 7.86165767e+04f +, 7.86389038e+04f, 7.86612325e+04f, 7.86835628e+04f, 7.87058947e+04f +, 7.87282281e+04f, 7.87505632e+04f, 7.87728998e+04f, 7.87952380e+04f +, 7.88175778e+04f, 7.88399192e+04f, 7.88622621e+04f, 7.88846067e+04f +, 7.89069528e+04f, 7.89293005e+04f, 7.89516498e+04f, 7.89740007e+04f +, 7.89963531e+04f, 7.90187071e+04f, 7.90410627e+04f, 7.90634199e+04f +, 7.90857787e+04f, 7.91081391e+04f, 7.91305010e+04f, 7.91528645e+04f +, 7.91752296e+04f, 7.91975963e+04f, 7.92199645e+04f, 7.92423344e+04f +, 7.92647058e+04f, 7.92870788e+04f, 7.93094533e+04f, 7.93318295e+04f +, 7.93542072e+04f, 7.93765865e+04f, 7.93989674e+04f, 7.94213498e+04f +, 7.94437339e+04f, 7.94661195e+04f, 7.94885067e+04f, 7.95108954e+04f +, 7.95332858e+04f, 7.95556777e+04f, 7.95780712e+04f, 7.96004663e+04f +, 7.96228629e+04f, 7.96452611e+04f, 7.96676609e+04f, 7.96900623e+04f +, 7.97124652e+04f, 7.97348697e+04f, 7.97572758e+04f, 7.97796835e+04f +, 7.98020927e+04f, 7.98245035e+04f, 7.98469159e+04f, 7.98693299e+04f +, 7.98917454e+04f, 7.99141625e+04f, 7.99365812e+04f, 7.99590014e+04f +, 7.99814232e+04f, 8.00038466e+04f, 8.00262716e+04f, 8.00486981e+04f +, 8.00711262e+04f, 8.00935559e+04f, 8.01159871e+04f, 8.01384199e+04f +, 8.01608543e+04f, 8.01832903e+04f, 8.02057278e+04f, 8.02281669e+04f +, 8.02506075e+04f, 8.02730498e+04f, 8.02954936e+04f, 8.03179389e+04f +, 8.03403859e+04f, 8.03628344e+04f, 8.03852845e+04f, 8.04077361e+04f +, 8.04301893e+04f, 8.04526441e+04f, 8.04751004e+04f, 8.04975583e+04f +, 8.05200178e+04f, 8.05424788e+04f, 8.05649414e+04f, 8.05874056e+04f +, 8.06098713e+04f, 8.06323386e+04f, 8.06548075e+04f, 8.06772779e+04f +, 8.06997499e+04f, 8.07222235e+04f, 8.07446986e+04f, 8.07671753e+04f +, 8.07896536e+04f, 8.08121334e+04f, 8.08346148e+04f, 8.08570977e+04f +, 8.08795822e+04f, 8.09020683e+04f, 8.09245559e+04f, 8.09470451e+04f +, 8.09695359e+04f, 8.09920282e+04f, 8.10145221e+04f, 8.10370175e+04f +, 8.10595145e+04f, 8.10820131e+04f, 8.11045132e+04f, 8.11270149e+04f +, 8.11495181e+04f, 8.11720229e+04f, 8.11945293e+04f, 8.12170372e+04f +, 8.12395467e+04f, 8.12620578e+04f, 8.12845704e+04f, 8.13070845e+04f +, 8.13296002e+04f, 8.13521175e+04f, 8.13746364e+04f, 8.13971568e+04f +, 8.14196787e+04f, 8.14422022e+04f, 8.14647273e+04f, 8.14872539e+04f +, 8.15097821e+04f, 8.15323118e+04f, 8.15548431e+04f, 8.15773760e+04f +, 8.15999104e+04f, 8.16224464e+04f, 8.16449839e+04f, 8.16675230e+04f +, 8.16900636e+04f, 8.17126058e+04f, 8.17351495e+04f, 8.17576948e+04f +, 8.17802417e+04f, 8.18027901e+04f, 8.18253400e+04f, 8.18478915e+04f +, 8.18704446e+04f, 8.18929992e+04f, 8.19155554e+04f, 8.19381131e+04f +, 8.19606724e+04f, 8.19832332e+04f, 8.20057956e+04f, 8.20283595e+04f +, 8.20509250e+04f, 8.20734921e+04f, 8.20960606e+04f, 8.21186308e+04f +, 8.21412025e+04f, 8.21637757e+04f, 8.21863505e+04f, 8.22089269e+04f +, 8.22315047e+04f, 8.22540842e+04f, 8.22766652e+04f, 8.22992477e+04f +, 8.23218318e+04f, 8.23444174e+04f, 8.23670046e+04f, 8.23895934e+04f +, 8.24121837e+04f, 8.24347755e+04f, 8.24573689e+04f, 8.24799638e+04f +, 8.25025603e+04f, 8.25251583e+04f, 8.25477579e+04f, 8.25703590e+04f +, 8.25929617e+04f, 8.26155659e+04f, 8.26381716e+04f, 8.26607789e+04f +, 8.26833878e+04f, 8.27059982e+04f, 8.27286101e+04f, 8.27512236e+04f +, 8.27738386e+04f, 8.27964552e+04f, 8.28190733e+04f, 8.28416930e+04f +, 8.28643142e+04f, 8.28869369e+04f, 8.29095612e+04f, 8.29321871e+04f +, 8.29548145e+04f, 8.29774434e+04f, 8.30000739e+04f, 8.30227059e+04f +, 8.30453394e+04f, 8.30679745e+04f, 8.30906112e+04f, 8.31132493e+04f +, 8.31358891e+04f, 8.31585303e+04f, 8.31811731e+04f, 8.32038175e+04f +, 8.32264634e+04f, 8.32491108e+04f, 8.32717598e+04f, 8.32944103e+04f +, 8.33170623e+04f, 8.33397159e+04f, 8.33623710e+04f, 8.33850277e+04f +, 8.34076859e+04f, 8.34303456e+04f, 8.34530069e+04f, 8.34756697e+04f +, 8.34983341e+04f, 8.35210000e+04f, 8.35436674e+04f, 8.35663364e+04f +, 8.35890069e+04f, 8.36116790e+04f, 8.36343526e+04f, 8.36570277e+04f +, 8.36797043e+04f, 8.37023825e+04f, 8.37250623e+04f, 8.37477435e+04f +, 8.37704263e+04f, 8.37931107e+04f, 8.38157965e+04f, 8.38384839e+04f +, 8.38611729e+04f, 8.38838634e+04f, 8.39065554e+04f, 8.39292489e+04f +, 8.39519440e+04f, 8.39746406e+04f, 8.39973388e+04f, 8.40200385e+04f +, 8.40427397e+04f, 8.40654424e+04f, 8.40881467e+04f, 8.41108525e+04f +, 8.41335599e+04f, 8.41562688e+04f, 8.41789792e+04f, 8.42016911e+04f +, 8.42244046e+04f, 8.42471196e+04f, 8.42698361e+04f, 8.42925542e+04f +, 8.43152738e+04f, 8.43379949e+04f, 8.43607176e+04f, 8.43834418e+04f +, 8.44061675e+04f, 8.44288947e+04f, 8.44516235e+04f, 8.44743538e+04f +, 8.44970857e+04f, 8.45198190e+04f, 8.45425539e+04f, 8.45652904e+04f +, 8.45880283e+04f, 8.46107678e+04f, 8.46335088e+04f, 8.46562513e+04f +, 8.46789954e+04f, 8.47017410e+04f, 8.47244881e+04f, 8.47472368e+04f +, 8.47699869e+04f, 8.47927386e+04f, 8.48154919e+04f, 8.48382466e+04f +, 8.48610029e+04f, 8.48837607e+04f, 8.49065200e+04f, 8.49292809e+04f +, 8.49520433e+04f, 8.49748072e+04f, 8.49975726e+04f, 8.50203395e+04f +, 8.50431080e+04f, 8.50658780e+04f, 8.50886495e+04f, 8.51114226e+04f +, 8.51341972e+04f, 8.51569733e+04f, 8.51797509e+04f, 8.52025300e+04f +, 8.52253107e+04f, 8.52480929e+04f, 8.52708766e+04f, 8.52936618e+04f +, 8.53164486e+04f, 8.53392368e+04f, 8.53620266e+04f, 8.53848179e+04f +, 8.54076108e+04f, 8.54304051e+04f, 8.54532010e+04f, 8.54759984e+04f +, 8.54987973e+04f, 8.55215978e+04f, 8.55443997e+04f, 8.55672032e+04f +, 8.55900082e+04f, 8.56128147e+04f, 8.56356228e+04f, 8.56584323e+04f +, 8.56812434e+04f, 8.57040560e+04f, 8.57268701e+04f, 8.57496857e+04f +, 8.57725029e+04f, 8.57953215e+04f, 8.58181417e+04f, 8.58409634e+04f +, 8.58637866e+04f, 8.58866114e+04f, 8.59094376e+04f, 8.59322654e+04f +, 8.59550946e+04f, 8.59779254e+04f, 8.60007578e+04f, 8.60235916e+04f +, 8.60464269e+04f, 8.60692638e+04f, 8.60921022e+04f, 8.61149420e+04f +, 8.61377834e+04f, 8.61606264e+04f, 8.61834708e+04f, 8.62063167e+04f +, 8.62291642e+04f, 8.62520132e+04f, 8.62748637e+04f, 8.62977157e+04f +, 8.63205692e+04f, 8.63434242e+04f, 8.63662807e+04f, 8.63891388e+04f +, 8.64119983e+04f, 8.64348594e+04f, 8.64577220e+04f, 8.64805861e+04f +, 8.65034517e+04f, 8.65263188e+04f, 8.65491874e+04f, 8.65720576e+04f +, 8.65949292e+04f, 8.66178024e+04f, 8.66406771e+04f, 8.66635532e+04f +, 8.66864309e+04f, 8.67093101e+04f, 8.67321908e+04f, 8.67550731e+04f +, 8.67779568e+04f, 8.68008420e+04f, 8.68237288e+04f, 8.68466170e+04f +, 8.68695068e+04f, 8.68923981e+04f, 8.69152908e+04f, 8.69381851e+04f +, 8.69610809e+04f, 8.69839782e+04f, 8.70068770e+04f, 8.70297773e+04f +, 8.70526792e+04f, 8.70755825e+04f, 8.70984873e+04f, 8.71213937e+04f +, 8.71443015e+04f, 8.71672108e+04f, 8.71901217e+04f, 8.72130341e+04f +, 8.72359479e+04f, 8.72588633e+04f, 8.72817802e+04f, 8.73046985e+04f +, 8.73276184e+04f, 8.73505398e+04f, 8.73734627e+04f, 8.73963871e+04f +, 8.74193130e+04f, 8.74422404e+04f, 8.74651693e+04f, 8.74880997e+04f +, 8.75110316e+04f, 8.75339650e+04f, 8.75568999e+04f, 8.75798364e+04f +, 8.76027743e+04f, 8.76257137e+04f, 8.76486546e+04f, 8.76715970e+04f +, 8.76945410e+04f, 8.77174864e+04f, 8.77404333e+04f, 8.77633817e+04f +, 8.77863317e+04f, 8.78092831e+04f, 8.78322360e+04f, 8.78551904e+04f +, 8.78781464e+04f, 8.79011038e+04f, 8.79240627e+04f, 8.79470231e+04f +, 8.79699850e+04f, 8.79929485e+04f, 8.80159134e+04f, 8.80388798e+04f +, 8.80618477e+04f, 8.80848171e+04f, 8.81077880e+04f, 8.81307604e+04f +, 8.81537343e+04f, 8.81767097e+04f, 8.81996866e+04f, 8.82226650e+04f +, 8.82456449e+04f, 8.82686263e+04f, 8.82916092e+04f, 8.83145935e+04f +, 8.83375794e+04f, 8.83605668e+04f, 8.83835556e+04f, 8.84065460e+04f +, 8.84295379e+04f, 8.84525312e+04f, 8.84755260e+04f, 8.84985224e+04f +, 8.85215202e+04f, 8.85445195e+04f, 8.85675203e+04f, 8.85905227e+04f +, 8.86135265e+04f, 8.86365318e+04f, 8.86595385e+04f, 8.86825468e+04f +, 8.87055566e+04f, 8.87285679e+04f, 8.87515806e+04f, 8.87745949e+04f +, 8.87976106e+04f, 8.88206279e+04f, 8.88436466e+04f, 8.88666668e+04f +, 8.88896885e+04f, 8.89127117e+04f, 8.89357364e+04f, 8.89587626e+04f +, 8.89817902e+04f, 8.90048194e+04f, 8.90278500e+04f, 8.90508822e+04f +, 8.90739158e+04f, 8.90969509e+04f, 8.91199875e+04f, 8.91430256e+04f +, 8.91660652e+04f, 8.91891063e+04f, 8.92121488e+04f, 8.92351929e+04f +, 8.92582384e+04f, 8.92812854e+04f, 8.93043340e+04f, 8.93273840e+04f +, 8.93504354e+04f, 8.93734884e+04f, 8.93965429e+04f, 8.94195988e+04f +, 8.94426562e+04f, 8.94657152e+04f, 8.94887756e+04f, 8.95118374e+04f +, 8.95349008e+04f, 8.95579657e+04f, 8.95810320e+04f, 8.96040999e+04f +, 8.96271692e+04f, 8.96502400e+04f, 8.96733123e+04f, 8.96963860e+04f +, 8.97194613e+04f, 8.97425380e+04f, 8.97656162e+04f, 8.97886959e+04f +, 8.98117771e+04f, 8.98348598e+04f, 8.98579439e+04f, 8.98810296e+04f +, 8.99041167e+04f, 8.99272053e+04f, 8.99502954e+04f, 8.99733869e+04f +, 8.99964800e+04f, 9.00195745e+04f, 9.00426705e+04f, 9.00657680e+04f +, 9.00888670e+04f, 9.01119674e+04f, 9.01350693e+04f, 9.01581727e+04f +, 9.01812776e+04f, 9.02043840e+04f, 9.02274919e+04f, 9.02506012e+04f +, 9.02737120e+04f, 9.02968243e+04f, 9.03199381e+04f, 9.03430533e+04f +, 9.03661700e+04f, 9.03892882e+04f, 9.04124079e+04f, 9.04355291e+04f +, 9.04586517e+04f, 9.04817758e+04f, 9.05049014e+04f, 9.05280285e+04f +, 9.05511570e+04f, 9.05742871e+04f, 9.05974186e+04f, 9.06205515e+04f +, 9.06436860e+04f, 9.06668219e+04f, 9.06899593e+04f, 9.07130982e+04f +, 9.07362386e+04f, 9.07593804e+04f, 9.07825237e+04f, 9.08056685e+04f +, 9.08288148e+04f, 9.08519625e+04f, 9.08751117e+04f, 9.08982624e+04f +, 9.09214146e+04f, 9.09445682e+04f, 9.09677233e+04f, 9.09908799e+04f +, 9.10140379e+04f, 9.10371974e+04f, 9.10603584e+04f, 9.10835209e+04f +, 9.11066849e+04f, 9.11298503e+04f, 9.11530172e+04f, 9.11761855e+04f +, 9.11993553e+04f, 9.12225267e+04f, 9.12456994e+04f, 9.12688737e+04f +, 9.12920494e+04f, 9.13152266e+04f, 9.13384052e+04f, 9.13615854e+04f +, 9.13847670e+04f, 9.14079500e+04f, 9.14311346e+04f, 9.14543206e+04f +, 9.14775081e+04f, 9.15006970e+04f, 9.15238874e+04f, 9.15470793e+04f +, 9.15702727e+04f, 9.15934675e+04f, 9.16166638e+04f, 9.16398616e+04f +, 9.16630608e+04f, 9.16862615e+04f, 9.17094637e+04f, 9.17326673e+04f +, 9.17558724e+04f, 9.17790790e+04f, 9.18022870e+04f, 9.18254965e+04f +, 9.18487075e+04f, 9.18719199e+04f, 9.18951338e+04f, 9.19183492e+04f +, 9.19415660e+04f, 9.19647843e+04f, 9.19880041e+04f, 9.20112253e+04f +, 9.20344480e+04f, 9.20576722e+04f, 9.20808978e+04f, 9.21041249e+04f +, 9.21273534e+04f, 9.21505835e+04f, 9.21738149e+04f, 9.21970479e+04f +, 9.22202823e+04f, 9.22435182e+04f, 9.22667555e+04f, 9.22899943e+04f +, 9.23132346e+04f, 9.23364763e+04f, 9.23597195e+04f, 9.23829642e+04f +, 9.24062103e+04f, 9.24294578e+04f, 9.24527069e+04f, 9.24759574e+04f +, 9.24992093e+04f, 9.25224628e+04f, 9.25457176e+04f, 9.25689740e+04f +, 9.25922318e+04f, 9.26154911e+04f, 9.26387518e+04f, 9.26620140e+04f +, 9.26852776e+04f, 9.27085427e+04f, 9.27318093e+04f, 9.27550773e+04f +, 9.27783468e+04f, 9.28016178e+04f, 9.28248902e+04f, 9.28481640e+04f +, 9.28714393e+04f, 9.28947161e+04f, 9.29179944e+04f, 9.29412741e+04f +, 9.29645552e+04f, 9.29878378e+04f, 9.30111219e+04f, 9.30344074e+04f +, 9.30576944e+04f, 9.30809828e+04f, 9.31042727e+04f, 9.31275641e+04f +, 9.31508569e+04f, 9.31741512e+04f, 9.31974469e+04f, 9.32207441e+04f +, 9.32440427e+04f, 9.32673428e+04f, 9.32906443e+04f, 9.33139473e+04f +, 9.33372518e+04f, 9.33605577e+04f, 9.33838651e+04f, 9.34071739e+04f +, 9.34304841e+04f, 9.34537959e+04f, 9.34771090e+04f, 9.35004237e+04f +, 9.35237398e+04f, 9.35470573e+04f, 9.35703763e+04f, 9.35936967e+04f +, 9.36170186e+04f, 9.36403420e+04f, 9.36636668e+04f, 9.36869931e+04f +, 9.37103208e+04f, 9.37336499e+04f, 9.37569805e+04f, 9.37803126e+04f +, 9.38036461e+04f, 9.38269811e+04f, 9.38503175e+04f, 9.38736554e+04f +, 9.38969947e+04f, 9.39203355e+04f, 9.39436777e+04f, 9.39670213e+04f +, 9.39903665e+04f, 9.40137130e+04f, 9.40370610e+04f, 9.40604105e+04f +, 9.40837614e+04f, 9.41071138e+04f, 9.41304676e+04f, 9.41538229e+04f +, 9.41771796e+04f, 9.42005377e+04f, 9.42238974e+04f, 9.42472584e+04f +, 9.42706209e+04f, 9.42939849e+04f, 9.43173503e+04f, 9.43407171e+04f +, 9.43640854e+04f, 9.43874551e+04f, 9.44108263e+04f, 9.44341990e+04f +, 9.44575730e+04f, 9.44809486e+04f, 9.45043255e+04f, 9.45277039e+04f +, 9.45510838e+04f, 9.45744651e+04f, 9.45978479e+04f, 9.46212321e+04f +, 9.46446177e+04f, 9.46680048e+04f, 9.46913933e+04f, 9.47147833e+04f +, 9.47381747e+04f, 9.47615676e+04f, 9.47849619e+04f, 9.48083576e+04f +, 9.48317548e+04f, 9.48551535e+04f, 9.48785536e+04f, 9.49019551e+04f +, 9.49253580e+04f, 9.49487625e+04f, 9.49721683e+04f, 9.49955756e+04f +, 9.50189843e+04f, 9.50423945e+04f, 9.50658061e+04f, 9.50892192e+04f +, 9.51126337e+04f, 9.51360496e+04f, 9.51594670e+04f, 9.51828858e+04f +, 9.52063061e+04f, 9.52297278e+04f, 9.52531510e+04f, 9.52765755e+04f +, 9.53000016e+04f, 9.53234290e+04f, 9.53468579e+04f, 9.53702883e+04f +, 9.53937201e+04f, 9.54171533e+04f, 9.54405880e+04f, 9.54640241e+04f +, 9.54874616e+04f, 9.55109006e+04f, 9.55343410e+04f, 9.55577828e+04f +, 9.55812261e+04f, 9.56046709e+04f, 9.56281170e+04f, 9.56515646e+04f +, 9.56750137e+04f, 9.56984641e+04f, 9.57219161e+04f, 9.57453694e+04f +, 9.57688242e+04f, 9.57922804e+04f, 9.58157381e+04f, 9.58391972e+04f +, 9.58626577e+04f, 9.58861197e+04f, 9.59095831e+04f, 9.59330479e+04f +, 9.59565142e+04f, 9.59799819e+04f, 9.60034510e+04f, 9.60269216e+04f +, 9.60503936e+04f, 9.60738670e+04f, 9.60973419e+04f, 9.61208182e+04f +, 9.61442960e+04f, 9.61677751e+04f, 9.61912558e+04f, 9.62147378e+04f +, 9.62382213e+04f, 9.62617062e+04f, 9.62851925e+04f, 9.63086803e+04f +, 9.63321695e+04f, 9.63556601e+04f, 9.63791522e+04f, 9.64026457e+04f +, 9.64261406e+04f, 9.64496370e+04f, 9.64731348e+04f, 9.64966340e+04f +, 9.65201347e+04f, 9.65436368e+04f, 9.65671403e+04f, 9.65906452e+04f +, 9.66141516e+04f, 9.66376594e+04f, 9.66611687e+04f, 9.66846793e+04f +, 9.67081914e+04f, 9.67317050e+04f, 9.67552199e+04f, 9.67787363e+04f +, 9.68022541e+04f, 9.68257733e+04f, 9.68492940e+04f, 9.68728161e+04f +, 9.68963396e+04f, 9.69198646e+04f, 9.69433910e+04f, 9.69669188e+04f +, 9.69904480e+04f, 9.70139787e+04f, 9.70375108e+04f, 9.70610443e+04f +, 9.70845792e+04f, 9.71081156e+04f, 9.71316534e+04f, 9.71551926e+04f +, 9.71787333e+04f, 9.72022753e+04f, 9.72258188e+04f, 9.72493637e+04f +, 9.72729101e+04f, 9.72964579e+04f, 9.73200071e+04f, 9.73435577e+04f +, 9.73671097e+04f, 9.73906632e+04f, 9.74142181e+04f, 9.74377744e+04f +, 9.74613322e+04f, 9.74848913e+04f, 9.75084519e+04f, 9.75320139e+04f +, 9.75555774e+04f, 9.75791422e+04f, 9.76027085e+04f, 9.76262762e+04f +, 9.76498454e+04f, 9.76734159e+04f, 9.76969879e+04f, 9.77205613e+04f +, 9.77441361e+04f, 9.77677123e+04f, 9.77912900e+04f, 9.78148691e+04f +, 9.78384496e+04f, 9.78620315e+04f, 9.78856148e+04f, 9.79091996e+04f +, 9.79327858e+04f, 9.79563734e+04f, 9.79799624e+04f, 9.80035529e+04f +, 9.80271447e+04f, 9.80507380e+04f, 9.80743327e+04f, 9.80979288e+04f +, 9.81215264e+04f, 9.81451253e+04f, 9.81687257e+04f, 9.81923275e+04f +, 9.82159307e+04f, 9.82395354e+04f, 9.82631414e+04f, 9.82867489e+04f +, 9.83103578e+04f, 9.83339681e+04f, 9.83575798e+04f, 9.83811929e+04f +, 9.84048075e+04f, 9.84284235e+04f, 9.84520409e+04f, 9.84756597e+04f +, 9.84992799e+04f, 9.85229015e+04f, 9.85465246e+04f, 9.85701490e+04f +, 9.85937749e+04f, 9.86174022e+04f, 9.86410310e+04f, 9.86646611e+04f +, 9.86882926e+04f, 9.87119256e+04f, 9.87355600e+04f, 9.87591958e+04f +, 9.87828330e+04f, 9.88064716e+04f, 9.88301116e+04f, 9.88537531e+04f +, 9.88773959e+04f, 9.89010402e+04f, 9.89246859e+04f, 9.89483330e+04f +, 9.89719815e+04f, 9.89956314e+04f, 9.90192828e+04f, 9.90429355e+04f +, 9.90665897e+04f, 9.90902452e+04f, 9.91139022e+04f, 9.91375606e+04f +, 9.91612204e+04f, 9.91848817e+04f, 9.92085443e+04f, 9.92322083e+04f +, 9.92558738e+04f, 9.92795407e+04f, 9.93032089e+04f, 9.93268786e+04f +, 9.93505497e+04f, 9.93742222e+04f, 9.93978961e+04f, 9.94215715e+04f +, 9.94452482e+04f, 9.94689263e+04f, 9.94926059e+04f, 9.95162869e+04f +, 9.95399692e+04f, 9.95636530e+04f, 9.95873382e+04f, 9.96110248e+04f +, 9.96347128e+04f, 9.96584022e+04f, 9.96820930e+04f, 9.97057853e+04f +, 9.97294789e+04f, 9.97531739e+04f, 9.97768704e+04f, 9.98005683e+04f +, 9.98242675e+04f, 9.98479682e+04f, 9.98716703e+04f, 9.98953738e+04f +, 9.99190786e+04f, 9.99427849e+04f, 9.99664926e+04f, 9.99902018e+04f +, 1.00013912e+05f, 1.00037624e+05f, 1.00061338e+05f, 1.00085052e+05f +, 1.00108768e+05f, 1.00132486e+05f, 1.00156205e+05f, 1.00179925e+05f +, 1.00203647e+05f, 1.00227370e+05f, 1.00251095e+05f, 1.00274821e+05f +, 1.00298548e+05f, 1.00322277e+05f, 1.00346007e+05f, 1.00369739e+05f +, 1.00393472e+05f, 1.00417206e+05f, 1.00440942e+05f, 1.00464679e+05f +, 1.00488417e+05f, 1.00512157e+05f, 1.00535899e+05f, 1.00559642e+05f +, 1.00583386e+05f, 1.00607131e+05f, 1.00630878e+05f, 1.00654627e+05f +, 1.00678377e+05f, 1.00702128e+05f, 1.00725880e+05f, 1.00749634e+05f +, 1.00773390e+05f, 1.00797147e+05f, 1.00820905e+05f, 1.00844664e+05f +, 1.00868425e+05f, 1.00892188e+05f, 1.00915952e+05f, 1.00939717e+05f +, 1.00963483e+05f, 1.00987251e+05f, 1.01011021e+05f, 1.01034792e+05f +, 1.01058564e+05f, 1.01082337e+05f, 1.01106112e+05f, 1.01129889e+05f +, 1.01153667e+05f, 1.01177446e+05f, 1.01201226e+05f, 1.01225008e+05f +, 1.01248792e+05f, 1.01272576e+05f, 1.01296363e+05f, 1.01320150e+05f +, 1.01343939e+05f, 1.01367730e+05f, 1.01391521e+05f, 1.01415314e+05f +, 1.01439109e+05f, 1.01462905e+05f, 1.01486702e+05f, 1.01510501e+05f +, 1.01534301e+05f, 1.01558103e+05f, 1.01581906e+05f, 1.01605710e+05f +, 1.01629516e+05f, 1.01653323e+05f, 1.01677131e+05f, 1.01700941e+05f +, 1.01724752e+05f, 1.01748565e+05f, 1.01772379e+05f, 1.01796194e+05f +, 1.01820011e+05f, 1.01843830e+05f, 1.01867649e+05f, 1.01891470e+05f +, 1.01915293e+05f, 1.01939116e+05f, 1.01962942e+05f, 1.01986768e+05f +, 1.02010596e+05f, 1.02034426e+05f, 1.02058256e+05f, 1.02082089e+05f +, 1.02105922e+05f, 1.02129757e+05f, 1.02153593e+05f, 1.02177431e+05f +, 1.02201270e+05f, 1.02225111e+05f, 1.02248953e+05f, 1.02272796e+05f +, 1.02296641e+05f, 1.02320487e+05f, 1.02344334e+05f, 1.02368183e+05f +, 1.02392033e+05f, 1.02415885e+05f, 1.02439738e+05f, 1.02463592e+05f +, 1.02487448e+05f, 1.02511305e+05f, 1.02535164e+05f, 1.02559024e+05f +, 1.02582885e+05f, 1.02606748e+05f, 1.02630612e+05f, 1.02654477e+05f +, 1.02678344e+05f, 1.02702213e+05f, 1.02726082e+05f, 1.02749953e+05f +, 1.02773826e+05f, 1.02797700e+05f, 1.02821575e+05f, 1.02845451e+05f +, 1.02869329e+05f, 1.02893209e+05f, 1.02917089e+05f, 1.02940972e+05f +, 1.02964855e+05f, 1.02988740e+05f, 1.03012626e+05f, 1.03036514e+05f +, 1.03060403e+05f, 1.03084293e+05f, 1.03108185e+05f, 1.03132079e+05f +, 1.03155973e+05f, 1.03179869e+05f, 1.03203766e+05f, 1.03227665e+05f +, 1.03251565e+05f, 1.03275467e+05f, 1.03299370e+05f, 1.03323274e+05f +, 1.03347180e+05f, 1.03371087e+05f, 1.03394995e+05f, 1.03418905e+05f +, 1.03442816e+05f, 1.03466729e+05f, 1.03490643e+05f, 1.03514558e+05f +, 1.03538475e+05f, 1.03562393e+05f, 1.03586312e+05f, 1.03610233e+05f +, 1.03634155e+05f, 1.03658079e+05f, 1.03682004e+05f, 1.03705931e+05f +, 1.03729858e+05f, 1.03753787e+05f, 1.03777718e+05f, 1.03801650e+05f +, 1.03825583e+05f, 1.03849518e+05f, 1.03873454e+05f, 1.03897391e+05f +, 1.03921330e+05f, 1.03945270e+05f, 1.03969212e+05f, 1.03993155e+05f +, 1.04017099e+05f, 1.04041045e+05f, 1.04064992e+05f, 1.04088940e+05f +, 1.04112890e+05f, 1.04136841e+05f, 1.04160794e+05f, 1.04184748e+05f +, 1.04208703e+05f, 1.04232660e+05f, 1.04256618e+05f, 1.04280577e+05f +, 1.04304538e+05f, 1.04328501e+05f, 1.04352464e+05f, 1.04376429e+05f +, 1.04400395e+05f, 1.04424363e+05f, 1.04448332e+05f, 1.04472303e+05f +, 1.04496275e+05f, 1.04520248e+05f, 1.04544222e+05f, 1.04568198e+05f +, 1.04592176e+05f, 1.04616154e+05f, 1.04640135e+05f, 1.04664116e+05f +, 1.04688099e+05f, 1.04712083e+05f, 1.04736069e+05f, 1.04760056e+05f +, 1.04784044e+05f, 1.04808034e+05f, 1.04832025e+05f, 1.04856017e+05f +, 1.04880011e+05f, 1.04904006e+05f, 1.04928003e+05f, 1.04952001e+05f +, 1.04976000e+05f, 1.05000001e+05f, 1.05024003e+05f, 1.05048006e+05f +, 1.05072011e+05f, 1.05096017e+05f, 1.05120025e+05f, 1.05144034e+05f +, 1.05168044e+05f, 1.05192056e+05f, 1.05216069e+05f, 1.05240083e+05f +, 1.05264099e+05f, 1.05288116e+05f, 1.05312134e+05f, 1.05336154e+05f +, 1.05360175e+05f, 1.05384198e+05f, 1.05408222e+05f, 1.05432247e+05f +, 1.05456274e+05f, 1.05480302e+05f, 1.05504332e+05f, 1.05528363e+05f +, 1.05552395e+05f, 1.05576428e+05f, 1.05600463e+05f, 1.05624499e+05f +, 1.05648537e+05f, 1.05672576e+05f, 1.05696617e+05f, 1.05720658e+05f +, 1.05744701e+05f, 1.05768746e+05f, 1.05792792e+05f, 1.05816839e+05f +, 1.05840888e+05f, 1.05864938e+05f, 1.05888989e+05f, 1.05913042e+05f +, 1.05937096e+05f, 1.05961151e+05f, 1.05985208e+05f, 1.06009266e+05f +, 1.06033326e+05f, 1.06057387e+05f, 1.06081449e+05f, 1.06105512e+05f +, 1.06129577e+05f, 1.06153644e+05f, 1.06177711e+05f, 1.06201780e+05f +, 1.06225851e+05f, 1.06249923e+05f, 1.06273996e+05f, 1.06298070e+05f +, 1.06322146e+05f, 1.06346224e+05f, 1.06370302e+05f, 1.06394382e+05f +, 1.06418464e+05f, 1.06442546e+05f, 1.06466630e+05f, 1.06490716e+05f +, 1.06514803e+05f, 1.06538891e+05f, 1.06562980e+05f, 1.06587071e+05f +, 1.06611163e+05f, 1.06635257e+05f, 1.06659352e+05f, 1.06683448e+05f +, 1.06707546e+05f, 1.06731645e+05f, 1.06755745e+05f, 1.06779847e+05f +, 1.06803950e+05f, 1.06828055e+05f, 1.06852161e+05f, 1.06876268e+05f +, 1.06900376e+05f, 1.06924486e+05f, 1.06948597e+05f, 1.06972710e+05f +, 1.06996824e+05f, 1.07020939e+05f, 1.07045056e+05f, 1.07069174e+05f +, 1.07093294e+05f, 1.07117414e+05f, 1.07141537e+05f, 1.07165660e+05f +, 1.07189785e+05f, 1.07213911e+05f, 1.07238039e+05f, 1.07262168e+05f +, 1.07286298e+05f, 1.07310430e+05f, 1.07334563e+05f, 1.07358697e+05f +, 1.07382833e+05f, 1.07406970e+05f, 1.07431108e+05f, 1.07455248e+05f +, 1.07479389e+05f, 1.07503532e+05f, 1.07527676e+05f, 1.07551821e+05f +, 1.07575967e+05f, 1.07600115e+05f, 1.07624265e+05f, 1.07648415e+05f +, 1.07672567e+05f, 1.07696720e+05f, 1.07720875e+05f, 1.07745031e+05f +, 1.07769189e+05f, 1.07793347e+05f, 1.07817507e+05f, 1.07841669e+05f +, 1.07865832e+05f, 1.07889996e+05f, 1.07914161e+05f, 1.07938328e+05f +, 1.07962497e+05f, 1.07986666e+05f, 1.08010837e+05f, 1.08035009e+05f +, 1.08059183e+05f, 1.08083358e+05f, 1.08107534e+05f, 1.08131712e+05f +, 1.08155891e+05f, 1.08180071e+05f, 1.08204253e+05f, 1.08228436e+05f +, 1.08252621e+05f, 1.08276807e+05f, 1.08300994e+05f, 1.08325182e+05f +, 1.08349372e+05f, 1.08373563e+05f, 1.08397756e+05f, 1.08421950e+05f +, 1.08446145e+05f, 1.08470342e+05f, 1.08494540e+05f, 1.08518739e+05f +, 1.08542939e+05f, 1.08567141e+05f, 1.08591345e+05f, 1.08615550e+05f +, 1.08639756e+05f, 1.08663963e+05f, 1.08688172e+05f, 1.08712382e+05f +, 1.08736593e+05f, 1.08760806e+05f, 1.08785020e+05f, 1.08809236e+05f +, 1.08833452e+05f, 1.08857671e+05f, 1.08881890e+05f, 1.08906111e+05f +, 1.08930333e+05f, 1.08954557e+05f, 1.08978782e+05f, 1.09003008e+05f +, 1.09027236e+05f, 1.09051465e+05f, 1.09075695e+05f, 1.09099926e+05f +, 1.09124159e+05f, 1.09148394e+05f, 1.09172629e+05f, 1.09196866e+05f +, 1.09221105e+05f, 1.09245345e+05f, 1.09269586e+05f, 1.09293828e+05f +, 1.09318072e+05f, 1.09342317e+05f, 1.09366563e+05f, 1.09390811e+05f +, 1.09415060e+05f, 1.09439311e+05f, 1.09463562e+05f, 1.09487816e+05f +, 1.09512070e+05f, 1.09536326e+05f, 1.09560583e+05f, 1.09584842e+05f +, 1.09609101e+05f, 1.09633363e+05f, 1.09657625e+05f, 1.09681889e+05f +, 1.09706154e+05f, 1.09730421e+05f, 1.09754689e+05f, 1.09778958e+05f +, 1.09803229e+05f, 1.09827501e+05f, 1.09851774e+05f, 1.09876049e+05f +, 1.09900325e+05f, 1.09924602e+05f, 1.09948880e+05f, 1.09973160e+05f +, 1.09997442e+05f, 1.10021724e+05f, 1.10046008e+05f, 1.10070294e+05f +, 1.10094580e+05f, 1.10118869e+05f, 1.10143158e+05f, 1.10167449e+05f +, 1.10191741e+05f, 1.10216034e+05f, 1.10240329e+05f, 1.10264625e+05f +, 1.10288922e+05f, 1.10313221e+05f, 1.10337521e+05f, 1.10361822e+05f +, 1.10386125e+05f, 1.10410429e+05f, 1.10434735e+05f, 1.10459041e+05f +, 1.10483350e+05f, 1.10507659e+05f, 1.10531970e+05f, 1.10556282e+05f +, 1.10580595e+05f, 1.10604910e+05f, 1.10629226e+05f, 1.10653544e+05f +, 1.10677862e+05f, 1.10702183e+05f, 1.10726504e+05f, 1.10750827e+05f +, 1.10775151e+05f, 1.10799476e+05f, 1.10823803e+05f, 1.10848131e+05f +, 1.10872461e+05f, 1.10896792e+05f, 1.10921124e+05f, 1.10945457e+05f +, 1.10969792e+05f, 1.10994128e+05f, 1.11018466e+05f, 1.11042805e+05f +, 1.11067145e+05f, 1.11091486e+05f, 1.11115829e+05f, 1.11140173e+05f +, 1.11164519e+05f, 1.11188865e+05f, 1.11213214e+05f, 1.11237563e+05f +, 1.11261914e+05f, 1.11286266e+05f, 1.11310620e+05f, 1.11334974e+05f +, 1.11359330e+05f, 1.11383688e+05f, 1.11408047e+05f, 1.11432407e+05f +, 1.11456768e+05f, 1.11481131e+05f, 1.11505495e+05f, 1.11529861e+05f +, 1.11554228e+05f, 1.11578596e+05f, 1.11602965e+05f, 1.11627336e+05f +, 1.11651708e+05f, 1.11676081e+05f, 1.11700456e+05f, 1.11724832e+05f +, 1.11749210e+05f, 1.11773589e+05f, 1.11797969e+05f, 1.11822350e+05f +, 1.11846733e+05f, 1.11871117e+05f, 1.11895502e+05f, 1.11919889e+05f +, 1.11944277e+05f, 1.11968667e+05f, 1.11993057e+05f, 1.12017449e+05f +, 1.12041843e+05f, 1.12066237e+05f, 1.12090633e+05f, 1.12115031e+05f +, 1.12139429e+05f, 1.12163829e+05f, 1.12188231e+05f, 1.12212633e+05f +, 1.12237037e+05f, 1.12261443e+05f, 1.12285849e+05f, 1.12310257e+05f +, 1.12334667e+05f, 1.12359077e+05f, 1.12383489e+05f, 1.12407903e+05f +, 1.12432317e+05f, 1.12456733e+05f, 1.12481150e+05f, 1.12505569e+05f +, 1.12529989e+05f, 1.12554410e+05f, 1.12578833e+05f, 1.12603257e+05f +, 1.12627682e+05f, 1.12652108e+05f, 1.12676536e+05f, 1.12700965e+05f +, 1.12725396e+05f, 1.12749828e+05f, 1.12774261e+05f, 1.12798695e+05f +, 1.12823131e+05f, 1.12847568e+05f, 1.12872007e+05f, 1.12896446e+05f +, 1.12920888e+05f, 1.12945330e+05f, 1.12969774e+05f, 1.12994219e+05f +, 1.13018665e+05f, 1.13043113e+05f, 1.13067562e+05f, 1.13092012e+05f +, 1.13116464e+05f, 1.13140917e+05f, 1.13165371e+05f, 1.13189827e+05f +, 1.13214284e+05f, 1.13238742e+05f, 1.13263202e+05f, 1.13287662e+05f +, 1.13312125e+05f, 1.13336588e+05f, 1.13361053e+05f, 1.13385519e+05f +, 1.13409987e+05f, 1.13434456e+05f, 1.13458926e+05f, 1.13483397e+05f +, 1.13507870e+05f, 1.13532344e+05f, 1.13556820e+05f, 1.13581296e+05f +, 1.13605774e+05f, 1.13630254e+05f, 1.13654735e+05f, 1.13679217e+05f +, 1.13703700e+05f, 1.13728185e+05f, 1.13752671e+05f, 1.13777158e+05f +, 1.13801646e+05f, 1.13826136e+05f, 1.13850628e+05f, 1.13875120e+05f +, 1.13899614e+05f, 1.13924109e+05f, 1.13948606e+05f, 1.13973104e+05f +, 1.13997603e+05f, 1.14022103e+05f, 1.14046605e+05f, 1.14071108e+05f +, 1.14095613e+05f, 1.14120118e+05f, 1.14144625e+05f, 1.14169134e+05f +, 1.14193643e+05f, 1.14218154e+05f, 1.14242667e+05f, 1.14267180e+05f +, 1.14291695e+05f, 1.14316211e+05f, 1.14340729e+05f, 1.14365248e+05f +, 1.14389768e+05f, 1.14414290e+05f, 1.14438812e+05f, 1.14463337e+05f +, 1.14487862e+05f, 1.14512389e+05f, 1.14536917e+05f, 1.14561446e+05f +, 1.14585977e+05f, 1.14610509e+05f, 1.14635042e+05f, 1.14659577e+05f +, 1.14684113e+05f, 1.14708650e+05f, 1.14733189e+05f, 1.14757729e+05f +, 1.14782270e+05f, 1.14806812e+05f, 1.14831356e+05f, 1.14855901e+05f +, 1.14880448e+05f, 1.14904996e+05f, 1.14929545e+05f, 1.14954095e+05f +, 1.14978647e+05f, 1.15003200e+05f, 1.15027754e+05f, 1.15052310e+05f +, 1.15076867e+05f, 1.15101425e+05f, 1.15125984e+05f, 1.15150545e+05f +, 1.15175107e+05f, 1.15199671e+05f, 1.15224236e+05f, 1.15248802e+05f +, 1.15273369e+05f, 1.15297938e+05f, 1.15322508e+05f, 1.15347079e+05f +, 1.15371652e+05f, 1.15396226e+05f, 1.15420801e+05f, 1.15445378e+05f +, 1.15469956e+05f, 1.15494535e+05f, 1.15519115e+05f, 1.15543697e+05f +, 1.15568280e+05f, 1.15592865e+05f, 1.15617450e+05f, 1.15642037e+05f +, 1.15666626e+05f, 1.15691215e+05f, 1.15715806e+05f, 1.15740399e+05f +, 1.15764992e+05f, 1.15789587e+05f, 1.15814183e+05f, 1.15838781e+05f +, 1.15863379e+05f, 1.15887980e+05f, 1.15912581e+05f, 1.15937184e+05f +, 1.15961788e+05f, 1.15986393e+05f, 1.16011000e+05f, 1.16035608e+05f +, 1.16060217e+05f, 1.16084827e+05f, 1.16109439e+05f, 1.16134052e+05f +, 1.16158667e+05f, 1.16183282e+05f, 1.16207900e+05f, 1.16232518e+05f +, 1.16257138e+05f, 1.16281759e+05f, 1.16306381e+05f, 1.16331004e+05f +, 1.16355629e+05f, 1.16380255e+05f, 1.16404883e+05f, 1.16429512e+05f +, 1.16454142e+05f, 1.16478773e+05f, 1.16503406e+05f, 1.16528040e+05f +, 1.16552675e+05f, 1.16577312e+05f, 1.16601950e+05f, 1.16626589e+05f +, 1.16651229e+05f, 1.16675871e+05f, 1.16700514e+05f, 1.16725159e+05f +, 1.16749804e+05f, 1.16774451e+05f, 1.16799100e+05f, 1.16823749e+05f +, 1.16848400e+05f, 1.16873052e+05f, 1.16897706e+05f, 1.16922361e+05f +, 1.16947017e+05f, 1.16971674e+05f, 1.16996333e+05f, 1.17020993e+05f +, 1.17045654e+05f, 1.17070317e+05f, 1.17094981e+05f, 1.17119646e+05f +, 1.17144313e+05f, 1.17168980e+05f, 1.17193649e+05f, 1.17218320e+05f +, 1.17242992e+05f, 1.17267665e+05f, 1.17292339e+05f, 1.17317014e+05f +, 1.17341691e+05f, 1.17366370e+05f, 1.17391049e+05f, 1.17415730e+05f +, 1.17440412e+05f, 1.17465095e+05f, 1.17489780e+05f, 1.17514466e+05f +, 1.17539153e+05f, 1.17563842e+05f, 1.17588532e+05f, 1.17613223e+05f +, 1.17637915e+05f, 1.17662609e+05f, 1.17687304e+05f, 1.17712000e+05f +, 1.17736698e+05f, 1.17761397e+05f, 1.17786097e+05f, 1.17810799e+05f +, 1.17835501e+05f, 1.17860206e+05f, 1.17884911e+05f, 1.17909618e+05f +, 1.17934326e+05f, 1.17959035e+05f, 1.17983745e+05f, 1.18008457e+05f +, 1.18033171e+05f, 1.18057885e+05f, 1.18082601e+05f, 1.18107318e+05f +, 1.18132036e+05f, 1.18156756e+05f, 1.18181477e+05f, 1.18206199e+05f +, 1.18230922e+05f, 1.18255647e+05f, 1.18280373e+05f, 1.18305101e+05f +, 1.18329829e+05f, 1.18354559e+05f, 1.18379291e+05f, 1.18404023e+05f +, 1.18428757e+05f, 1.18453492e+05f, 1.18478229e+05f, 1.18502966e+05f +, 1.18527705e+05f, 1.18552446e+05f, 1.18577187e+05f, 1.18601930e+05f +, 1.18626674e+05f, 1.18651420e+05f, 1.18676167e+05f, 1.18700915e+05f +, 1.18725664e+05f, 1.18750415e+05f, 1.18775166e+05f, 1.18799920e+05f +, 1.18824674e+05f, 1.18849430e+05f, 1.18874187e+05f, 1.18898945e+05f +, 1.18923705e+05f, 1.18948466e+05f, 1.18973228e+05f, 1.18997992e+05f +, 1.19022757e+05f, 1.19047523e+05f, 1.19072290e+05f, 1.19097059e+05f +, 1.19121829e+05f, 1.19146600e+05f, 1.19171372e+05f, 1.19196146e+05f +, 1.19220921e+05f, 1.19245698e+05f, 1.19270475e+05f, 1.19295254e+05f +, 1.19320035e+05f, 1.19344816e+05f, 1.19369599e+05f, 1.19394383e+05f +, 1.19419169e+05f, 1.19443955e+05f, 1.19468743e+05f, 1.19493532e+05f +, 1.19518323e+05f, 1.19543115e+05f, 1.19567908e+05f, 1.19592702e+05f +, 1.19617498e+05f, 1.19642295e+05f, 1.19667093e+05f, 1.19691893e+05f +, 1.19716694e+05f, 1.19741496e+05f, 1.19766299e+05f, 1.19791104e+05f +, 1.19815910e+05f, 1.19840717e+05f, 1.19865526e+05f, 1.19890335e+05f +, 1.19915146e+05f, 1.19939959e+05f, 1.19964773e+05f, 1.19989587e+05f +, 1.20014404e+05f, 1.20039221e+05f, 1.20064040e+05f, 1.20088860e+05f +, 1.20113681e+05f, 1.20138504e+05f, 1.20163328e+05f, 1.20188153e+05f +, 1.20212980e+05f, 1.20237808e+05f, 1.20262637e+05f, 1.20287467e+05f +, 1.20312299e+05f, 1.20337131e+05f, 1.20361966e+05f, 1.20386801e+05f +, 1.20411638e+05f, 1.20436476e+05f, 1.20461315e+05f, 1.20486156e+05f +, 1.20510998e+05f, 1.20535841e+05f, 1.20560685e+05f, 1.20585531e+05f +, 1.20610378e+05f, 1.20635226e+05f, 1.20660076e+05f, 1.20684927e+05f +, 1.20709779e+05f, 1.20734632e+05f, 1.20759487e+05f, 1.20784343e+05f +, 1.20809200e+05f, 1.20834058e+05f, 1.20858918e+05f, 1.20883779e+05f +, 1.20908641e+05f, 1.20933505e+05f, 1.20958370e+05f, 1.20983236e+05f +, 1.21008104e+05f, 1.21032972e+05f, 1.21057842e+05f, 1.21082714e+05f +, 1.21107586e+05f, 1.21132460e+05f, 1.21157335e+05f, 1.21182212e+05f +, 1.21207089e+05f, 1.21231968e+05f, 1.21256848e+05f, 1.21281730e+05f +, 1.21306613e+05f, 1.21331497e+05f, 1.21356382e+05f, 1.21381269e+05f +, 1.21406156e+05f, 1.21431046e+05f, 1.21455936e+05f, 1.21480828e+05f +, 1.21505721e+05f, 1.21530615e+05f, 1.21555510e+05f, 1.21580407e+05f +, 1.21605305e+05f, 1.21630205e+05f, 1.21655105e+05f, 1.21680007e+05f +, 1.21704910e+05f, 1.21729815e+05f, 1.21754721e+05f, 1.21779628e+05f +, 1.21804536e+05f, 1.21829445e+05f, 1.21854356e+05f, 1.21879268e+05f +, 1.21904182e+05f, 1.21929096e+05f, 1.21954012e+05f, 1.21978929e+05f +, 1.22003848e+05f, 1.22028767e+05f, 1.22053688e+05f, 1.22078611e+05f +, 1.22103534e+05f, 1.22128459e+05f, 1.22153385e+05f, 1.22178313e+05f +, 1.22203241e+05f, 1.22228171e+05f, 1.22253102e+05f, 1.22278035e+05f +, 1.22302968e+05f, 1.22327903e+05f, 1.22352840e+05f, 1.22377777e+05f +, 1.22402716e+05f, 1.22427656e+05f, 1.22452597e+05f, 1.22477540e+05f +, 1.22502484e+05f, 1.22527429e+05f, 1.22552375e+05f, 1.22577323e+05f +, 1.22602272e+05f, 1.22627222e+05f, 1.22652174e+05f, 1.22677126e+05f +, 1.22702080e+05f, 1.22727036e+05f, 1.22751992e+05f, 1.22776950e+05f +, 1.22801909e+05f, 1.22826870e+05f, 1.22851831e+05f, 1.22876794e+05f +, 1.22901758e+05f, 1.22926724e+05f, 1.22951691e+05f, 1.22976659e+05f +, 1.23001628e+05f, 1.23026598e+05f, 1.23051570e+05f, 1.23076543e+05f +, 1.23101517e+05f, 1.23126493e+05f, 1.23151470e+05f, 1.23176448e+05f +, 1.23201427e+05f, 1.23226408e+05f, 1.23251390e+05f, 1.23276373e+05f +, 1.23301358e+05f, 1.23326343e+05f, 1.23351330e+05f, 1.23376318e+05f +, 1.23401308e+05f, 1.23426299e+05f, 1.23451291e+05f, 1.23476284e+05f +, 1.23501279e+05f, 1.23526274e+05f, 1.23551272e+05f, 1.23576270e+05f +, 1.23601270e+05f, 1.23626270e+05f, 1.23651273e+05f, 1.23676276e+05f +, 1.23701281e+05f, 1.23726287e+05f, 1.23751294e+05f, 1.23776302e+05f +, 1.23801312e+05f, 1.23826323e+05f, 1.23851335e+05f, 1.23876349e+05f +, 1.23901364e+05f, 1.23926380e+05f, 1.23951397e+05f, 1.23976416e+05f +, 1.24001435e+05f, 1.24026456e+05f, 1.24051479e+05f, 1.24076502e+05f +, 1.24101527e+05f, 1.24126554e+05f, 1.24151581e+05f, 1.24176610e+05f +, 1.24201640e+05f, 1.24226671e+05f, 1.24251703e+05f, 1.24276737e+05f +, 1.24301772e+05f, 1.24326808e+05f, 1.24351846e+05f, 1.24376884e+05f +, 1.24401924e+05f, 1.24426966e+05f, 1.24452008e+05f, 1.24477052e+05f +, 1.24502097e+05f, 1.24527143e+05f, 1.24552191e+05f, 1.24577240e+05f +, 1.24602290e+05f, 1.24627341e+05f, 1.24652394e+05f, 1.24677448e+05f +, 1.24702503e+05f, 1.24727559e+05f, 1.24752617e+05f, 1.24777676e+05f +, 1.24802736e+05f, 1.24827797e+05f, 1.24852860e+05f, 1.24877924e+05f +, 1.24902989e+05f, 1.24928056e+05f, 1.24953123e+05f, 1.24978192e+05f +, 1.25003262e+05f, 1.25028334e+05f, 1.25053407e+05f, 1.25078481e+05f +, 1.25103556e+05f, 1.25128632e+05f, 1.25153710e+05f, 1.25178789e+05f +, 1.25203869e+05f, 1.25228951e+05f, 1.25254034e+05f, 1.25279118e+05f +, 1.25304203e+05f, 1.25329290e+05f, 1.25354377e+05f, 1.25379467e+05f +, 1.25404557e+05f, 1.25429648e+05f, 1.25454741e+05f, 1.25479835e+05f +, 1.25504931e+05f, 1.25530027e+05f, 1.25555125e+05f, 1.25580224e+05f +, 1.25605325e+05f, 1.25630426e+05f, 1.25655529e+05f, 1.25680633e+05f +, 1.25705739e+05f, 1.25730845e+05f, 1.25755953e+05f, 1.25781062e+05f +, 1.25806173e+05f, 1.25831284e+05f, 1.25856397e+05f, 1.25881511e+05f +, 1.25906627e+05f, 1.25931743e+05f, 1.25956861e+05f, 1.25981980e+05f +, 1.26007101e+05f, 1.26032222e+05f, 1.26057345e+05f, 1.26082470e+05f +, 1.26107595e+05f, 1.26132722e+05f, 1.26157850e+05f, 1.26182979e+05f +, 1.26208109e+05f, 1.26233241e+05f, 1.26258374e+05f, 1.26283508e+05f +, 1.26308643e+05f, 1.26333780e+05f, 1.26358918e+05f, 1.26384057e+05f +, 1.26409197e+05f, 1.26434339e+05f, 1.26459482e+05f, 1.26484626e+05f +, 1.26509772e+05f, 1.26534918e+05f, 1.26560066e+05f, 1.26585215e+05f +, 1.26610366e+05f, 1.26635518e+05f, 1.26660670e+05f, 1.26685825e+05f +, 1.26710980e+05f, 1.26736137e+05f, 1.26761295e+05f, 1.26786454e+05f +, 1.26811614e+05f, 1.26836776e+05f, 1.26861939e+05f, 1.26887103e+05f +, 1.26912268e+05f, 1.26937435e+05f, 1.26962603e+05f, 1.26987772e+05f +, 1.27012942e+05f, 1.27038114e+05f, 1.27063287e+05f, 1.27088461e+05f +, 1.27113636e+05f, 1.27138813e+05f, 1.27163991e+05f, 1.27189170e+05f +, 1.27214350e+05f, 1.27239532e+05f, 1.27264715e+05f, 1.27289899e+05f +, 1.27315084e+05f, 1.27340271e+05f, 1.27365459e+05f, 1.27390648e+05f +, 1.27415838e+05f, 1.27441030e+05f, 1.27466223e+05f, 1.27491417e+05f +, 1.27516612e+05f, 1.27541809e+05f, 1.27567006e+05f, 1.27592205e+05f +, 1.27617406e+05f, 1.27642607e+05f, 1.27667810e+05f, 1.27693014e+05f +, 1.27718219e+05f, 1.27743426e+05f, 1.27768633e+05f, 1.27793842e+05f +, 1.27819053e+05f, 1.27844264e+05f, 1.27869477e+05f, 1.27894691e+05f +, 1.27919906e+05f, 1.27945123e+05f, 1.27970340e+05f, 1.27995559e+05f +, 1.28020779e+05f, 1.28046001e+05f, 1.28071223e+05f, 1.28096447e+05f +, 1.28121672e+05f, 1.28146899e+05f, 1.28172127e+05f, 1.28197355e+05f +, 1.28222585e+05f, 1.28247817e+05f, 1.28273049e+05f, 1.28298283e+05f +, 1.28323518e+05f, 1.28348755e+05f, 1.28373992e+05f, 1.28399231e+05f +, 1.28424471e+05f, 1.28449712e+05f, 1.28474955e+05f, 1.28500199e+05f +, 1.28525444e+05f, 1.28550690e+05f, 1.28575937e+05f, 1.28601186e+05f +, 1.28626436e+05f, 1.28651687e+05f, 1.28676940e+05f, 1.28702193e+05f +, 1.28727448e+05f, 1.28752704e+05f, 1.28777962e+05f, 1.28803220e+05f +, 1.28828480e+05f, 1.28853741e+05f, 1.28879004e+05f, 1.28904267e+05f +, 1.28929532e+05f, 1.28954798e+05f, 1.28980065e+05f, 1.29005334e+05f +, 1.29030604e+05f, 1.29055875e+05f, 1.29081147e+05f, 1.29106420e+05f +, 1.29131695e+05f, 1.29156971e+05f, 1.29182248e+05f, 1.29207527e+05f +, 1.29232806e+05f, 1.29258087e+05f, 1.29283369e+05f, 1.29308653e+05f +, 1.29333937e+05f, 1.29359223e+05f, 1.29384510e+05f, 1.29409799e+05f +, 1.29435088e+05f, 1.29460379e+05f, 1.29485671e+05f, 1.29510964e+05f +, 1.29536259e+05f, 1.29561555e+05f, 1.29586852e+05f, 1.29612150e+05f +, 1.29637449e+05f, 1.29662750e+05f, 1.29688052e+05f, 1.29713355e+05f +, 1.29738659e+05f, 1.29763965e+05f, 1.29789272e+05f, 1.29814580e+05f +, 1.29839889e+05f, 1.29865200e+05f, 1.29890511e+05f, 1.29915824e+05f +, 1.29941139e+05f, 1.29966454e+05f, 1.29991771e+05f, 1.30017089e+05f +, 1.30042408e+05f, 1.30067728e+05f, 1.30093050e+05f, 1.30118373e+05f +, 1.30143697e+05f, 1.30169022e+05f, 1.30194349e+05f, 1.30219677e+05f +, 1.30245006e+05f, 1.30270336e+05f, 1.30295667e+05f, 1.30321000e+05f +, 1.30346334e+05f, 1.30371669e+05f, 1.30397006e+05f, 1.30422343e+05f +, 1.30447682e+05f, 1.30473022e+05f, 1.30498363e+05f, 1.30523706e+05f +, 1.30549050e+05f, 1.30574395e+05f, 1.30599741e+05f, 1.30625089e+05f +, 1.30650437e+05f, 1.30675787e+05f, 1.30701138e+05f, 1.30726491e+05f +, 1.30751844e+05f, 1.30777199e+05f, 1.30802555e+05f, 1.30827913e+05f +, 1.30853271e+05f, 1.30878631e+05f, 1.30903992e+05f, 1.30929354e+05f +, 1.30954718e+05f, 1.30980082e+05f, 1.31005448e+05f, 1.31030816e+05f +, 1.31056184e+05f, 1.31081553e+05f, 1.31106924e+05f, 1.31132296e+05f +, 1.31157670e+05f, 1.31183044e+05f, 1.31208420e+05f, 1.31233797e+05f +, 1.31259175e+05f, 1.31284554e+05f, 1.31309935e+05f, 1.31335317e+05f +, 1.31360700e+05f, 1.31386084e+05f, 1.31411470e+05f, 1.31436857e+05f +, 1.31462245e+05f, 1.31487634e+05f, 1.31513024e+05f, 1.31538416e+05f +, 1.31563809e+05f, 1.31589203e+05f, 1.31614598e+05f, 1.31639995e+05f +, 1.31665393e+05f, 1.31690792e+05f, 1.31716192e+05f, 1.31741594e+05f +, 1.31766996e+05f, 1.31792400e+05f, 1.31817805e+05f, 1.31843212e+05f +, 1.31868619e+05f, 1.31894028e+05f, 1.31919438e+05f, 1.31944850e+05f +, 1.31970262e+05f, 1.31995676e+05f, 1.32021091e+05f, 1.32046507e+05f +, 1.32071924e+05f, 1.32097343e+05f, 1.32122763e+05f, 1.32148184e+05f +, 1.32173606e+05f, 1.32199030e+05f, 1.32224454e+05f, 1.32249880e+05f +, 1.32275307e+05f, 1.32300736e+05f, 1.32326165e+05f, 1.32351596e+05f +, 1.32377028e+05f, 1.32402462e+05f, 1.32427896e+05f, 1.32453332e+05f +, 1.32478769e+05f, 1.32504207e+05f, 1.32529646e+05f, 1.32555087e+05f +, 1.32580529e+05f, 1.32605972e+05f, 1.32631416e+05f, 1.32656861e+05f +, 1.32682308e+05f, 1.32707756e+05f, 1.32733205e+05f, 1.32758656e+05f +, 1.32784107e+05f, 1.32809560e+05f, 1.32835014e+05f, 1.32860469e+05f +, 1.32885926e+05f, 1.32911383e+05f, 1.32936842e+05f, 1.32962302e+05f +, 1.32987764e+05f, 1.33013226e+05f, 1.33038690e+05f, 1.33064155e+05f +, 1.33089621e+05f, 1.33115089e+05f, 1.33140557e+05f, 1.33166027e+05f +, 1.33191498e+05f, 1.33216971e+05f, 1.33242444e+05f, 1.33267919e+05f +, 1.33293395e+05f, 1.33318872e+05f, 1.33344350e+05f, 1.33369830e+05f +, 1.33395311e+05f, 1.33420793e+05f, 1.33446276e+05f, 1.33471761e+05f +, 1.33497246e+05f, 1.33522733e+05f, 1.33548221e+05f, 1.33573711e+05f +, 1.33599201e+05f, 1.33624693e+05f, 1.33650186e+05f, 1.33675680e+05f +, 1.33701176e+05f, 1.33726672e+05f, 1.33752170e+05f, 1.33777669e+05f +, 1.33803170e+05f, 1.33828671e+05f, 1.33854174e+05f, 1.33879678e+05f +, 1.33905183e+05f, 1.33930689e+05f, 1.33956197e+05f, 1.33981706e+05f +, 1.34007216e+05f, 1.34032727e+05f, 1.34058239e+05f, 1.34083753e+05f +, 1.34109268e+05f, 1.34134784e+05f, 1.34160301e+05f, 1.34185819e+05f +, 1.34211339e+05f, 1.34236860e+05f, 1.34262382e+05f, 1.34287906e+05f +, 1.34313430e+05f, 1.34338956e+05f, 1.34364483e+05f, 1.34390011e+05f +, 1.34415541e+05f, 1.34441071e+05f, 1.34466603e+05f, 1.34492136e+05f +, 1.34517670e+05f, 1.34543206e+05f, 1.34568742e+05f, 1.34594280e+05f +, 1.34619819e+05f, 1.34645360e+05f, 1.34670901e+05f, 1.34696444e+05f +, 1.34721988e+05f, 1.34747533e+05f, 1.34773080e+05f, 1.34798627e+05f +, 1.34824176e+05f, 1.34849726e+05f, 1.34875277e+05f, 1.34900830e+05f +, 1.34926383e+05f, 1.34951938e+05f, 1.34977494e+05f, 1.35003051e+05f +, 1.35028610e+05f, 1.35054169e+05f, 1.35079730e+05f, 1.35105292e+05f +, 1.35130856e+05f, 1.35156420e+05f, 1.35181986e+05f, 1.35207553e+05f +, 1.35233121e+05f, 1.35258690e+05f, 1.35284261e+05f, 1.35309833e+05f +, 1.35335406e+05f, 1.35360980e+05f, 1.35386555e+05f, 1.35412132e+05f +, 1.35437710e+05f, 1.35463289e+05f, 1.35488869e+05f, 1.35514450e+05f +, 1.35540033e+05f, 1.35565617e+05f, 1.35591202e+05f, 1.35616788e+05f +, 1.35642376e+05f, 1.35667964e+05f, 1.35693554e+05f, 1.35719145e+05f +, 1.35744738e+05f, 1.35770331e+05f, 1.35795926e+05f, 1.35821522e+05f +, 1.35847119e+05f, 1.35872717e+05f, 1.35898317e+05f, 1.35923918e+05f +, 1.35949519e+05f, 1.35975123e+05f, 1.36000727e+05f, 1.36026333e+05f +, 1.36051939e+05f, 1.36077547e+05f, 1.36103156e+05f, 1.36128767e+05f +, 1.36154378e+05f, 1.36179991e+05f, 1.36205605e+05f, 1.36231220e+05f +, 1.36256837e+05f, 1.36282454e+05f, 1.36308073e+05f, 1.36333693e+05f +, 1.36359314e+05f, 1.36384937e+05f, 1.36410560e+05f, 1.36436185e+05f +, 1.36461811e+05f, 1.36487439e+05f, 1.36513067e+05f, 1.36538697e+05f +, 1.36564327e+05f, 1.36589960e+05f, 1.36615593e+05f, 1.36641227e+05f +, 1.36666863e+05f, 1.36692500e+05f, 1.36718138e+05f, 1.36743777e+05f +, 1.36769418e+05f, 1.36795059e+05f, 1.36820702e+05f, 1.36846346e+05f +, 1.36871991e+05f, 1.36897638e+05f, 1.36923285e+05f, 1.36948934e+05f +, 1.36974584e+05f, 1.37000236e+05f, 1.37025888e+05f, 1.37051542e+05f +, 1.37077197e+05f, 1.37102853e+05f, 1.37128510e+05f, 1.37154169e+05f +, 1.37179828e+05f, 1.37205489e+05f, 1.37231151e+05f, 1.37256814e+05f +, 1.37282479e+05f, 1.37308145e+05f, 1.37333811e+05f, 1.37359480e+05f +, 1.37385149e+05f, 1.37410819e+05f, 1.37436491e+05f, 1.37462164e+05f +, 1.37487838e+05f, 1.37513513e+05f, 1.37539190e+05f, 1.37564867e+05f +, 1.37590546e+05f, 1.37616226e+05f, 1.37641907e+05f, 1.37667590e+05f +, 1.37693274e+05f, 1.37718958e+05f, 1.37744644e+05f, 1.37770332e+05f +, 1.37796020e+05f, 1.37821710e+05f, 1.37847401e+05f, 1.37873093e+05f +, 1.37898786e+05f, 1.37924480e+05f, 1.37950176e+05f, 1.37975873e+05f +, 1.38001571e+05f, 1.38027270e+05f, 1.38052970e+05f, 1.38078672e+05f +, 1.38104375e+05f, 1.38130079e+05f, 1.38155784e+05f, 1.38181490e+05f +, 1.38207198e+05f, 1.38232907e+05f, 1.38258617e+05f, 1.38284328e+05f +, 1.38310040e+05f, 1.38335754e+05f, 1.38361469e+05f, 1.38387185e+05f +, 1.38412902e+05f, 1.38438620e+05f, 1.38464340e+05f, 1.38490060e+05f +, 1.38515782e+05f, 1.38541505e+05f, 1.38567230e+05f, 1.38592955e+05f +, 1.38618682e+05f, 1.38644410e+05f, 1.38670139e+05f, 1.38695869e+05f +, 1.38721601e+05f, 1.38747333e+05f, 1.38773067e+05f, 1.38798802e+05f +, 1.38824538e+05f, 1.38850276e+05f, 1.38876015e+05f, 1.38901754e+05f +, 1.38927495e+05f, 1.38953238e+05f, 1.38978981e+05f, 1.39004726e+05f +, 1.39030471e+05f, 1.39056218e+05f, 1.39081967e+05f, 1.39107716e+05f +, 1.39133466e+05f, 1.39159218e+05f, 1.39184971e+05f, 1.39210725e+05f +, 1.39236481e+05f, 1.39262237e+05f, 1.39287995e+05f, 1.39313754e+05f +, 1.39339514e+05f, 1.39365275e+05f, 1.39391038e+05f, 1.39416801e+05f +, 1.39442566e+05f, 1.39468332e+05f, 1.39494099e+05f, 1.39519868e+05f +, 1.39545637e+05f, 1.39571408e+05f, 1.39597180e+05f, 1.39622953e+05f +, 1.39648728e+05f, 1.39674503e+05f, 1.39700280e+05f, 1.39726058e+05f +, 1.39751837e+05f, 1.39777617e+05f, 1.39803399e+05f, 1.39829181e+05f +, 1.39854965e+05f, 1.39880750e+05f, 1.39906537e+05f, 1.39932324e+05f +, 1.39958113e+05f, 1.39983903e+05f, 1.40009694e+05f, 1.40035486e+05f +, 1.40061279e+05f, 1.40087074e+05f, 1.40112869e+05f, 1.40138666e+05f +, 1.40164465e+05f, 1.40190264e+05f, 1.40216064e+05f, 1.40241866e+05f +, 1.40267669e+05f, 1.40293473e+05f, 1.40319278e+05f, 1.40345085e+05f +, 1.40370892e+05f, 1.40396701e+05f, 1.40422511e+05f, 1.40448322e+05f +, 1.40474135e+05f, 1.40499948e+05f, 1.40525763e+05f, 1.40551579e+05f +, 1.40577396e+05f, 1.40603214e+05f, 1.40629034e+05f, 1.40654854e+05f +, 1.40680676e+05f, 1.40706499e+05f, 1.40732324e+05f, 1.40758149e+05f +, 1.40783976e+05f, 1.40809803e+05f, 1.40835632e+05f, 1.40861462e+05f +, 1.40887294e+05f, 1.40913126e+05f, 1.40938960e+05f, 1.40964795e+05f +, 1.40990631e+05f, 1.41016468e+05f, 1.41042307e+05f, 1.41068146e+05f +, 1.41093987e+05f, 1.41119829e+05f, 1.41145672e+05f, 1.41171516e+05f +, 1.41197362e+05f, 1.41223209e+05f, 1.41249057e+05f, 1.41274906e+05f +, 1.41300756e+05f, 1.41326607e+05f, 1.41352460e+05f, 1.41378314e+05f +, 1.41404169e+05f, 1.41430025e+05f, 1.41455882e+05f, 1.41481741e+05f +, 1.41507601e+05f, 1.41533461e+05f, 1.41559324e+05f, 1.41585187e+05f +, 1.41611051e+05f, 1.41636917e+05f, 1.41662784e+05f, 1.41688652e+05f +, 1.41714521e+05f, 1.41740391e+05f, 1.41766263e+05f, 1.41792135e+05f +, 1.41818009e+05f, 1.41843884e+05f, 1.41869761e+05f, 1.41895638e+05f +, 1.41921517e+05f, 1.41947396e+05f, 1.41973277e+05f, 1.41999160e+05f +, 1.42025043e+05f, 1.42050927e+05f, 1.42076813e+05f, 1.42102700e+05f +, 1.42128588e+05f, 1.42154477e+05f, 1.42180368e+05f, 1.42206259e+05f +, 1.42232152e+05f, 1.42258046e+05f, 1.42283941e+05f, 1.42309837e+05f +, 1.42335735e+05f, 1.42361633e+05f, 1.42387533e+05f, 1.42413434e+05f +, 1.42439336e+05f, 1.42465240e+05f, 1.42491144e+05f, 1.42517050e+05f +, 1.42542957e+05f, 1.42568865e+05f, 1.42594774e+05f, 1.42620685e+05f +, 1.42646596e+05f, 1.42672509e+05f, 1.42698423e+05f, 1.42724338e+05f +, 1.42750254e+05f, 1.42776172e+05f, 1.42802091e+05f, 1.42828010e+05f +, 1.42853931e+05f, 1.42879854e+05f, 1.42905777e+05f, 1.42931701e+05f +, 1.42957627e+05f, 1.42983554e+05f, 1.43009482e+05f, 1.43035411e+05f +, 1.43061342e+05f, 1.43087273e+05f, 1.43113206e+05f, 1.43139140e+05f +, 1.43165075e+05f, 1.43191012e+05f, 1.43216949e+05f, 1.43242888e+05f +, 1.43268827e+05f, 1.43294768e+05f, 1.43320711e+05f, 1.43346654e+05f +, 1.43372598e+05f, 1.43398544e+05f, 1.43424491e+05f, 1.43450439e+05f +, 1.43476388e+05f, 1.43502339e+05f, 1.43528290e+05f, 1.43554243e+05f +, 1.43580197e+05f, 1.43606152e+05f, 1.43632108e+05f, 1.43658065e+05f +, 1.43684024e+05f, 1.43709984e+05f, 1.43735945e+05f, 1.43761907e+05f +, 1.43787870e+05f, 1.43813835e+05f, 1.43839800e+05f, 1.43865767e+05f +, 1.43891735e+05f, 1.43917704e+05f, 1.43943674e+05f, 1.43969646e+05f +, 1.43995619e+05f, 1.44021592e+05f, 1.44047567e+05f, 1.44073543e+05f +, 1.44099521e+05f, 1.44125499e+05f, 1.44151479e+05f, 1.44177460e+05f +, 1.44203442e+05f, 1.44229425e+05f, 1.44255409e+05f, 1.44281395e+05f +, 1.44307382e+05f, 1.44333370e+05f, 1.44359359e+05f, 1.44385349e+05f +, 1.44411340e+05f, 1.44437333e+05f, 1.44463326e+05f, 1.44489321e+05f +, 1.44515317e+05f, 1.44541315e+05f, 1.44567313e+05f, 1.44593313e+05f +, 1.44619313e+05f, 1.44645315e+05f, 1.44671318e+05f, 1.44697322e+05f +, 1.44723328e+05f, 1.44749334e+05f, 1.44775342e+05f, 1.44801351e+05f +, 1.44827361e+05f, 1.44853372e+05f, 1.44879385e+05f, 1.44905398e+05f +, 1.44931413e+05f, 1.44957429e+05f, 1.44983446e+05f, 1.45009464e+05f +, 1.45035484e+05f, 1.45061504e+05f, 1.45087526e+05f, 1.45113549e+05f +, 1.45139573e+05f, 1.45165598e+05f, 1.45191625e+05f, 1.45217652e+05f +, 1.45243681e+05f, 1.45269711e+05f, 1.45295742e+05f, 1.45321774e+05f +, 1.45347808e+05f, 1.45373842e+05f, 1.45399878e+05f, 1.45425915e+05f +, 1.45451953e+05f, 1.45477992e+05f, 1.45504033e+05f, 1.45530074e+05f +, 1.45556117e+05f, 1.45582161e+05f, 1.45608206e+05f, 1.45634252e+05f +, 1.45660300e+05f, 1.45686348e+05f, 1.45712398e+05f, 1.45738449e+05f +, 1.45764501e+05f, 1.45790554e+05f, 1.45816609e+05f, 1.45842664e+05f +, 1.45868721e+05f, 1.45894779e+05f, 1.45920838e+05f, 1.45946898e+05f +, 1.45972959e+05f, 1.45999022e+05f, 1.46025085e+05f, 1.46051150e+05f +, 1.46077216e+05f, 1.46103284e+05f, 1.46129352e+05f, 1.46155421e+05f +, 1.46181492e+05f, 1.46207564e+05f, 1.46233637e+05f, 1.46259711e+05f +, 1.46285786e+05f, 1.46311863e+05f, 1.46337940e+05f, 1.46364019e+05f +, 1.46390099e+05f, 1.46416180e+05f, 1.46442263e+05f, 1.46468346e+05f +, 1.46494431e+05f, 1.46520516e+05f, 1.46546603e+05f, 1.46572691e+05f +, 1.46598781e+05f, 1.46624871e+05f, 1.46650963e+05f, 1.46677055e+05f +, 1.46703149e+05f, 1.46729244e+05f, 1.46755341e+05f, 1.46781438e+05f +, 1.46807537e+05f, 1.46833636e+05f, 1.46859737e+05f, 1.46885839e+05f +, 1.46911942e+05f, 1.46938047e+05f, 1.46964152e+05f, 1.46990259e+05f +, 1.47016367e+05f, 1.47042476e+05f, 1.47068586e+05f, 1.47094697e+05f +, 1.47120809e+05f, 1.47146923e+05f, 1.47173038e+05f, 1.47199154e+05f +, 1.47225271e+05f, 1.47251389e+05f, 1.47277508e+05f, 1.47303629e+05f +, 1.47329751e+05f, 1.47355874e+05f, 1.47381998e+05f, 1.47408123e+05f +, 1.47434249e+05f, 1.47460377e+05f, 1.47486505e+05f, 1.47512635e+05f +, 1.47538766e+05f, 1.47564898e+05f, 1.47591032e+05f, 1.47617166e+05f +, 1.47643302e+05f, 1.47669438e+05f, 1.47695576e+05f, 1.47721715e+05f +, 1.47747856e+05f, 1.47773997e+05f, 1.47800140e+05f, 1.47826283e+05f +, 1.47852428e+05f, 1.47878574e+05f, 1.47904721e+05f, 1.47930870e+05f +, 1.47957019e+05f, 1.47983170e+05f, 1.48009322e+05f, 1.48035474e+05f +, 1.48061629e+05f, 1.48087784e+05f, 1.48113940e+05f, 1.48140098e+05f +, 1.48166257e+05f, 1.48192416e+05f, 1.48218577e+05f, 1.48244740e+05f +, 1.48270903e+05f, 1.48297067e+05f, 1.48323233e+05f, 1.48349400e+05f +, 1.48375568e+05f, 1.48401737e+05f, 1.48427907e+05f, 1.48454079e+05f +, 1.48480251e+05f, 1.48506425e+05f, 1.48532600e+05f, 1.48558776e+05f +, 1.48584953e+05f, 1.48611131e+05f, 1.48637311e+05f, 1.48663491e+05f +, 1.48689673e+05f, 1.48715856e+05f, 1.48742040e+05f, 1.48768226e+05f +, 1.48794412e+05f, 1.48820599e+05f, 1.48846788e+05f, 1.48872978e+05f +, 1.48899169e+05f, 1.48925361e+05f, 1.48951555e+05f, 1.48977749e+05f +, 1.49003945e+05f, 1.49030141e+05f, 1.49056339e+05f, 1.49082538e+05f +, 1.49108739e+05f, 1.49134940e+05f, 1.49161143e+05f, 1.49187346e+05f +, 1.49213551e+05f, 1.49239757e+05f, 1.49265964e+05f, 1.49292172e+05f +, 1.49318382e+05f, 1.49344592e+05f, 1.49370804e+05f, 1.49397017e+05f +, 1.49423231e+05f, 1.49449446e+05f, 1.49475663e+05f, 1.49501880e+05f +, 1.49528099e+05f, 1.49554318e+05f, 1.49580539e+05f, 1.49606761e+05f +, 1.49632985e+05f, 1.49659209e+05f, 1.49685435e+05f, 1.49711661e+05f +, 1.49737889e+05f, 1.49764118e+05f, 1.49790348e+05f, 1.49816579e+05f +, 1.49842812e+05f, 1.49869045e+05f, 1.49895280e+05f, 1.49921516e+05f +, 1.49947753e+05f, 1.49973991e+05f, 1.50000230e+05f, 1.50026471e+05f +, 1.50052712e+05f, 1.50078955e+05f, 1.50105199e+05f, 1.50131444e+05f +, 1.50157690e+05f, 1.50183938e+05f, 1.50210186e+05f, 1.50236436e+05f +, 1.50262686e+05f, 1.50288938e+05f, 1.50315191e+05f, 1.50341446e+05f +, 1.50367701e+05f, 1.50393957e+05f, 1.50420215e+05f, 1.50446474e+05f +, 1.50472734e+05f, 1.50498995e+05f, 1.50525257e+05f, 1.50551521e+05f +, 1.50577785e+05f, 1.50604051e+05f, 1.50630318e+05f, 1.50656585e+05f +, 1.50682855e+05f, 1.50709125e+05f, 1.50735396e+05f, 1.50761669e+05f +, 1.50787942e+05f, 1.50814217e+05f, 1.50840493e+05f, 1.50866770e+05f +, 1.50893049e+05f, 1.50919328e+05f, 1.50945609e+05f, 1.50971890e+05f +, 1.50998173e+05f, 1.51024457e+05f, 1.51050742e+05f, 1.51077028e+05f +, 1.51103316e+05f, 1.51129604e+05f, 1.51155894e+05f, 1.51182185e+05f +, 1.51208477e+05f, 1.51234770e+05f, 1.51261064e+05f, 1.51287360e+05f +, 1.51313656e+05f, 1.51339954e+05f, 1.51366253e+05f, 1.51392553e+05f +, 1.51418854e+05f, 1.51445156e+05f, 1.51471460e+05f, 1.51497764e+05f +, 1.51524070e+05f, 1.51550377e+05f, 1.51576685e+05f, 1.51602994e+05f +, 1.51629304e+05f, 1.51655615e+05f, 1.51681928e+05f, 1.51708242e+05f +, 1.51734556e+05f, 1.51760872e+05f, 1.51787190e+05f, 1.51813508e+05f +, 1.51839827e+05f, 1.51866148e+05f, 1.51892469e+05f, 1.51918792e+05f +, 1.51945116e+05f, 1.51971441e+05f, 1.51997767e+05f, 1.52024095e+05f +, 1.52050423e+05f, 1.52076753e+05f, 1.52103084e+05f, 1.52129416e+05f +, 1.52155749e+05f, 1.52182083e+05f, 1.52208418e+05f, 1.52234755e+05f +, 1.52261092e+05f, 1.52287431e+05f, 1.52313771e+05f, 1.52340112e+05f +, 1.52366454e+05f, 1.52392798e+05f, 1.52419142e+05f, 1.52445488e+05f +, 1.52471834e+05f, 1.52498182e+05f, 1.52524531e+05f, 1.52550881e+05f +, 1.52577233e+05f, 1.52603585e+05f, 1.52629939e+05f, 1.52656293e+05f +, 1.52682649e+05f, 1.52709006e+05f, 1.52735364e+05f, 1.52761724e+05f +, 1.52788084e+05f, 1.52814445e+05f, 1.52840808e+05f, 1.52867172e+05f +, 1.52893537e+05f, 1.52919903e+05f, 1.52946270e+05f, 1.52972638e+05f +, 1.52999008e+05f, 1.53025379e+05f, 1.53051750e+05f, 1.53078123e+05f +, 1.53104497e+05f, 1.53130872e+05f, 1.53157249e+05f, 1.53183626e+05f +, 1.53210005e+05f, 1.53236384e+05f, 1.53262765e+05f, 1.53289147e+05f +, 1.53315530e+05f, 1.53341914e+05f, 1.53368300e+05f, 1.53394686e+05f +, 1.53421074e+05f, 1.53447463e+05f, 1.53473853e+05f, 1.53500244e+05f +, 1.53526636e+05f, 1.53553029e+05f, 1.53579424e+05f, 1.53605819e+05f +, 1.53632216e+05f, 1.53658614e+05f, 1.53685013e+05f, 1.53711413e+05f +, 1.53737814e+05f, 1.53764217e+05f, 1.53790620e+05f, 1.53817025e+05f +, 1.53843431e+05f, 1.53869838e+05f, 1.53896246e+05f, 1.53922655e+05f +, 1.53949065e+05f, 1.53975477e+05f, 1.54001889e+05f, 1.54028303e+05f +, 1.54054718e+05f, 1.54081134e+05f, 1.54107551e+05f, 1.54133969e+05f +, 1.54160388e+05f, 1.54186809e+05f, 1.54213231e+05f, 1.54239653e+05f +, 1.54266077e+05f, 1.54292502e+05f, 1.54318929e+05f, 1.54345356e+05f +, 1.54371784e+05f, 1.54398214e+05f, 1.54424645e+05f, 1.54451076e+05f +, 1.54477509e+05f, 1.54503943e+05f, 1.54530379e+05f, 1.54556815e+05f +, 1.54583252e+05f, 1.54609691e+05f, 1.54636131e+05f, 1.54662572e+05f +, 1.54689014e+05f, 1.54715457e+05f, 1.54741901e+05f, 1.54768346e+05f +, 1.54794793e+05f, 1.54821241e+05f, 1.54847689e+05f, 1.54874139e+05f +, 1.54900590e+05f, 1.54927043e+05f, 1.54953496e+05f, 1.54979950e+05f +, 1.55006406e+05f, 1.55032862e+05f, 1.55059320e+05f, 1.55085779e+05f +, 1.55112239e+05f, 1.55138700e+05f, 1.55165163e+05f, 1.55191626e+05f +, 1.55218091e+05f, 1.55244557e+05f, 1.55271023e+05f, 1.55297491e+05f +, 1.55323960e+05f, 1.55350431e+05f, 1.55376902e+05f, 1.55403375e+05f +, 1.55429848e+05f, 1.55456323e+05f, 1.55482799e+05f, 1.55509276e+05f +, 1.55535754e+05f, 1.55562233e+05f, 1.55588713e+05f, 1.55615195e+05f +, 1.55641678e+05f, 1.55668161e+05f, 1.55694646e+05f, 1.55721132e+05f +, 1.55747619e+05f, 1.55774108e+05f, 1.55800597e+05f, 1.55827087e+05f +, 1.55853579e+05f, 1.55880072e+05f, 1.55906566e+05f, 1.55933061e+05f +, 1.55959557e+05f, 1.55986054e+05f, 1.56012552e+05f, 1.56039052e+05f +, 1.56065553e+05f, 1.56092054e+05f, 1.56118557e+05f, 1.56145061e+05f +, 1.56171566e+05f, 1.56198073e+05f, 1.56224580e+05f, 1.56251089e+05f +, 1.56277598e+05f, 1.56304109e+05f, 1.56330621e+05f, 1.56357134e+05f +, 1.56383648e+05f, 1.56410163e+05f, 1.56436680e+05f, 1.56463197e+05f +, 1.56489716e+05f, 1.56516235e+05f, 1.56542756e+05f, 1.56569278e+05f +, 1.56595801e+05f, 1.56622326e+05f, 1.56648851e+05f, 1.56675378e+05f +, 1.56701905e+05f, 1.56728434e+05f, 1.56754964e+05f, 1.56781495e+05f +, 1.56808027e+05f, 1.56834560e+05f, 1.56861094e+05f, 1.56887630e+05f +, 1.56914166e+05f, 1.56940704e+05f, 1.56967243e+05f, 1.56993783e+05f +, 1.57020324e+05f, 1.57046866e+05f, 1.57073410e+05f, 1.57099954e+05f +, 1.57126500e+05f, 1.57153046e+05f, 1.57179594e+05f, 1.57206143e+05f +, 1.57232693e+05f, 1.57259244e+05f, 1.57285796e+05f, 1.57312350e+05f +, 1.57338904e+05f, 1.57365460e+05f, 1.57392017e+05f, 1.57418575e+05f +, 1.57445134e+05f, 1.57471694e+05f, 1.57498255e+05f, 1.57524817e+05f +, 1.57551381e+05f, 1.57577946e+05f, 1.57604511e+05f, 1.57631078e+05f +, 1.57657646e+05f, 1.57684215e+05f, 1.57710785e+05f, 1.57737357e+05f +, 1.57763929e+05f, 1.57790503e+05f, 1.57817077e+05f, 1.57843653e+05f +, 1.57870230e+05f, 1.57896808e+05f, 1.57923387e+05f, 1.57949968e+05f +, 1.57976549e+05f, 1.58003132e+05f, 1.58029715e+05f, 1.58056300e+05f +, 1.58082886e+05f, 1.58109473e+05f, 1.58136061e+05f, 1.58162650e+05f +, 1.58189240e+05f, 1.58215832e+05f, 1.58242424e+05f, 1.58269018e+05f +, 1.58295613e+05f, 1.58322209e+05f, 1.58348806e+05f, 1.58375404e+05f +, 1.58402003e+05f, 1.58428604e+05f, 1.58455205e+05f, 1.58481808e+05f +, 1.58508412e+05f, 1.58535016e+05f, 1.58561622e+05f, 1.58588230e+05f +, 1.58614838e+05f, 1.58641447e+05f, 1.58668057e+05f, 1.58694669e+05f +, 1.58721282e+05f, 1.58747895e+05f, 1.58774510e+05f, 1.58801126e+05f +, 1.58827744e+05f, 1.58854362e+05f, 1.58880981e+05f, 1.58907602e+05f +, 1.58934223e+05f, 1.58960846e+05f, 1.58987470e+05f, 1.59014095e+05f +, 1.59040721e+05f, 1.59067348e+05f, 1.59093976e+05f, 1.59120606e+05f +, 1.59147236e+05f, 1.59173868e+05f, 1.59200500e+05f, 1.59227134e+05f +, 1.59253769e+05f, 1.59280405e+05f, 1.59307042e+05f, 1.59333681e+05f +, 1.59360320e+05f, 1.59386961e+05f, 1.59413602e+05f, 1.59440245e+05f +, 1.59466889e+05f, 1.59493534e+05f, 1.59520180e+05f, 1.59546827e+05f +, 1.59573476e+05f, 1.59600125e+05f, 1.59626776e+05f, 1.59653427e+05f +, 1.59680080e+05f, 1.59706734e+05f, 1.59733389e+05f, 1.59760045e+05f +, 1.59786702e+05f, 1.59813361e+05f, 1.59840020e+05f, 1.59866681e+05f +, 1.59893342e+05f, 1.59920005e+05f, 1.59946669e+05f, 1.59973334e+05f +, 1.60000000e+05f, 1.60026667e+05f, 1.60053336e+05f, 1.60080005e+05f +, 1.60106676e+05f, 1.60133347e+05f, 1.60160020e+05f, 1.60186694e+05f +, 1.60213369e+05f, 1.60240045e+05f, 1.60266722e+05f, 1.60293401e+05f +, 1.60320080e+05f, 1.60346761e+05f, 1.60373442e+05f, 1.60400125e+05f +, 1.60426809e+05f, 1.60453494e+05f, 1.60480180e+05f, 1.60506867e+05f +, 1.60533555e+05f, 1.60560245e+05f, 1.60586935e+05f, 1.60613627e+05f +, 1.60640320e+05f, 1.60667014e+05f, 1.60693709e+05f, 1.60720405e+05f +, 1.60747102e+05f, 1.60773800e+05f, 1.60800500e+05f, 1.60827200e+05f +, 1.60853902e+05f, 1.60880604e+05f, 1.60907308e+05f, 1.60934013e+05f +, 1.60960719e+05f, 1.60987426e+05f, 1.61014135e+05f, 1.61040844e+05f +, 1.61067555e+05f, 1.61094266e+05f, 1.61120979e+05f, 1.61147693e+05f +, 1.61174408e+05f, 1.61201124e+05f, 1.61227841e+05f, 1.61254559e+05f +, 1.61281278e+05f, 1.61307999e+05f, 1.61334720e+05f, 1.61361443e+05f +, 1.61388167e+05f, 1.61414892e+05f, 1.61441618e+05f, 1.61468345e+05f +, 1.61495073e+05f, 1.61521802e+05f, 1.61548533e+05f, 1.61575264e+05f +, 1.61601997e+05f, 1.61628730e+05f, 1.61655465e+05f, 1.61682201e+05f +, 1.61708938e+05f, 1.61735676e+05f, 1.61762416e+05f, 1.61789156e+05f +, 1.61815897e+05f, 1.61842640e+05f, 1.61869384e+05f, 1.61896128e+05f +, 1.61922874e+05f, 1.61949621e+05f, 1.61976369e+05f, 1.62003119e+05f +, 1.62029869e+05f, 1.62056620e+05f, 1.62083373e+05f, 1.62110126e+05f +, 1.62136881e+05f, 1.62163637e+05f, 1.62190394e+05f, 1.62217152e+05f +, 1.62243911e+05f, 1.62270671e+05f, 1.62297432e+05f, 1.62324195e+05f +, 1.62350958e+05f, 1.62377723e+05f, 1.62404489e+05f, 1.62431256e+05f +, 1.62458024e+05f, 1.62484793e+05f, 1.62511563e+05f, 1.62538334e+05f +, 1.62565106e+05f, 1.62591880e+05f, 1.62618654e+05f, 1.62645430e+05f +, 1.62672207e+05f, 1.62698985e+05f, 1.62725764e+05f, 1.62752544e+05f +, 1.62779325e+05f, 1.62806107e+05f, 1.62832891e+05f, 1.62859675e+05f +, 1.62886461e+05f, 1.62913247e+05f, 1.62940035e+05f, 1.62966824e+05f +, 1.62993614e+05f, 1.63020405e+05f, 1.63047197e+05f, 1.63073991e+05f +, 1.63100785e+05f, 1.63127580e+05f, 1.63154377e+05f, 1.63181175e+05f +, 1.63207973e+05f, 1.63234773e+05f, 1.63261574e+05f, 1.63288376e+05f +, 1.63315180e+05f, 1.63341984e+05f, 1.63368789e+05f, 1.63395596e+05f +, 1.63422403e+05f, 1.63449212e+05f, 1.63476022e+05f, 1.63502833e+05f +, 1.63529645e+05f, 1.63556458e+05f, 1.63583272e+05f, 1.63610087e+05f +, 1.63636904e+05f, 1.63663721e+05f, 1.63690540e+05f, 1.63717359e+05f +, 1.63744180e+05f, 1.63771002e+05f, 1.63797825e+05f, 1.63824649e+05f +, 1.63851474e+05f, 1.63878301e+05f, 1.63905128e+05f, 1.63931956e+05f +, 1.63958786e+05f, 1.63985617e+05f, 1.64012448e+05f, 1.64039281e+05f +, 1.64066115e+05f, 1.64092950e+05f, 1.64119786e+05f, 1.64146624e+05f +, 1.64173462e+05f, 1.64200301e+05f, 1.64227142e+05f, 1.64253983e+05f +, 1.64280826e+05f, 1.64307670e+05f, 1.64334515e+05f, 1.64361361e+05f +, 1.64388208e+05f, 1.64415056e+05f, 1.64441906e+05f, 1.64468756e+05f +, 1.64495607e+05f, 1.64522460e+05f, 1.64549314e+05f, 1.64576169e+05f +, 1.64603024e+05f, 1.64629881e+05f, 1.64656739e+05f, 1.64683599e+05f +, 1.64710459e+05f, 1.64737320e+05f, 1.64764183e+05f, 1.64791046e+05f +, 1.64817911e+05f, 1.64844777e+05f, 1.64871643e+05f, 1.64898511e+05f +, 1.64925380e+05f, 1.64952250e+05f, 1.64979122e+05f, 1.65005994e+05f +, 1.65032867e+05f, 1.65059742e+05f, 1.65086617e+05f, 1.65113494e+05f +, 1.65140372e+05f, 1.65167251e+05f, 1.65194131e+05f, 1.65221012e+05f +, 1.65247894e+05f, 1.65274777e+05f, 1.65301661e+05f, 1.65328547e+05f +, 1.65355433e+05f, 1.65382321e+05f, 1.65409210e+05f, 1.65436099e+05f +, 1.65462990e+05f, 1.65489882e+05f, 1.65516775e+05f }; static const ALIGNED(16) real aa_ca[8] = { - -5.14495755e-01, -4.71731969e-01, -3.13377454e-01, -1.81913200e-01 -, -9.45741925e-02, -4.09655829e-02, -1.41985686e-02, -3.69997467e-03 + -5.14495755e-01f, -4.71731969e-01f, -3.13377454e-01f, -1.81913200e-01f +, -9.45741925e-02f, -4.09655829e-02f, -1.41985686e-02f, -3.69997467e-03f }; static const ALIGNED(16) real aa_cs[8] = { - 8.57492926e-01, 8.81741997e-01, 9.49628649e-01, 9.83314592e-01 -, 9.95517816e-01, 9.99160558e-01, 9.99899195e-01, 9.99993155e-01 + 8.57492926e-01f, 8.81741997e-01f, 9.49628649e-01f, 9.83314592e-01f +, 9.95517816e-01f, 9.99160558e-01f, 9.99899195e-01f, 9.99993155e-01f }; static const ALIGNED(16) real win[4][36] = { { - 3.22824301e-02, 1.07206359e-01, 2.01414267e-01, 3.25616354e-01 - , 5.00000000e-01, 7.67774705e-01, 1.24122289e+00, 2.33195123e+00 - , 7.74415058e+00, -8.45125736e+00, -3.03905801e+00, -1.94832968e+00 - , -1.47488149e+00, -1.20710678e+00, -1.03272313e+00, -9.08521049e-01 - , -8.14313140e-01, -7.39389211e-01, -6.77525384e-01, -6.24844449e-01 - , -5.78791741e-01, -5.37601636e-01, -5.00000000e-01, -4.65028346e-01 - , -4.31934290e-01, -4.00099577e-01, -3.68989865e-01, -3.38116916e-01 - , -3.07007204e-01, -2.75172491e-01, -2.42078435e-01, -2.07106781e-01 - , -1.69505145e-01, -1.28315040e-01, -8.22623323e-02, -2.95813971e-02 + 3.22824301e-02f, 1.07206359e-01f, 2.01414267e-01f, 3.25616354e-01f + , 5.00000000e-01f, 7.67774705e-01f, 1.24122289e+00f, 2.33195123e+00f + , 7.74415058e+00f, -8.45125736e+00f, -3.03905801e+00f, -1.94832968e+00f + , -1.47488149e+00f, -1.20710678e+00f, -1.03272313e+00f, -9.08521049e-01f + , -8.14313140e-01f, -7.39389211e-01f, -6.77525384e-01f, -6.24844449e-01f + , -5.78791741e-01f, -5.37601636e-01f, -5.00000000e-01f, -4.65028346e-01f + , -4.31934290e-01f, -4.00099577e-01f, -3.68989865e-01f, -3.38116916e-01f + , -3.07007204e-01f, -2.75172491e-01f, -2.42078435e-01f, -2.07106781e-01f + , -1.69505145e-01f, -1.28315040e-01f, -8.22623323e-02f, -2.95813971e-02f } , { - 3.22824301e-02, 1.07206359e-01, 2.01414267e-01, 3.25616354e-01 - , 5.00000000e-01, 7.67774705e-01, 1.24122289e+00, 2.33195123e+00 - , 7.74415058e+00, -8.45125736e+00, -3.03905801e+00, -1.94832968e+00 - , -1.47488149e+00, -1.20710678e+00, -1.03272313e+00, -9.08521049e-01 - , -8.14313140e-01, -7.39389211e-01, -6.78170852e-01, -6.30236207e-01 - , -5.92844524e-01, -5.63690973e-01, -5.41196100e-01, -5.24264563e-01 - , -5.07758331e-01, -4.65925826e-01, -3.97054578e-01, -3.04670693e-01 - , -1.92992796e-01, -6.68476524e-02, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 + 3.22824301e-02f, 1.07206359e-01f, 2.01414267e-01f, 3.25616354e-01f + , 5.00000000e-01f, 7.67774705e-01f, 1.24122289e+00f, 2.33195123e+00f + , 7.74415058e+00f, -8.45125736e+00f, -3.03905801e+00f, -1.94832968e+00f + , -1.47488149e+00f, -1.20710678e+00f, -1.03272313e+00f, -9.08521049e-01f + , -8.14313140e-01f, -7.39389211e-01f, -6.78170852e-01f, -6.30236207e-01f + , -5.92844524e-01f, -5.63690973e-01f, -5.41196100e-01f, -5.24264563e-01f + , -5.07758331e-01f, -4.65925826e-01f, -3.97054578e-01f, -3.04670693e-01f + , -1.92992796e-01f, -6.68476524e-02f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f } , { - 1.07206359e-01, 5.00000000e-01, 2.33195123e+00, -3.03905801e+00 - , -1.20710678e+00, -8.14313140e-01, -6.24844449e-01, -5.00000000e-01 - , -4.00099577e-01, -3.07007204e-01, -2.07106781e-01, -8.22623323e-02 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 + 1.07206359e-01f, 5.00000000e-01f, 2.33195123e+00f, -3.03905801e+00f + , -1.20710678e+00f, -8.14313140e-01f, -6.24844449e-01f, -5.00000000e-01f + , -4.00099577e-01f, -3.07007204e-01f, -2.07106781e-01f, -8.22623323e-02f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f } , { - 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 3.01530274e-01, 1.46592583e+00 - , 6.97810613e+00, -9.09404497e+00, -3.53905801e+00, -2.29034982e+00 - , -1.66275476e+00, -1.30656296e+00, -1.08284029e+00, -9.30579498e-01 - , -8.21339816e-01, -7.40093616e-01, -6.77525384e-01, -6.24844449e-01 - , -5.78791741e-01, -5.37601636e-01, -5.00000000e-01, -4.65028346e-01 - , -4.31934290e-01, -4.00099577e-01, -3.68989865e-01, -3.38116916e-01 - , -3.07007204e-01, -2.75172491e-01, -2.42078435e-01, -2.07106781e-01 - , -1.69505145e-01, -1.28315040e-01, -8.22623323e-02, -2.95813971e-02 + 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 3.01530274e-01f, 1.46592583e+00f + , 6.97810613e+00f, -9.09404497e+00f, -3.53905801e+00f, -2.29034982e+00f + , -1.66275476e+00f, -1.30656296e+00f, -1.08284029e+00f, -9.30579498e-01f + , -8.21339816e-01f, -7.40093616e-01f, -6.77525384e-01f, -6.24844449e-01f + , -5.78791741e-01f, -5.37601636e-01f, -5.00000000e-01f, -4.65028346e-01f + , -4.31934290e-01f, -4.00099577e-01f, -3.68989865e-01f, -3.38116916e-01f + , -3.07007204e-01f, -2.75172491e-01f, -2.42078435e-01f, -2.07106781e-01f + , -1.69505145e-01f, -1.28315040e-01f, -8.22623323e-02f, -2.95813971e-02f } }; static const ALIGNED(16) real win1[4][36] = { { - 3.22824301e-02, -1.07206359e-01, 2.01414267e-01, -3.25616354e-01 - , 5.00000000e-01, -7.67774705e-01, 1.24122289e+00, -2.33195123e+00 - , 7.74415058e+00, 8.45125736e+00, -3.03905801e+00, 1.94832968e+00 - , -1.47488149e+00, 1.20710678e+00, -1.03272313e+00, 9.08521049e-01 - , -8.14313140e-01, 7.39389211e-01, -6.77525384e-01, 6.24844449e-01 - , -5.78791741e-01, 5.37601636e-01, -5.00000000e-01, 4.65028346e-01 - , -4.31934290e-01, 4.00099577e-01, -3.68989865e-01, 3.38116916e-01 - , -3.07007204e-01, 2.75172491e-01, -2.42078435e-01, 2.07106781e-01 - , -1.69505145e-01, 1.28315040e-01, -8.22623323e-02, 2.95813971e-02 + 3.22824301e-02f, -1.07206359e-01f, 2.01414267e-01f, -3.25616354e-01f + , 5.00000000e-01f, -7.67774705e-01f, 1.24122289e+00f, -2.33195123e+00f + , 7.74415058e+00f, 8.45125736e+00f, -3.03905801e+00f, 1.94832968e+00f + , -1.47488149e+00f, 1.20710678e+00f, -1.03272313e+00f, 9.08521049e-01f + , -8.14313140e-01f, 7.39389211e-01f, -6.77525384e-01f, 6.24844449e-01f + , -5.78791741e-01f, 5.37601636e-01f, -5.00000000e-01f, 4.65028346e-01f + , -4.31934290e-01f, 4.00099577e-01f, -3.68989865e-01f, 3.38116916e-01f + , -3.07007204e-01f, 2.75172491e-01f, -2.42078435e-01f, 2.07106781e-01f + , -1.69505145e-01f, 1.28315040e-01f, -8.22623323e-02f, 2.95813971e-02f } , { - 3.22824301e-02, -1.07206359e-01, 2.01414267e-01, -3.25616354e-01 - , 5.00000000e-01, -7.67774705e-01, 1.24122289e+00, -2.33195123e+00 - , 7.74415058e+00, 8.45125736e+00, -3.03905801e+00, 1.94832968e+00 - , -1.47488149e+00, 1.20710678e+00, -1.03272313e+00, 9.08521049e-01 - , -8.14313140e-01, 7.39389211e-01, -6.78170852e-01, 6.30236207e-01 - , -5.92844524e-01, 5.63690973e-01, -5.41196100e-01, 5.24264563e-01 - , -5.07758331e-01, 4.65925826e-01, -3.97054578e-01, 3.04670693e-01 - , -1.92992796e-01, 6.68476524e-02, 0.00000000e+00, -0.00000000e+00 - , 0.00000000e+00, -0.00000000e+00, 0.00000000e+00, -0.00000000e+00 + 3.22824301e-02f, -1.07206359e-01f, 2.01414267e-01f, -3.25616354e-01f + , 5.00000000e-01f, -7.67774705e-01f, 1.24122289e+00f, -2.33195123e+00f + , 7.74415058e+00f, 8.45125736e+00f, -3.03905801e+00f, 1.94832968e+00f + , -1.47488149e+00f, 1.20710678e+00f, -1.03272313e+00f, 9.08521049e-01f + , -8.14313140e-01f, 7.39389211e-01f, -6.78170852e-01f, 6.30236207e-01f + , -5.92844524e-01f, 5.63690973e-01f, -5.41196100e-01f, 5.24264563e-01f + , -5.07758331e-01f, 4.65925826e-01f, -3.97054578e-01f, 3.04670693e-01f + , -1.92992796e-01f, 6.68476524e-02f, 0.00000000e+00f, -0.00000000e+00f + , 0.00000000e+00f, -0.00000000e+00f, 0.00000000e+00f, -0.00000000e+00f } , { - 1.07206359e-01, -5.00000000e-01, 2.33195123e+00, 3.03905801e+00 - , -1.20710678e+00, 8.14313140e-01, -6.24844449e-01, 5.00000000e-01 - , -4.00099577e-01, 3.07007204e-01, -2.07106781e-01, 8.22623323e-02 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 - , 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00 + 1.07206359e-01f, -5.00000000e-01f, 2.33195123e+00f, 3.03905801e+00f + , -1.20710678e+00f, 8.14313140e-01f, -6.24844449e-01f, 5.00000000e-01f + , -4.00099577e-01f, 3.07007204e-01f, -2.07106781e-01f, 8.22623323e-02f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f + , 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f, 0.00000000e+00f } , { - 0.00000000e+00, -0.00000000e+00, 0.00000000e+00, -0.00000000e+00 - , 0.00000000e+00, -0.00000000e+00, 3.01530274e-01, -1.46592583e+00 - , 6.97810613e+00, 9.09404497e+00, -3.53905801e+00, 2.29034982e+00 - , -1.66275476e+00, 1.30656296e+00, -1.08284029e+00, 9.30579498e-01 - , -8.21339816e-01, 7.40093616e-01, -6.77525384e-01, 6.24844449e-01 - , -5.78791741e-01, 5.37601636e-01, -5.00000000e-01, 4.65028346e-01 - , -4.31934290e-01, 4.00099577e-01, -3.68989865e-01, 3.38116916e-01 - , -3.07007204e-01, 2.75172491e-01, -2.42078435e-01, 2.07106781e-01 - , -1.69505145e-01, 1.28315040e-01, -8.22623323e-02, 2.95813971e-02 + 0.00000000e+00f, -0.00000000e+00f, 0.00000000e+00f, -0.00000000e+00f + , 0.00000000e+00f, -0.00000000e+00f, 3.01530274e-01f, -1.46592583e+00f + , 6.97810613e+00f, 9.09404497e+00f, -3.53905801e+00f, 2.29034982e+00f + , -1.66275476e+00f, 1.30656296e+00f, -1.08284029e+00f, 9.30579498e-01f + , -8.21339816e-01f, 7.40093616e-01f, -6.77525384e-01f, 6.24844449e-01f + , -5.78791741e-01f, 5.37601636e-01f, -5.00000000e-01f, 4.65028346e-01f + , -4.31934290e-01f, 4.00099577e-01f, -3.68989865e-01f, 3.38116916e-01f + , -3.07007204e-01f, 2.75172491e-01f, -2.42078435e-01f, 2.07106781e-01f + , -1.69505145e-01f, 1.28315040e-01f, -8.22623323e-02f, 2.95813971e-02f } }; -const ALIGNED(16) real COS9[9] = +const ALIGNED(16) real INT123_COS9[9] = { - 1.00000000e+00, 9.84807753e-01, 9.39692621e-01, 8.66025404e-01 -, 7.66044443e-01, 6.42787610e-01, 5.00000000e-01, 3.42020143e-01 -, 1.73648178e-01 + 1.00000000e+00f, 9.84807753e-01f, 9.39692621e-01f, 8.66025404e-01f +, 7.66044443e-01f, 6.42787610e-01f, 5.00000000e-01f, 3.42020143e-01f +, 1.73648178e-01f }; -static const real COS6_1 = 8.66025404e-01; -static const real COS6_2 = 5.00000000e-01; -const ALIGNED(16) real tfcos36[9] = +static const real COS6_1 = 8.66025404e-01f; +static const real COS6_2 = 5.00000000e-01f; +const ALIGNED(16) real INT123_tfcos36[9] = { - 5.01909919e-01, 5.17638090e-01, 5.51688959e-01, 6.10387294e-01 -, 7.07106781e-01, 8.71723398e-01, 1.18310079e+00, 1.93185165e+00 -, 5.73685662e+00 + 5.01909919e-01f, 5.17638090e-01f, 5.51688959e-01f, 6.10387294e-01f +, 7.07106781e-01f, 8.71723398e-01f, 1.18310079e+00f, 1.93185165e+00f +, 5.73685662e+00f }; static const ALIGNED(16) real tfcos12[3] = { - 5.17638090e-01, 7.07106781e-01, 1.93185165e+00 + 5.17638090e-01f, 7.07106781e-01f, 1.93185165e+00f }; static const ALIGNED(16) real cos9[3] = { - 9.39692621e-01, -1.73648178e-01, -7.66044443e-01 + 9.39692621e-01f, -1.73648178e-01f, -7.66044443e-01f }; static const ALIGNED(16) real cos18[3] = { - 9.84807753e-01, -3.42020143e-01, -6.42787610e-01 + 9.84807753e-01f, -3.42020143e-01f, -6.42787610e-01f }; static const ALIGNED(16) real tan1_1[16] = { - 0.00000000e+00, 2.11324865e-01, 3.66025404e-01, 5.00000000e-01 -, 6.33974596e-01, 7.88675135e-01, 1.00000000e+00, 1.36602540e+00 -, 2.36602540e+00, -1.00000000e+38, -1.36602540e+00, -3.66025404e-01 -, 0.00000000e+00, 2.11324865e-01, 3.66025404e-01, 5.00000000e-01 + 0.00000000e+00f, 2.11324865e-01f, 3.66025404e-01f, 5.00000000e-01f +, 6.33974596e-01f, 7.88675135e-01f, 1.00000000e+00f, 1.36602540e+00f +, 2.36602540e+00f, -1.00000000e+38f, -1.36602540e+00f, -3.66025404e-01f +, 0.00000000e+00f, 2.11324865e-01f, 3.66025404e-01f, 5.00000000e-01f }; static const ALIGNED(16) real tan2_1[16] = { - 1.00000000e+00, 7.88675135e-01, 6.33974596e-01, 5.00000000e-01 -, 3.66025404e-01, 2.11324865e-01, 0.00000000e+00, -3.66025404e-01 -, -1.36602540e+00, 1.00000000e+38, 2.36602540e+00, 1.36602540e+00 -, 1.00000000e+00, 7.88675135e-01, 6.33974596e-01, 5.00000000e-01 + 1.00000000e+00f, 7.88675135e-01f, 6.33974596e-01f, 5.00000000e-01f +, 3.66025404e-01f, 2.11324865e-01f, 0.00000000e+00f, -3.66025404e-01f +, -1.36602540e+00f, 1.00000000e+38f, 2.36602540e+00f, 1.36602540e+00f +, 1.00000000e+00f, 7.88675135e-01f, 6.33974596e-01f, 5.00000000e-01f }; static const ALIGNED(16) real tan1_2[16] = { - 0.00000000e+00, 2.98858491e-01, 5.17638090e-01, 7.07106781e-01 -, 8.96575472e-01, 1.11535507e+00, 1.41421356e+00, 1.93185165e+00 -, 3.34606521e+00, -1.00000000e+38, -1.93185165e+00, -5.17638090e-01 -, 0.00000000e+00, 2.98858491e-01, 5.17638090e-01, 7.07106781e-01 + 0.00000000e+00f, 2.98858491e-01f, 5.17638090e-01f, 7.07106781e-01f +, 8.96575472e-01f, 1.11535507e+00f, 1.41421356e+00f, 1.93185165e+00f +, 3.34606521e+00f, -1.00000000e+38f, -1.93185165e+00f, -5.17638090e-01f +, 0.00000000e+00f, 2.98858491e-01f, 5.17638090e-01f, 7.07106781e-01f }; static const ALIGNED(16) real tan2_2[16] = { - 1.41421356e+00, 1.11535507e+00, 8.96575472e-01, 7.07106781e-01 -, 5.17638090e-01, 2.98858491e-01, 0.00000000e+00, -5.17638090e-01 -, -1.93185165e+00, 1.00000000e+38, 3.34606521e+00, 1.93185165e+00 -, 1.41421356e+00, 1.11535507e+00, 8.96575472e-01, 7.07106781e-01 + 1.41421356e+00f, 1.11535507e+00f, 8.96575472e-01f, 7.07106781e-01f +, 5.17638090e-01f, 2.98858491e-01f, 0.00000000e+00f, -5.17638090e-01f +, -1.93185165e+00f, 1.00000000e+38f, 3.34606521e+00f, 1.93185165e+00f +, 1.41421356e+00f, 1.11535507e+00f, 8.96575472e-01f, 7.07106781e-01f }; static const ALIGNED(16) real pow1_1[2][32] = { { - 1.00000000e+00, 8.40896415e-01, 1.00000000e+00, 7.07106781e-01 - , 1.00000000e+00, 5.94603558e-01, 1.00000000e+00, 5.00000000e-01 - , 1.00000000e+00, 4.20448208e-01, 1.00000000e+00, 3.53553391e-01 - , 1.00000000e+00, 2.97301779e-01, 1.00000000e+00, 2.50000000e-01 - , 1.00000000e+00, 2.10224104e-01, 1.00000000e+00, 1.76776695e-01 - , 1.00000000e+00, 1.48650889e-01, 1.00000000e+00, 1.25000000e-01 - , 1.00000000e+00, 1.05112052e-01, 1.00000000e+00, 8.83883476e-02 - , 1.00000000e+00, 7.43254447e-02, 1.00000000e+00, 6.25000000e-02 + 1.00000000e+00f, 8.40896415e-01f, 1.00000000e+00f, 7.07106781e-01f + , 1.00000000e+00f, 5.94603558e-01f, 1.00000000e+00f, 5.00000000e-01f + , 1.00000000e+00f, 4.20448208e-01f, 1.00000000e+00f, 3.53553391e-01f + , 1.00000000e+00f, 2.97301779e-01f, 1.00000000e+00f, 2.50000000e-01f + , 1.00000000e+00f, 2.10224104e-01f, 1.00000000e+00f, 1.76776695e-01f + , 1.00000000e+00f, 1.48650889e-01f, 1.00000000e+00f, 1.25000000e-01f + , 1.00000000e+00f, 1.05112052e-01f, 1.00000000e+00f, 8.83883476e-02f + , 1.00000000e+00f, 7.43254447e-02f, 1.00000000e+00f, 6.25000000e-02f } , { - 1.00000000e+00, 7.07106781e-01, 1.00000000e+00, 5.00000000e-01 - , 1.00000000e+00, 3.53553391e-01, 1.00000000e+00, 2.50000000e-01 - , 1.00000000e+00, 1.76776695e-01, 1.00000000e+00, 1.25000000e-01 - , 1.00000000e+00, 8.83883476e-02, 1.00000000e+00, 6.25000000e-02 - , 1.00000000e+00, 4.41941738e-02, 1.00000000e+00, 3.12500000e-02 - , 1.00000000e+00, 2.20970869e-02, 1.00000000e+00, 1.56250000e-02 - , 1.00000000e+00, 1.10485435e-02, 1.00000000e+00, 7.81250000e-03 - , 1.00000000e+00, 5.52427173e-03, 1.00000000e+00, 3.90625000e-03 + 1.00000000e+00f, 7.07106781e-01f, 1.00000000e+00f, 5.00000000e-01f + , 1.00000000e+00f, 3.53553391e-01f, 1.00000000e+00f, 2.50000000e-01f + , 1.00000000e+00f, 1.76776695e-01f, 1.00000000e+00f, 1.25000000e-01f + , 1.00000000e+00f, 8.83883476e-02f, 1.00000000e+00f, 6.25000000e-02f + , 1.00000000e+00f, 4.41941738e-02f, 1.00000000e+00f, 3.12500000e-02f + , 1.00000000e+00f, 2.20970869e-02f, 1.00000000e+00f, 1.56250000e-02f + , 1.00000000e+00f, 1.10485435e-02f, 1.00000000e+00f, 7.81250000e-03f + , 1.00000000e+00f, 5.52427173e-03f, 1.00000000e+00f, 3.90625000e-03f } }; static const ALIGNED(16) real pow2_1[2][32] = { { - 1.00000000e+00, 1.00000000e+00, 8.40896415e-01, 1.00000000e+00 - , 7.07106781e-01, 1.00000000e+00, 5.94603558e-01, 1.00000000e+00 - , 5.00000000e-01, 1.00000000e+00, 4.20448208e-01, 1.00000000e+00 - , 3.53553391e-01, 1.00000000e+00, 2.97301779e-01, 1.00000000e+00 - , 2.50000000e-01, 1.00000000e+00, 2.10224104e-01, 1.00000000e+00 - , 1.76776695e-01, 1.00000000e+00, 1.48650889e-01, 1.00000000e+00 - , 1.25000000e-01, 1.00000000e+00, 1.05112052e-01, 1.00000000e+00 - , 8.83883476e-02, 1.00000000e+00, 7.43254447e-02, 1.00000000e+00 + 1.00000000e+00f, 1.00000000e+00f, 8.40896415e-01f, 1.00000000e+00f + , 7.07106781e-01f, 1.00000000e+00f, 5.94603558e-01f, 1.00000000e+00f + , 5.00000000e-01f, 1.00000000e+00f, 4.20448208e-01f, 1.00000000e+00f + , 3.53553391e-01f, 1.00000000e+00f, 2.97301779e-01f, 1.00000000e+00f + , 2.50000000e-01f, 1.00000000e+00f, 2.10224104e-01f, 1.00000000e+00f + , 1.76776695e-01f, 1.00000000e+00f, 1.48650889e-01f, 1.00000000e+00f + , 1.25000000e-01f, 1.00000000e+00f, 1.05112052e-01f, 1.00000000e+00f + , 8.83883476e-02f, 1.00000000e+00f, 7.43254447e-02f, 1.00000000e+00f } , { - 1.00000000e+00, 1.00000000e+00, 7.07106781e-01, 1.00000000e+00 - , 5.00000000e-01, 1.00000000e+00, 3.53553391e-01, 1.00000000e+00 - , 2.50000000e-01, 1.00000000e+00, 1.76776695e-01, 1.00000000e+00 - , 1.25000000e-01, 1.00000000e+00, 8.83883476e-02, 1.00000000e+00 - , 6.25000000e-02, 1.00000000e+00, 4.41941738e-02, 1.00000000e+00 - , 3.12500000e-02, 1.00000000e+00, 2.20970869e-02, 1.00000000e+00 - , 1.56250000e-02, 1.00000000e+00, 1.10485435e-02, 1.00000000e+00 - , 7.81250000e-03, 1.00000000e+00, 5.52427173e-03, 1.00000000e+00 + 1.00000000e+00f, 1.00000000e+00f, 7.07106781e-01f, 1.00000000e+00f + , 5.00000000e-01f, 1.00000000e+00f, 3.53553391e-01f, 1.00000000e+00f + , 2.50000000e-01f, 1.00000000e+00f, 1.76776695e-01f, 1.00000000e+00f + , 1.25000000e-01f, 1.00000000e+00f, 8.83883476e-02f, 1.00000000e+00f + , 6.25000000e-02f, 1.00000000e+00f, 4.41941738e-02f, 1.00000000e+00f + , 3.12500000e-02f, 1.00000000e+00f, 2.20970869e-02f, 1.00000000e+00f + , 1.56250000e-02f, 1.00000000e+00f, 1.10485435e-02f, 1.00000000e+00f + , 7.81250000e-03f, 1.00000000e+00f, 5.52427173e-03f, 1.00000000e+00f } }; static const ALIGNED(16) real pow1_2[2][32] = { { - 1.41421356e+00, 1.18920712e+00, 1.41421356e+00, 1.00000000e+00 - , 1.41421356e+00, 8.40896415e-01, 1.41421356e+00, 7.07106781e-01 - , 1.41421356e+00, 5.94603558e-01, 1.41421356e+00, 5.00000000e-01 - , 1.41421356e+00, 4.20448208e-01, 1.41421356e+00, 3.53553391e-01 - , 1.41421356e+00, 2.97301779e-01, 1.41421356e+00, 2.50000000e-01 - , 1.41421356e+00, 2.10224104e-01, 1.41421356e+00, 1.76776695e-01 - , 1.41421356e+00, 1.48650889e-01, 1.41421356e+00, 1.25000000e-01 - , 1.41421356e+00, 1.05112052e-01, 1.41421356e+00, 8.83883476e-02 + 1.41421356e+00f, 1.18920712e+00f, 1.41421356e+00f, 1.00000000e+00f + , 1.41421356e+00f, 8.40896415e-01f, 1.41421356e+00f, 7.07106781e-01f + , 1.41421356e+00f, 5.94603558e-01f, 1.41421356e+00f, 5.00000000e-01f + , 1.41421356e+00f, 4.20448208e-01f, 1.41421356e+00f, 3.53553391e-01f + , 1.41421356e+00f, 2.97301779e-01f, 1.41421356e+00f, 2.50000000e-01f + , 1.41421356e+00f, 2.10224104e-01f, 1.41421356e+00f, 1.76776695e-01f + , 1.41421356e+00f, 1.48650889e-01f, 1.41421356e+00f, 1.25000000e-01f + , 1.41421356e+00f, 1.05112052e-01f, 1.41421356e+00f, 8.83883476e-02f } , { - 1.41421356e+00, 1.00000000e+00, 1.41421356e+00, 7.07106781e-01 - , 1.41421356e+00, 5.00000000e-01, 1.41421356e+00, 3.53553391e-01 - , 1.41421356e+00, 2.50000000e-01, 1.41421356e+00, 1.76776695e-01 - , 1.41421356e+00, 1.25000000e-01, 1.41421356e+00, 8.83883476e-02 - , 1.41421356e+00, 6.25000000e-02, 1.41421356e+00, 4.41941738e-02 - , 1.41421356e+00, 3.12500000e-02, 1.41421356e+00, 2.20970869e-02 - , 1.41421356e+00, 1.56250000e-02, 1.41421356e+00, 1.10485435e-02 - , 1.41421356e+00, 7.81250000e-03, 1.41421356e+00, 5.52427173e-03 + 1.41421356e+00f, 1.00000000e+00f, 1.41421356e+00f, 7.07106781e-01f + , 1.41421356e+00f, 5.00000000e-01f, 1.41421356e+00f, 3.53553391e-01f + , 1.41421356e+00f, 2.50000000e-01f, 1.41421356e+00f, 1.76776695e-01f + , 1.41421356e+00f, 1.25000000e-01f, 1.41421356e+00f, 8.83883476e-02f + , 1.41421356e+00f, 6.25000000e-02f, 1.41421356e+00f, 4.41941738e-02f + , 1.41421356e+00f, 3.12500000e-02f, 1.41421356e+00f, 2.20970869e-02f + , 1.41421356e+00f, 1.56250000e-02f, 1.41421356e+00f, 1.10485435e-02f + , 1.41421356e+00f, 7.81250000e-03f, 1.41421356e+00f, 5.52427173e-03f } }; static const ALIGNED(16) real pow2_2[2][32] = { { - 1.41421356e+00, 1.41421356e+00, 1.18920712e+00, 1.41421356e+00 - , 1.00000000e+00, 1.41421356e+00, 8.40896415e-01, 1.41421356e+00 - , 7.07106781e-01, 1.41421356e+00, 5.94603558e-01, 1.41421356e+00 - , 5.00000000e-01, 1.41421356e+00, 4.20448208e-01, 1.41421356e+00 - , 3.53553391e-01, 1.41421356e+00, 2.97301779e-01, 1.41421356e+00 - , 2.50000000e-01, 1.41421356e+00, 2.10224104e-01, 1.41421356e+00 - , 1.76776695e-01, 1.41421356e+00, 1.48650889e-01, 1.41421356e+00 - , 1.25000000e-01, 1.41421356e+00, 1.05112052e-01, 1.41421356e+00 + 1.41421356e+00f, 1.41421356e+00f, 1.18920712e+00f, 1.41421356e+00f + , 1.00000000e+00f, 1.41421356e+00f, 8.40896415e-01f, 1.41421356e+00f + , 7.07106781e-01f, 1.41421356e+00f, 5.94603558e-01f, 1.41421356e+00f + , 5.00000000e-01f, 1.41421356e+00f, 4.20448208e-01f, 1.41421356e+00f + , 3.53553391e-01f, 1.41421356e+00f, 2.97301779e-01f, 1.41421356e+00f + , 2.50000000e-01f, 1.41421356e+00f, 2.10224104e-01f, 1.41421356e+00f + , 1.76776695e-01f, 1.41421356e+00f, 1.48650889e-01f, 1.41421356e+00f + , 1.25000000e-01f, 1.41421356e+00f, 1.05112052e-01f, 1.41421356e+00f } , { - 1.41421356e+00, 1.41421356e+00, 1.00000000e+00, 1.41421356e+00 - , 7.07106781e-01, 1.41421356e+00, 5.00000000e-01, 1.41421356e+00 - , 3.53553391e-01, 1.41421356e+00, 2.50000000e-01, 1.41421356e+00 - , 1.76776695e-01, 1.41421356e+00, 1.25000000e-01, 1.41421356e+00 - , 8.83883476e-02, 1.41421356e+00, 6.25000000e-02, 1.41421356e+00 - , 4.41941738e-02, 1.41421356e+00, 3.12500000e-02, 1.41421356e+00 - , 2.20970869e-02, 1.41421356e+00, 1.56250000e-02, 1.41421356e+00 - , 1.10485435e-02, 1.41421356e+00, 7.81250000e-03, 1.41421356e+00 + 1.41421356e+00f, 1.41421356e+00f, 1.00000000e+00f, 1.41421356e+00f + , 7.07106781e-01f, 1.41421356e+00f, 5.00000000e-01f, 1.41421356e+00f + , 3.53553391e-01f, 1.41421356e+00f, 2.50000000e-01f, 1.41421356e+00f + , 1.76776695e-01f, 1.41421356e+00f, 1.25000000e-01f, 1.41421356e+00f + , 8.83883476e-02f, 1.41421356e+00f, 6.25000000e-02f, 1.41421356e+00f + , 4.41941738e-02f, 1.41421356e+00f, 3.12500000e-02f, 1.41421356e+00f + , 2.20970869e-02f, 1.41421356e+00f, 1.56250000e-02f, 1.41421356e+00f + , 1.10485435e-02f, 1.41421356e+00f, 7.81250000e-03f, 1.41421356e+00f } }; @@ -4514,7 +4514,7 @@ static const real win1[4][36] = , -2843824, 2152769, -1380133, 496293 } }; -const real COS9[9] = +const real INT123_COS9[9] = { 16777216, 16522332, 15765426, 14529495 , 12852093, 10784187, 8388608, 5738146 @@ -4522,7 +4522,7 @@ const real COS9[9] = }; static const real COS6_1 = 14529495; static const real COS6_2 = 8388608; -const real tfcos36[9] = +const real INT123_tfcos36[9] = { 8420651, 8684526, 9255805, 10240599 , 11863283, 14625092, 19849138, 32411092 diff --git a/src/libmpg123/layer1.c b/src/libmpg123/layer1.c index c5bfc75..83e0ef4 100644 --- a/src/libmpg123/layer1.c +++ b/src/libmpg123/layer1.c @@ -208,7 +208,7 @@ static int I_step_two(real fraction[2][SBLIMIT],unsigned int balloc[2*SBLIMIT], return 0; } -int do_layer1(mpg123_handle *fr) +int INT123_do_layer1(mpg123_handle *fr) { int clip=0; int i,stereo = fr->stereo; diff --git a/src/libmpg123/layer2.c b/src/libmpg123/layer2.c index 0f2071b..a4472cd 100644 --- a/src/libmpg123/layer2.c +++ b/src/libmpg123/layer2.c @@ -29,7 +29,7 @@ // The layer12_table is already in real format (fixed or float), just needs // a little scaling in the MMX/SSE case. -void init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m)) +void INT123_init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m)) { int k; real *table; @@ -40,7 +40,7 @@ void init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr } } -real* init_layer12_table(mpg123_handle *fr, real *table, int m) +real* INT123_init_layer12_table(mpg123_handle *fr, real *table, int m) { int i; for(i=0;i<63;i++) @@ -49,7 +49,7 @@ real* init_layer12_table(mpg123_handle *fr, real *table, int m) } #ifdef OPT_MMXORSSE -real* init_layer12_table_mmx(mpg123_handle *fr, real *table, int m) +real* INT123_init_layer12_table_mmx(mpg123_handle *fr, real *table, int m) { int i,j; if(!fr->p.down_sample) @@ -324,7 +324,7 @@ static void II_select_table(mpg123_handle *fr) } -int do_layer2(mpg123_handle *fr) +int INT123_do_layer2(mpg123_handle *fr) { int clip=0; int i,j; diff --git a/src/libmpg123/layer3.c b/src/libmpg123/layer3.c index 58205f4..a9a0702 100644 --- a/src/libmpg123/layer3.c +++ b/src/libmpg123/layer3.c @@ -37,7 +37,7 @@ #include "init_layer3.h" #endif -/* Decoder state data, living on the stack of do_layer3. */ +/* Decoder state data, living on the stack of INT123_do_layer3. */ struct gr_info_s { @@ -75,19 +75,19 @@ struct III_sideinfo }; #ifdef OPT_MMXORSSE -real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i) +real INT123_init_layer3_gainpow2_mmx(mpg123_handle *fr, int i) { if(!fr->p.down_sample) return DOUBLE_TO_REAL(16384.0 * pow((double)2.0,-0.25 * (double) (i+210) )); else return DOUBLE_TO_REAL(pow((double)2.0,-0.25 * (double) (i+210))); } #endif -real init_layer3_gainpow2(mpg123_handle *fr, int i) +real INT123_init_layer3_gainpow2(mpg123_handle *fr, int i) { return DOUBLE_TO_REAL_SCALE_LAYER3(pow((double)2.0,-0.25 * (double) (i+210)),i+256); } -void init_layer3_stuff(mpg123_handle *fr, real (*gainpow2_func)(mpg123_handle *fr, int i)) +void INT123_init_layer3_stuff(mpg123_handle *fr, real (*gainpow2_func)(mpg123_handle *fr, int i)) { int i,j; @@ -414,7 +414,7 @@ static int III_get_scale_factors_2(mpg123_handle *fr, int *scf,struct gr_info_s } }; - if(i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ + if(i_stereo) /* i_stereo AND second channel -> INT123_do_layer3() checks this */ slen = i_slen2[gr_info->scalefac_compress>>1]; else slen = n_slen2[gr_info->scalefac_compress]; @@ -1259,7 +1259,7 @@ static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_info) /* Calculation of the inverse MDCT used to be static without 3dnow - does that really matter? */ -void dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) +void INT123_dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) { real tmp[18]; @@ -1391,7 +1391,7 @@ void dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) t0 = REAL_MUL(cos9[0], (in[5] + in[9])); t1 = REAL_MUL(cos9[1], (in[9] - in[17])); - tmp[13] = REAL_MUL((t4 + t2 + t2), tfcos36[17-13]); + tmp[13] = REAL_MUL((t4 + t2 + t2), INT123_tfcos36[17-13]); t2 = REAL_MUL(cos9[2], (in[5] + in[17])); t6 = t3 - t0 - t2; @@ -1403,21 +1403,21 @@ void dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) t7 = REAL_MUL(COS6_1, in[7]); t1 = t2 + t4 + t7; - tmp[17] = REAL_MUL((t0 + t1), tfcos36[17-17]); - tmp[9] = REAL_MUL((t0 - t1), tfcos36[17-9]); + tmp[17] = REAL_MUL((t0 + t1), INT123_tfcos36[17-17]); + tmp[9] = REAL_MUL((t0 - t1), INT123_tfcos36[17-9]); t1 = REAL_MUL(cos18[2], (in[3] + in[15])); t2 += t1 - t7; - tmp[14] = REAL_MUL((t3 + t2), tfcos36[17-14]); + tmp[14] = REAL_MUL((t3 + t2), INT123_tfcos36[17-14]); t0 = REAL_MUL(COS6_1, (in[11] + in[15] - in[3])); - tmp[12] = REAL_MUL((t3 - t2), tfcos36[17-12]); + tmp[12] = REAL_MUL((t3 - t2), INT123_tfcos36[17-12]); t4 -= t1 + t7; - tmp[16] = REAL_MUL((t5 - t0), tfcos36[17-16]); - tmp[10] = REAL_MUL((t5 + t0), tfcos36[17-10]); - tmp[15] = REAL_MUL((t6 + t4), tfcos36[17-15]); - tmp[11] = REAL_MUL((t6 - t4), tfcos36[17-11]); + tmp[16] = REAL_MUL((t5 - t0), INT123_tfcos36[17-16]); + tmp[10] = REAL_MUL((t5 + t0), INT123_tfcos36[17-10]); + tmp[15] = REAL_MUL((t6 + t4), INT123_tfcos36[17-15]); + tmp[11] = REAL_MUL((t6 - t4), INT123_tfcos36[17-11]); } #define MACRO(v) { \ @@ -1712,7 +1712,7 @@ static void fill_pinfo_side(mpg123_handle *fr, struct III_sideinfo *si, int gr, #endif /* And at the end... the main layer3 handler */ -int do_layer3(mpg123_handle *fr) +int INT123_do_layer3(mpg123_handle *fr) { int gr, ch, ss,clip=0; int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */ @@ -1750,7 +1750,7 @@ int do_layer3(mpg123_handle *fr) return clip; } - set_pointer(fr, 1, sideinfo.main_data_begin); + INT123_set_pointer(fr, 1, sideinfo.main_data_begin); #ifndef NO_MOREINFO if(fr->pinfo) { @@ -1933,8 +1933,8 @@ int do_layer3(mpg123_handle *fr) if(n > (SSLIMIT-ss)) n=SSLIMIT-ss; /* Clip counting makes no sense with this function. */ - absynth_1to1_i486(hybridOut[0][ss], 0, fr, n); - absynth_1to1_i486(hybridOut[1][ss], 1, fr, n); + INT123_absynth_1to1_i486(hybridOut[0][ss], 0, fr, n); + INT123_absynth_1to1_i486(hybridOut[1][ss], 1, fr, n); ss+=n; fr->buffer.fill+=(2*2*32)*n; } diff --git a/src/libmpg123/lfs_alias.c b/src/libmpg123/lfs_alias.c deleted file mode 100644 index 6b0a8c6..0000000 --- a/src/libmpg123/lfs_alias.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - lfs_alias: Aliases to the small/native API functions with the size of long int as suffix. - - copyright 2010-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis - - Use case: Client code on Linux/x86-64 that defines _FILE_OFFSET_BITS to 64, - which is the only choice on that platform anyway. It should be no-op, but - prompts the platform-agnostic header of mpg123 to define API calls with the - corresponding suffix. This file provides the names for this case. It's cruft, - but glibc does it, too -- so people rely on it. - Oh, and it also caters for the lunatics that define _FILE_OFFSET_BITS=32 on - 32 bit platforms. In addition, it's needed for platforms that always have - off_t /= long, and clients still insisting on defining _FILE_OFFSET_BITS. - - Depending on use case, the aliases map to 32 (small) or 64 bit (large) offset - functions, to the ones from libmpg123 or the ones from lfs_wrap. - - So, two basic cases: - 1. mpg123_bla_32 alias for mpg123_bla (native) - 2. mpg123_bla alias for mpg123_bla_32 (wrapper) - Same for 64 bits. Confusing, I know. It sucks. - - Note that the mpg123 header is _not_ used here to avoid definition with whacky off_t. - The aliases are always about arguments of native alias_t type. This can be off_t, but - on Linux/x86, this is long int. The off_t declarations in mpg123.h confuse things, - so reproduce definitions for the wrapper functions in that case. The definitions are - pulled by an inline Perl script in any case ... no need to copy anything manually! - As a benefit, one can skip undefining possible largefile namings. -*/ - -#include "config.h" - -/* Hack for Solaris: Some system headers included from compat.h might force _FILE_OFFSET_BITS. Need to follow that here. - Also, want it around to have types defined. */ -#include "compat.h" - -#ifndef LFS_ALIAS_BITS -#error "I need the count of alias bits here." -#endif - -#define MACROCAT_REALLY(a, b) a ## b -#define MACROCAT(a, b) MACROCAT_REALLY(a, b) - -/* This is wicked switchery: Decide which way the aliases are facing. */ - -#if !(defined BUILD_NO_LARGENAME) && (_FILE_OFFSET_BITS+0 == LFS_ALIAS_BITS) - -/* The native functions have suffix, the aliases not. */ -#define NATIVE_SUFFIX MACROCAT(_, _FILE_OFFSET_BITS) -#define NATIVE_NAME(func) MACROCAT(func, NATIVE_SUFFIX) -#define ALIAS_NAME(func) func - -#else - -/* The alias functions have suffix, the native ones not. */ -#define ALIAS_SUFFIX MACROCAT(_, LFS_ALIAS_BITS) -#define ALIAS_NAME(func) MACROCAT(func, ALIAS_SUFFIX) -#define NATIVE_NAME(func) func - -#endif - -/* Copy of necessary definitions, actually just forward declarations. */ -struct mpg123_handle_struct; -typedef struct mpg123_handle_struct mpg123_handle; - - -/* Get attribute_align_arg, to stay safe. */ -#include "abi_align.h" - -/* - Extract the list of functions we need wrappers for, pregenerating the wrappers for simple cases (inline script for nedit): -perl -ne ' -if(/^\s*MPG123_EXPORT\s+(\S+)\s+(mpg123_\S+)\((.*)\);\s*$/) -{ - my $type = $1; - my $name = $2; - my $args = $3; - next unless ($type =~ /off_t/ or $args =~ /off_t/ or ($name =~ /open/ and $name ne mpg123_open_feed)); - $type =~ s/off_t/lfs_alias_t/g; - my @nargs = (); - $args =~ s/off_t/lfs_alias_t/g; - foreach my $a (split(/,/, $args)) - { - $a =~ s/^.*\s\**([a-z_]+)$/$1/; - push(@nargs, $a); - } - my $nargs = join(", ", @nargs); - $nargs = "Human: figure me out." if($nargs =~ /\(/); - print < +#include "config.h" + +// Only activate the explicit largefile stuff here. The rest of the code shall +// work with abstract 64 bit offsets, or just plain default off_t (possibly +// using _FILE_OFFSET_BYTES magic). +// Note that this macro does not influence normal off_t-using code. +#ifdef LFS_LARGEFILE_64 +#define _LARGEFILE64_SOURCE +#endif + +// For correct MPG123_EXPORT. +#include "abi_align.h" + +// Need the full header with non-portable API, for the bare mpg123_open*() +// declarations. But no renaming shenanigans. +#define MPG123_NO_LARGENAME +#include "mpg123.h" + +#include "lfs_wrap.h" +#include "abi_align.h" +#include "compat.h" #include #include -#include "compat.h" + #include "debug.h" -/* - Now, start off easy... translate simple API calls. - I need to deal with these here: -perl -ne ' -if(/^\s*MPG123_EXPORT\s+(\S+)\s+(mpg123_\S+)\((.*)\);\s*$/) -{ - $type = $1; - $name = $2; - $args = $3; - next unless ($type =~ /off_t/ or $args =~ /off_t/); - print "$name\n" unless grep {$_ eq $name} - ("mpg123_open", "mpg123_open_fd", "mpg123_open_handle", "mpg123_replace_reader", "mpg123_replace_reader_handle"); -}' < mpg123.h.in - -mpg123_decode_frame -mpg123_framebyframe_decode -mpg123_framepos -mpg123_tell -mpg123_tellframe -mpg123_tell_stream -mpg123_seek -mpg123_feedseek -mpg123_seek_frame -mpg123_timeframe -mpg123_index -mpg123_set_index -mpg123_position -mpg123_length -mpg123_set_filesize -mpg123_decode_raw ... that's experimental. - -Let's work on them in that order. -*/ +// We do not want to expose this publicly, but it is cleaner to have it also defined +// as portable API to offer the legacy function wrapper over. It's an undocumented +// function for int64_t arguments. +int attribute_align_arg mpg123_position64( mpg123_handle *fr, int64_t no, int64_t buffsize +, int64_t *current_frame, int64_t *frames_left +, double *current_seconds, double *seconds_left ); /* I see that I will need custom data storage. Main use is for the replaced I/O later, but the seek table for small file offsets needs extra storage, too. */ -/* The wrapper handle for descriptor and handle I/O. */ - -/* The handle is used for nothing (0), or one of these two modes of operation: */ -#define IO_FD 1 /* Wrapping over callbacks operation on integer file descriptor. */ -#define IO_HANDLE 2 /* Wrapping over custom handle callbacks. */ +// The wrapper handle for descriptor and handle I/O. +// It is also used for storing a converted frame index. +// Plain portable API I/O should not need it at all. +#define IO_HANDLE64 0 /* no wrapping at all: client-provided callbacks */ +#define IO_FD 1 /* default off_t callbacks */ +#define IO_HANDLE 2 /* Wrapping over custom handle callbacks with off_t. */ +#ifdef LFS_LARGEFILE_64 +#define IO_FD_64 3 /* off64_t callbacks */ +#define IO_HANDLE_64 4 /* ... with off64_t. */ +#endif +#define IO_INT_FD 5 /* Internal I/O using a file descriptor and wrappers defined here. */ struct wrap_data { /* Storage for small offset index table. */ - long *indextable; +#if SIZEOF_OFF_T == 4 + off_t *indextable; + // And ironically, another big offset table for mpg123_set_index_32. + // I wand to avoid having to change a line of code in the internals. + int64_t *set_indextable; +#endif /* I/O handle stuff */ - int iotype; /* IO_FD or IO_HANDLE */ - /* Data for IO_FD. */ + int iotype; // one of the above numbers + /* Data for IO_FD variants. */ int fd; int my_fd; /* A descriptor that the wrapper code opened itself. */ +#ifdef TIMEOUT_READ + time_t timeout_sec; +#endif + void* handle; // for IO_HANDLE variants /* The actual callbacks from the outside. */ - ssize_t (*r_read) (int, void *, size_t); - long (*r_lseek)(int, long, int); - /* Data for IO_HANDLE. */ - void* handle; - ssize_t (*r_h_read)(void *, void *, size_t); - long (*r_h_lseek)(void*, long, int); + mpg123_ssize_t (*r_read) (int, void *, size_t); + off_t (*r_lseek)(int, off_t, int); + mpg123_ssize_t (*r_h_read)(void *, void *, size_t); + off_t (*r_h_lseek)(void*, off_t, int); +#if LFS_LARGEFILE_64 + mpg123_ssize_t (*r_read_64) (int, void *, size_t); + off64_t (*r_lseek_64)(int, off64_t, int); + mpg123_ssize_t (*r_h_read_64)(void *, void *, size_t); + off64_t (*r_h_lseek_64)(void*, off64_t, int); +#endif void (*h_cleanup)(void*); }; - /* Cleanup I/O part of the handle handle... but not deleting the wrapper handle itself. That is stored in the frame and only deleted on mpg123_delete(). */ static void wrap_io_cleanup(void *handle) { struct wrap_data *ioh = handle; - if(ioh->iotype == IO_HANDLE) - { + debug("wrapper I/O cleanup"); + if(ioh->iotype == IO_HANDLE +#ifdef LFS_LARGEFILE_64 + || ioh->iotype == IO_HANDLE_64 +#endif + ){ if(ioh->h_cleanup != NULL && ioh->handle != NULL) - ioh->h_cleanup(ioh->handle); - + { + mdebug("calling client handle cleanup %p", ioh->handle); + ioh->h_cleanup(ioh->handle); + } ioh->handle = NULL; } if(ioh->my_fd >= 0) { + mdebug("closing my fd %d", ioh->my_fd); close(ioh->my_fd); ioh->my_fd = -1; } } /* Really finish off the handle... freeing all memory. */ -static void wrap_destroy(void *handle) +void INT123_wrap_destroy(void *handle) { struct wrap_data *wh = handle; + if(!wh) + return; wrap_io_cleanup(handle); +#if SIZEOF_OFF_T == 4 if(wh->indextable != NULL) - free(wh->indextable); + free(wh->indextable); + if(wh->set_indextable != NULL) + free(wh->set_indextable); +#endif free(wh); } /* More helper code... extract the special wrapper handle, possible allocate and initialize it. */ -static struct wrap_data* wrap_get(mpg123_handle *mh) +static struct wrap_data* wrap_get(mpg123_handle *mh, int force_alloc) { struct wrap_data* whd; - if(mh == NULL) return NULL; + void ** whd_ = INT123_wrap_handle(mh); + + if(whd_ == NULL) + return NULL; /* Access the private storage inside the mpg123 handle. The real callback functions and handles are stored there. */ - if(mh->wrapperdata == NULL) + if(*whd_ == NULL && force_alloc) { /* Create a new one. */ - mh->wrapperdata = malloc(sizeof(struct wrap_data)); - if(mh->wrapperdata == NULL) + *whd_ = malloc(sizeof(struct wrap_data)); + if(*whd_ == NULL) { - mh->err = MPG123_OUT_OF_MEM; + INT123_set_err(mh, MPG123_OUT_OF_MEM); return NULL; } - /* When we have wrapper data present, the callback for its proper cleanup is needed. */ - mh->wrapperclean = wrap_destroy; - - whd = mh->wrapperdata; + whd = *whd_; +#if SIZEOF_OFF_T == 4 whd->indextable = NULL; - whd->iotype = 0; + whd->set_indextable = NULL; +#endif + whd->iotype = IO_HANDLE64; // By default, the I/O path is not affected. whd->fd = -1; whd->my_fd = -1; + whd->handle = NULL; whd->r_read = NULL; whd->r_lseek = NULL; - whd->handle = NULL; whd->r_h_read = NULL; whd->r_h_lseek = NULL; +#if LFS_LARGEFILE_64 + whd->r_read_64 = NULL; + whd->r_lseek_64 = NULL; + whd->r_h_read_64 = NULL; + whd->r_h_lseek_64 = NULL; +#endif whd->h_cleanup = NULL; } - else whd = mh->wrapperdata; + else whd = *whd_; return whd; } /* After settling the data... start with some simple wrappers. */ -#undef mpg123_decode_frame -/* int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) */ -int attribute_align_arg mpg123_decode_frame(mpg123_handle *mh, long *num, unsigned char **audio, size_t *bytes) +// The fist block of wrappers is always present, using the native off_t width. +// A second block mirrors that in case of sizeof(off_t)==4 with _32 suffix. +// A third block follows if 64 bit off_t is available with _64 suffix, just aliasing +// the int64_t functions. + +#define OFF_CONV(value, variable, handle) \ + if((value) >= OFF_MIN && (value) <= OFF_MAX) \ + variable = (off_t)(value); \ + else return INT123_set_err(handle, MPG123_LFS_OVERFLOW); + +#define OFF_CONVP(value, varpointer, handle) \ + if(varpointer){ OFF_CONV(value, *(varpointer), handle) } + +#define OFF_RETURN(value, handle) \ + return ((value) >= OFF_MIN && (value) <= OFF_MAX) \ + ? (off_t)(value) \ + : INT123_set_err(handle, MPG123_LFS_OVERFLOW); + +int attribute_align_arg mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) { - off_t largenum; + int64_t fnum = 0; + int ret = mpg123_framebyframe_decode64(mh, &fnum, audio, bytes); + OFF_CONVP(fnum, num, mh) + return ret; +} + +int attribute_align_arg mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) +{ + int64_t fnum = 0; + int ret = mpg123_decode_frame64(mh, &fnum, audio, bytes); + OFF_CONVP(fnum, num, mh) + return ret; +} + +off_t attribute_align_arg mpg123_timeframe(mpg123_handle *mh, double seconds) +{ + int64_t b = mpg123_timeframe64(mh, seconds); + OFF_RETURN(b, mh) +} + +off_t attribute_align_arg mpg123_tell(mpg123_handle *mh) +{ + int64_t pos = mpg123_tell64(mh); + OFF_RETURN(pos, mh) +} + +off_t attribute_align_arg mpg123_tellframe(mpg123_handle *mh) +{ + int64_t frame = mpg123_tellframe64(mh); + OFF_RETURN(frame, mh) +} + +off_t attribute_align_arg mpg123_tell_stream(mpg123_handle *mh) +{ + int64_t off = mpg123_tell_stream64(mh); + OFF_RETURN(off, mh) +} + +off_t attribute_align_arg mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence) +{ + int64_t ret = mpg123_seek64(mh, (int64_t)sampleoff, whence); + OFF_RETURN(ret, mh) +} + +off_t attribute_align_arg mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset) +{ + int64_t inoff = 0; + int64_t ret = mpg123_feedseek64(mh, (int64_t)sampleoff, whence, &inoff); + OFF_CONVP(inoff, input_offset, mh) + OFF_RETURN(ret, mh) +} + +off_t attribute_align_arg mpg123_seek_frame(mpg123_handle *mh, off_t offset, int whence) +{ + int64_t ret = mpg123_seek_frame64(mh, (int64_t)offset, whence); + OFF_RETURN(ret, mh) +} + +int attribute_align_arg mpg123_set_filesize(mpg123_handle *mh, off_t size) +{ + return mpg123_set_filesize64(mh, (int64_t)size); +} + +off_t attribute_align_arg mpg123_framelength(mpg123_handle *mh) +{ + int64_t ret = mpg123_framelength64(mh); + OFF_RETURN(ret, mh) +} + +off_t attribute_align_arg mpg123_length(mpg123_handle *mh) +{ + int64_t ret = mpg123_length64(mh); + OFF_RETURN(ret, mh) +} + +// Native off_t is either identical to int32_t or int64_t. +// If the former, we create a copy of the index table. +int attribute_align_arg mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill) +{ +#if SIZEOF_OFF_T == 8 + return mpg123_index64(mh, (int64_t**)offsets, (int64_t*)step, fill); +#else int err; - - err = MPG123_LARGENAME(mpg123_decode_frame)(mh, &largenum, audio, bytes); - if(err == MPG123_OK && num != NULL) - { - *num = largenum; - if(*num != largenum) - { - mh->err = MPG123_LFS_OVERFLOW; - err = MPG123_ERR; - } - } - return err; -} - -#undef mpg123_framebyframe_decode -/* int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); */ -int attribute_align_arg mpg123_framebyframe_decode(mpg123_handle *mh, long *num, unsigned char **audio, size_t *bytes) -{ - off_t largenum; - int err; - - err = MPG123_LARGENAME(mpg123_framebyframe_decode)(mh, &largenum, audio, bytes); - if(err == MPG123_OK && num != NULL) - { - *num = largenum; - if(*num != largenum) - { - mh->err = MPG123_LFS_OVERFLOW; - err = MPG123_ERR; - } - } - return err; -} - -#undef mpg123_framepos -/* off_t mpg123_framepos(mpg123_handle *mh); */ -long attribute_align_arg mpg123_framepos(mpg123_handle *mh) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_framepos)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_tell -/* off_t mpg123_tell(mpg123_handle *mh); */ -long attribute_align_arg mpg123_tell(mpg123_handle *mh) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_tell)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_tellframe -/* off_t mpg123_tellframe(mpg123_handle *mh); */ -long attribute_align_arg mpg123_tellframe(mpg123_handle *mh) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_tellframe)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_tell_stream -/* off_t mpg123_tell_stream(mpg123_handle *mh); */ -long attribute_align_arg mpg123_tell_stream(mpg123_handle *mh) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_tell_stream)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_seek -/* off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence); */ -long attribute_align_arg mpg123_seek(mpg123_handle *mh, long sampleoff, int whence) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_seek)(mh, sampleoff, whence); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_feedseek -/* off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset); */ -long attribute_align_arg mpg123_feedseek(mpg123_handle *mh, long sampleoff, int whence, long *input_offset) -{ - long val; - off_t largeioff; - off_t largeval; - if(input_offset == NULL) - { - mh->err = MPG123_NULL_POINTER; - return MPG123_ERR; - } - - largeval = MPG123_LARGENAME(mpg123_feedseek)(mh, sampleoff, whence, &largeioff); - /* Error/message codes are small... */ - if(largeval < 0) return (long)largeval; - - val = largeval; - *input_offset = largeioff; - if(val != largeval || *input_offset != largeioff) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_seek_frame -/* off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence); */ -long attribute_align_arg mpg123_seek_frame(mpg123_handle *mh, long frameoff, int whence) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_seek_frame)(mh, frameoff, whence); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -#undef mpg123_timeframe -/* off_t mpg123_timeframe(mpg123_handle *mh, double sec); */ -long attribute_align_arg mpg123_timeframe(mpg123_handle *mh, double sec) -{ - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_timeframe)(mh, sec); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; -} - -/* Now something less simple: Index retrieval and manipulation. - The index is an _array_ of off_t, which means that I need to construct a copy with translated long values. */ -#undef mpg123_index -/* int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill) */ -int attribute_align_arg mpg123_index(mpg123_handle *mh, long **offsets, long *step, size_t *fill) -{ - int err; - size_t i; - long smallstep; - size_t thefill; - off_t largestep; - off_t *largeoffsets; + int64_t largestep; + int64_t *largeoffsets; struct wrap_data *whd; - if(mh == NULL) return MPG123_BAD_HANDLE; + if(mh == NULL) + return MPG123_BAD_HANDLE; if(offsets == NULL || step == NULL || fill == NULL) - { - mh->err = MPG123_BAD_INDEX_PAR; - return MPG123_ERR; - } + return INT123_set_err(mh, MPG123_BAD_INDEX_PAR); + *fill = 0; // better safe than sorry - whd = wrap_get(mh); + whd = wrap_get(mh, 1); if(whd == NULL) return MPG123_ERR; - err = MPG123_LARGENAME(mpg123_index)(mh, &largeoffsets, &largestep, &thefill); + err = mpg123_index64(mh, &largeoffsets, &largestep, fill); if(err != MPG123_OK) return err; /* For a _very_ large file, even the step could overflow. */ - smallstep = largestep; - if(smallstep != largestep) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - if(step != NULL) *step = smallstep; + OFF_CONV(largestep, *step, mh); /* When there are no values stored, there is no table content to take care of. Table pointer does not matter. Mission completed. */ - if(thefill == 0) return MPG123_OK; - - if(fill != NULL) *fill = thefill; + if(*fill == 0) return MPG123_OK; /* Construct a copy of the index to hand over to the small-minded client. */ - *offsets = safe_realloc(whd->indextable, (*fill)*sizeof(long)); + *offsets = INT123_safe_realloc(whd->indextable, (*fill)*sizeof(int32_t)); if(*offsets == NULL) - { - mh->err = MPG123_OUT_OF_MEM; - return MPG123_ERR; - } + return INT123_set_err(mh, MPG123_OUT_OF_MEM); whd->indextable = *offsets; /* Elaborate conversion of each index value, with overflow check. */ - for(i=0; i<*fill; ++i) - { - whd->indextable[i] = largeoffsets[i]; - if(whd->indextable[i] != largeoffsets[i]) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - } + for(size_t i=0; i<*fill; ++i) + OFF_CONV(largeoffsets[i], whd->indextable[i], mh); /* If we came that far... there should be a valid copy of the table now. */ return MPG123_OK; +#endif } -/* The writing does basically the same than the above, just the opposite. - Oh, and the overflow checks are not needed -- off_t is bigger than long. */ -#undef mpg123_set_index -/* int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill); */ -int attribute_align_arg mpg123_set_index(mpg123_handle *mh, long *offsets, long step, size_t fill) +int attribute_align_arg mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill) { +#if SIZEOF_OFF_T == 8 + return mpg123_set_index64(mh, (int64_t*)offsets, (int64_t)step, fill); +#else int err; - size_t i; struct wrap_data *whd; - off_t *indextmp; + int64_t *indextmp; if(mh == NULL) return MPG123_BAD_HANDLE; - whd = wrap_get(mh); + whd = wrap_get(mh, 1); if(whd == NULL) return MPG123_ERR; - /* Expensive temporary storage... for staying outside at the API layer. */ - indextmp = malloc(fill*sizeof(off_t)); - if(indextmp == NULL) - { - mh->err = MPG123_OUT_OF_MEM; - return MPG123_ERR; - } - if(fill > 0 && offsets == NULL) - { - mh->err = MPG123_BAD_INDEX_PAR; - err = MPG123_ERR; - } + return INT123_set_err(mh, MPG123_BAD_INDEX_PAR); else { + /* Expensive temporary storage... for staying outside at the API layer. */ + indextmp = INT123_safe_realloc(whd->set_indextable, fill*sizeof(int64_t)); + if(indextmp == NULL) + return INT123_set_err(mh, MPG123_OUT_OF_MEM); + whd->set_indextable = indextmp; /* Fill the large-file copy of the provided index, then feed it to mpg123. */ - for(i=0; ierr = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - - if(current_frame != NULL) *current_frame = small_curframe; - - if(frames_left != NULL) *frames_left = small_frameleft; - - + OFF_CONVP(curframe, current_frame, mh) + OFF_CONVP(frameleft, frames_left, mh); return MPG123_OK; } -#undef mpg123_framelength -/* off_t mpg123_framelength(mpg123_handle *mh); */ -long attribute_align_arg mpg123_framelength(mpg123_handle *mh) -{ - long val; - off_t largeval; +// _32 aliases only for native 32 bit off_t +// Will compilers be smart enough to optimize away the extra function call? +#if SIZEOF_OFF_T == 4 - largeval = MPG123_LARGENAME(mpg123_framelength)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; +// The open routines are trivial now. I only have differeing symbols suffixes +// to keep legacy ABI. + +int attribute_align_arg mpg123_open_32(mpg123_handle *mh, const char *path) +{ + return mpg123_open(mh, path); } -#undef mpg123_length -/* off_t mpg123_length(mpg123_handle *mh); */ -long attribute_align_arg mpg123_length(mpg123_handle *mh) +int attribute_align_arg mpg123_open_fixed_32( mpg123_handle *mh, const char *path +, int channels, int encoding ) { - long val; - off_t largeval; - - largeval = MPG123_LARGENAME(mpg123_length)(mh); - val = largeval; - if(val != largeval) - { - mh->err = MPG123_LFS_OVERFLOW; - return MPG123_ERR; - } - return val; + return mpg123_open_fixed(mh, path, channels, encoding); } -/* The simplest wrapper of all... */ -#undef mpg123_set_filesize -/* int mpg123_set_filesize(mpg123_handle *mh, off_t size); */ -int attribute_align_arg mpg123_set_filesize(mpg123_handle *mh, long size) +int attribute_align_arg mpg123_open_fd_32(mpg123_handle *mh, int fd) { - return MPG123_LARGENAME(mpg123_set_filesize)(mh, size); + return mpg123_open_fd(mh, fd); } +int attribute_align_arg mpg123_open_handle_32(mpg123_handle *mh, void *iohandle) +{ + return mpg123_open_handle(mh, iohandle); +} + +int attribute_align_arg mpg123_framebyframe_decode_32(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) +{ + return mpg123_framebyframe_decode(mh, num, audio, bytes); +} + +int attribute_align_arg mpg123_decode_frame_32(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) +{ + return mpg123_decode_frame(mh, num, audio, bytes); +} + +off_t attribute_align_arg mpg123_timeframe_32(mpg123_handle *mh, double seconds) +{ + return mpg123_timeframe64(mh, seconds); +} + +off_t attribute_align_arg mpg123_tell_32(mpg123_handle *mh) +{ + return mpg123_tell(mh); +} + +off_t attribute_align_arg mpg123_tellframe_32(mpg123_handle *mh) +{ + return mpg123_tellframe(mh); +} + +off_t attribute_align_arg mpg123_tell_stream_32(mpg123_handle *mh) +{ + return mpg123_tell_stream(mh); +} + +off_t attribute_align_arg mpg123_seek_32(mpg123_handle *mh, off_t sampleoff, int whence) +{ + return mpg123_seek(mh, sampleoff, whence); +} + +off_t attribute_align_arg mpg123_feedseek_32(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset) +{ + return mpg123_feedseek(mh, sampleoff, whence, input_offset); +} + +off_t attribute_align_arg mpg123_seek_frame_32(mpg123_handle *mh, off_t offset, int whence) +{ + return mpg123_seek_frame(mh, offset, whence); +} + +int attribute_align_arg mpg123_set_filesize_32(mpg123_handle *mh, off_t size) +{ + return mpg123_set_filesize(mh, size); +} + +off_t attribute_align_arg mpg123_framelength_32(mpg123_handle *mh) +{ + return mpg123_framelength(mh); +} + +off_t attribute_align_arg mpg123_length_32(mpg123_handle *mh) +{ + return mpg123_length(mh); +} + +int attribute_align_arg mpg123_index_32(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill) +{ + return mpg123_index(mh, offsets, step, fill); +} + +int attribute_align_arg mpg123_set_index_32(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill) +{ + return mpg123_set_index(mh, offsets, step, fill); +} + +off_t attribute_align_arg mpg123_framepos_32(mpg123_handle *mh) +{ + return mpg123_framepos(mh); +} + +int attribute_align_arg mpg123_position_32( mpg123_handle *mh, off_t INT123_frame_offset +, off_t buffered_bytes, off_t *current_frame, off_t *frames_left +, double *current_seconds, double *seconds_left ) +{ + return mpg123_position( mh, INT123_frame_offset, buffered_bytes + , current_frame, frames_left, current_seconds, seconds_left ); +} + +#endif + +// _64 aliases if we got some off64_t to work with. +#ifdef LFS_LARGEFILE_64 + +int attribute_align_arg mpg123_open_64(mpg123_handle *mh, const char *path) +{ + return mpg123_open(mh, path); +} + +int attribute_align_arg mpg123_open_fixed_64( mpg123_handle *mh, const char *path +, int channels, int encoding ) +{ + return mpg123_open_fixed(mh, path, channels, encoding); +} + +int attribute_align_arg mpg123_open_fd_64(mpg123_handle *mh, int fd) +{ + return mpg123_open_fd(mh, fd); +} + +int attribute_align_arg mpg123_open_handle_64(mpg123_handle *mh, void *iohandle) +{ + return mpg123_open_handle(mh, iohandle); +} + +int attribute_align_arg mpg123_framebyframe_decode_64(mpg123_handle *mh, off64_t *num, unsigned char **audio, size_t *bytes) +{ + return mpg123_framebyframe_decode64(mh, (int64_t*)num, audio, bytes); +} + +int attribute_align_arg mpg123_decode_frame_64(mpg123_handle *mh, off64_t *num, unsigned char **audio, size_t *bytes) +{ + return mpg123_decode_frame64(mh, (int64_t*)num, audio, bytes); +} + +off64_t attribute_align_arg mpg123_timeframe_64(mpg123_handle *mh, double seconds) +{ + return mpg123_timeframe64(mh, seconds); +} + +off64_t attribute_align_arg mpg123_tell_64(mpg123_handle *mh) +{ + return mpg123_tell64(mh); +} + +off64_t attribute_align_arg mpg123_tellframe_64(mpg123_handle *mh) +{ + return mpg123_tellframe64(mh); +} + +off64_t attribute_align_arg mpg123_tell_stream_64(mpg123_handle *mh) +{ + return mpg123_tell_stream64(mh); +} + +off64_t attribute_align_arg mpg123_seek_64(mpg123_handle *mh, off64_t sampleoff, int whence) +{ + return mpg123_seek64(mh, (int64_t)sampleoff, whence); +} + +off64_t attribute_align_arg mpg123_feedseek_64(mpg123_handle *mh, off64_t sampleoff, int whence, off64_t *input_offset) +{ + return mpg123_feedseek64(mh, (int64_t)sampleoff, whence, (int64_t*)input_offset); +} + +off64_t attribute_align_arg mpg123_seek_frame_64(mpg123_handle *mh, off64_t offset, int whence) +{ + return mpg123_seek_frame64(mh, (int64_t)offset, whence); +} + +int attribute_align_arg mpg123_set_filesize_64(mpg123_handle *mh, off64_t size) +{ + return mpg123_set_filesize64(mh, (int64_t)size); +} + +off64_t attribute_align_arg mpg123_framelength_64(mpg123_handle *mh) +{ + return mpg123_framelength64(mh); +} + +off64_t attribute_align_arg mpg123_length_64(mpg123_handle *mh) +{ + return mpg123_length64(mh); +} + +int attribute_align_arg mpg123_index_64(mpg123_handle *mh, off64_t **offsets, off64_t *step, size_t *fill) +{ + return mpg123_index64(mh, (int64_t**)offsets, (int64_t*)step, fill); +} + +int attribute_align_arg mpg123_set_index_64(mpg123_handle *mh, off64_t *offsets, off64_t step, size_t fill) +{ + return mpg123_set_index64(mh, (int64_t*)offsets, (int64_t)step, fill); +} + +off64_t attribute_align_arg mpg123_framepos_64(mpg123_handle *mh) +{ + return mpg123_framepos64(mh); +} + +int attribute_align_arg mpg123_position_64( mpg123_handle *mh, off64_t INT123_frame_offset +, off64_t buffered_bytes, off64_t *current_frame, off64_t *frames_left +, double *current_seconds, double *seconds_left ) +{ + return mpg123_position64( mh, (int64_t)INT123_frame_offset, (int64_t)buffered_bytes + , (int64_t*)current_frame, (int64_t*)frames_left, current_seconds, seconds_left ); +} + +#endif /* ========================================= THE BOUNDARY OF SANITY Behold, stranger! ========================================= */ - -/* - The messy part: Replacement of I/O core (actally, this is only due to lseek()). - Both descriptor and handle replaced I/O are mapped to replaced handle I/O, the handle wrapping over the actual callbacks and the actual handle/descriptor. - You got multiple levels of handles and callbacks to think about. Have fun reading and comprehending. -*/ - -/* Could go into compat.h ... Windows needs that flag. */ -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -/* Read callback needs nothing special. */ -ssize_t wrap_read(void* handle, void *buf, size_t count) +// One read callback wrapping over all 4 client callback variants. +static int wrap_read(void* handle, void *buf, size_t count, size_t *got) { struct wrap_data *ioh = handle; + ptrdiff_t retgot = -1; switch(ioh->iotype) { - case IO_FD: return ioh->r_read(ioh->fd, buf, count); - case IO_HANDLE: return ioh->r_h_read(ioh->handle, buf, count); + case IO_FD: + retgot = ioh->r_read(ioh->fd, buf, count); + break; + case IO_HANDLE: + retgot = ioh->r_h_read(ioh->handle, buf, count); + break; +#ifdef LFS_LARGEFILE_64 + case IO_FD_64: + retgot = ioh->r_read_64(ioh->fd, buf, count); + break; + case IO_HANDLE_64: + retgot = ioh->r_h_read_64(ioh->handle, buf, count); + break; +#endif + default: + error("Serious breakage - bad IO type in LFS wrapper!"); + } + if(got) + *got = retgot > 0 ? (size_t)retgot : 0; + return retgot >= 0 ? 0 : -1; +} + +// One seek callback wrapping over all 4 client callback variants. +static int64_t wrap_lseek(void *handle, int64_t offset, int whence) +{ + struct wrap_data *ioh = handle; + + if( (ioh->iotype == IO_FD || ioh->iotype == IO_HANDLE) && + (offset < OFF_MIN || offset > OFF_MAX) ) + { + errno = EOVERFLOW; + return -1; + } + switch(ioh->iotype) + { + case IO_FD: return ioh->r_lseek(ioh->fd, (off_t)offset, whence); + case IO_HANDLE: return ioh->r_h_lseek(ioh->handle, (off_t)offset, whence); +#ifdef LFS_LARGEFILE_64 + case IO_FD_64: return ioh->r_lseek_64(ioh->fd, offset, whence); + case IO_HANDLE_64: return ioh->r_h_lseek_64(ioh->handle, offset, whence); +#endif } error("Serious breakage - bad IO type in LFS wrapper!"); return -1; } -/* Seek callback needs protection from too big offsets. */ -off_t wrap_lseek(void *handle, off_t offset, int whence) +// This is assuming an internally opened file, which usually will be +// using 64 bit offsets. It keeps reading on on trivial interruptions. +// I guess any file descriptor that matches the libc should work fine. +static int internal_read64(void *handle, void *buf, size_t bytes, size_t *got_bytes) { - struct wrap_data *ioh = handle; - long smalloff = offset; - if(smalloff == offset) - { - switch(ioh->iotype) - { - case IO_FD: return ioh->r_lseek(ioh->fd, smalloff, whence); - case IO_HANDLE: return ioh->r_h_lseek(ioh->handle, smalloff, whence); - } + int ret = 0; + if(!handle || (!buf && bytes)) return -1; + struct wrap_data* ioh = handle; + int fd = ioh->fd; + size_t got = 0; + errno = 0; + while(bytes) + { +#ifdef TIMEOUT_READ + if(ioh->timeout_sec) + { + fd_set fds; + tv.tv_sec = ioh->timeout_sec; + tv.tv_usec = 0; + FD_ZERO(&fds); + FD_SET(fd, &fds); + int sret = select(fd+1, &fds, NULL, NULL, &tv); + if(sret < 1) + { + return -1; // timeout means error + // communicate quietness flag? if(NOQUIET) error("stream timed out"); + } + } +#endif + errno = 0; + ptrdiff_t part = read(fd, (char*)buf+got, bytes); + if(part > 0) // == 0 is end of file + { + SATURATE_SUB(bytes, part, 0) + SATURATE_ADD(got, part, SIZE_MAX) + } else if(errno != EINTR && errno != EAGAIN +#if defined(EWOULDBLOCK) && (EWOULDBLOCK != EAGAIN) + && errno != EWOULDBLOCK +#endif + ){ + if(part < 0) + ret = -1; + break; + } } - else + if(got_bytes) + *got_bytes = got; + return ret; +} + +static int64_t internal_lseek64(void *handle, int64_t offset, int whence) +{ + struct wrap_data* ioh = handle; +#ifdef LFS_LARGEFILE_64 + return lseek64(ioh->fd, offset, whence); +#else + if(offset < OFF_MIN || offset > OFF_MAX) { errno = EOVERFLOW; return -1; } + return lseek(ioh->fd, (off_t)offset, whence); +#endif } +int INT123_wrap_open(mpg123_handle *mh, void *handle, const char *path, int fd, long timeout, int quiet) +{ + int force_alloc = (path || fd >= 0) ? 1 : 0; + struct wrap_data *ioh = wrap_get(mh, force_alloc); + if(ioh == NULL && force_alloc) + return MPG123_ERR; + if(!path && fd < 0) + { + if(!ioh || ioh->iotype == IO_HANDLE64) + { + mdebug("user-supplied 64 bit I/O on user-supplied handle %p", handle); + return LFS_WRAP_NONE; + } + if(ioh->iotype == IO_HANDLE) + { + mdebug("wrapped user handle %p", handle); + ioh->handle = handle; + if(ioh->r_h_read && ioh->r_h_lseek) + return mpg123_reader64(mh, wrap_read, wrap_lseek, wrap_io_cleanup); + return INT123_set_err(mh, MPG123_NO_READER); + } +#ifdef LFS_LARGEFILE_64 + if(ioh->iotype == IO_HANDLE_64) + { + mdebug("wrapped 64 bit user handle %p", handle); + ioh->handle = handle; + if(ioh->r_h_read_64 && ioh->r_h_lseek_64) + return mpg123_reader64(mh, wrap_read, wrap_lseek, wrap_io_cleanup); + return INT123_set_err(mh, MPG123_NO_READER); + } +#endif + } + if(path) + { + debug("opening path (providing fd)"); + // Open the resource and store the descriptor for closing later. + int flags=O_RDONLY; +#ifdef O_BINARY + flags |= O_BINARY; +#endif +#ifdef LFS_LARGEFILE_64 + flags |= O_LARGEFILE; +#endif + errno = 0; + ioh->my_fd = fd = INT123_compat_open(path, flags); + if(fd < 0) + { + if(!quiet) + error2("Cannot open file %s: %s", path, INT123_strerror(errno)); + return INT123_set_err(mh, MPG123_BAD_FILE); + } + } + if(fd >= 0) + { + mdebug("working with given fd %d", fd); + ioh->fd = fd; + // Prepared I/O using external callbacks. + if(ioh->iotype == IO_FD) + { + debug("native fd callbacks"); + if(ioh->r_read && ioh->r_lseek) + return mpg123_reader64(mh, wrap_read, wrap_lseek, wrap_io_cleanup); + return INT123_set_err(mh, MPG123_NO_READER); + } +#ifdef LFS_LARGEFILE_64 + if(ioh->iotype == IO_FD_64) + { + debug("64 bit fd callbacks"); + if(ioh->r_read_64 && ioh->r_lseek_64) + return mpg123_reader64(mh, wrap_read, wrap_lseek, wrap_io_cleanup); + return INT123_set_err(mh, MPG123_NO_READER); + } + debug("internal 64 bit I/O"); +#else + debug("internal 32-behind-64 bit I/O"); +#endif + // Doing our own thing using the given/just-opened descriptor. + ioh->iotype = IO_INT_FD; +#ifdef TIMEOUT_READ + ioh->timeout_sec = (time_t)(timeout > 0 ? timeout : 0); + if(ioh->timeout_sec > 0) + { + mdebug("timeout reader with %ld s", timeout); + int flags; + flags = fcntl(fd, F_GETFL); + flags |= O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + } +#endif + return mpg123_reader64(mh, internal_read64, internal_lseek64, wrap_io_cleanup); + } + return MPG123_ERR; +} -/* - Now, let's replace the API dealing with replacement I/O. - Start with undefining the renames... -*/ +// So, native off_t reader replacement. -#undef mpg123_replace_reader -#undef mpg123_replace_reader_handle -#undef mpg123_open -#undef mpg123_open_fixed -#undef mpg123_open_fd -#undef mpg123_open_handle - - -/* Normal reader replacement needs fallback implementations. */ -static ssize_t fallback_read(int fd, void *buf, size_t count) +// Defining a wrapper to the native read to be sure the prototype matches. +// There are platforms where it is read(int, void*, unsigned int). +// We know that we read small chunks where the difference does not matter. Could +// apply specific hackery, use a common compat_read() (INT123_unintr_read()?) with system +// specifics. +static mpg123_ssize_t fallback_read(int fd, void *buf, size_t count) { return read(fd, buf, count); } -static long fallback_lseek(int fd, long offset, int whence) -{ - /* Since the offset is long int already, the returned value really should fit into a long... but whatever. */ - long newpos_long; - off_t newpos; - newpos = lseek(fd, offset, whence); - newpos_long = newpos; - if(newpos_long == newpos) - return newpos_long; - else - { - errno = EOVERFLOW; - return -1; - } -} - /* Reader replacement prepares the hidden handle storage for next mpg123_open_fd() or plain mpg123_open(). */ -int attribute_align_arg mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), long (*r_lseek)(int, long, int) ) +int attribute_align_arg mpg123_replace_reader(mpg123_handle *mh, mpg123_ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int) ) { struct wrap_data* ioh; if(mh == NULL) return MPG123_ERR; mpg123_close(mh); - ioh = wrap_get(mh); + ioh = wrap_get(mh, 1); if(ioh == NULL) return MPG123_ERR; /* If both callbacks are NULL, switch totally to internal I/O, else just use fallback for at most half of them. */ if(r_read == NULL && r_lseek == NULL) { - /* Only the type is actually important to disable the code. */ - ioh->iotype = 0; + ioh->iotype = IO_INT_FD; ioh->fd = -1; ioh->r_read = NULL; ioh->r_lseek = NULL; @@ -634,21 +859,21 @@ int attribute_align_arg mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_rea ioh->iotype = IO_FD; ioh->fd = -1; /* On next mpg123_open_fd(), this gets a value. */ ioh->r_read = r_read != NULL ? r_read : fallback_read; - ioh->r_lseek = r_lseek != NULL ? r_lseek : fallback_lseek; + ioh->r_lseek = r_lseek != NULL ? r_lseek : lseek; } /* The real reader replacement will happen while opening. */ return MPG123_OK; } -int attribute_align_arg mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t (*r_read) (void*, void *, size_t), long (*r_lseek)(void*, long, int), void (*cleanup)(void*)) +int attribute_align_arg mpg123_replace_reader_handle(mpg123_handle *mh, mpg123_ssize_t (*r_read) (void*, void *, size_t), off_t (*r_lseek)(void*, off_t, int), void (*cleanup)(void*)) { struct wrap_data* ioh; if(mh == NULL) return MPG123_ERR; mpg123_close(mh); - ioh = wrap_get(mh); + ioh = wrap_get(mh, 1); if(ioh == NULL) return MPG123_ERR; ioh->iotype = IO_HANDLE; @@ -661,133 +886,69 @@ int attribute_align_arg mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t return MPG123_OK; } -/* - The open routines always need to watch out for a prepared wrapper handle to use replaced normal I/O. - Two cases to consider: - 1. Plain normal open using internal I/O. - 2. Client called mpg123_replace_reader() before. - The second case needs hackery to activate the client I/O callbacks. For that, we create a custom I/O handle and use the guts of mpg123_open_fd() on it. -*/ -int attribute_align_arg mpg123_open(mpg123_handle *mh, const char *path) +#if SIZEOF_OFF_T == 4 +int attribute_align_arg mpg123_replace_reader_32(mpg123_handle *mh, mpg123_ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int) ) { - struct wrap_data* ioh; - - if(mh == NULL) return MPG123_ERR; - - ioh = mh->wrapperdata; - /* Mimic the use of mpg123_replace_reader() functions by lower levels... - IO_HANDLE is not valid here, though. Only IO_FD. */ - if(ioh != NULL && ioh->iotype == IO_FD) - { - int err; - err = MPG123_LARGENAME(mpg123_replace_reader_handle)(mh, wrap_read, wrap_lseek, wrap_io_cleanup); - if(err != MPG123_OK) return MPG123_ERR; - - /* The above call implied mpg123_close() already */ - /* - I really need to open the file here... to be able to use the replacer handle I/O ... - my_fd is used to indicate closing of the descriptor on cleanup. - */ - ioh->my_fd = compat_open(path, O_RDONLY|O_BINARY); - if(ioh->my_fd < 0) - { - if(!(mh->p.flags & MPG123_QUIET)) error2("Cannot open file %s: %s", path, strerror(errno)); - - mh->err = MPG123_BAD_FILE; - return MPG123_ERR; - } - /* Store a copy of the descriptor where it is actually used. */ - ioh->fd = ioh->my_fd; - /* Initiate I/O operating on my handle now. */ - err = open_stream_handle(mh, ioh); - if(err != MPG123_OK) - { - wrap_io_cleanup(ioh); - return MPG123_ERR; - } - /* All fine... */ - return MPG123_OK; - } - else return MPG123_LARGENAME(mpg123_open)(mh, path); + return mpg123_replace_reader(mh, r_read, r_lseek); } -// This one needs to follow the logic of the original, and wrap the actual -// mpg123_open() here. -int attribute_align_arg mpg123_open_fixed( mpg123_handle *mh, const char *path -, int channels, int encoding ) +int attribute_align_arg mpg123_replace_reader_handle_32(mpg123_handle *mh, mpg123_ssize_t (*r_read) (void*, void *, size_t), off_t (*r_lseek)(void*, off_t, int), void (*cleanup)(void*)) { - int err = open_fixed_pre(mh, channels, encoding); - if(err == MPG123_OK) - err = mpg123_open(mh, path); - if(err == MPG123_OK) - err = open_fixed_post(mh, channels, encoding); - return err; + return mpg123_replace_reader_handle(mh, r_read, r_lseek, cleanup); } -/* - This is in fact very similar to the above: - The open routines always need to watch out for a prepared wrapper handle to use replaced normal I/O. - Two cases to consider: - 1. Plain normal open_fd using internal I/O. - 2. Client called mpg123_replace_reader() before. - The second case needs hackery to activate the client I/O callbacks. For that, we create a custom I/O handle and use the guts of mpg123_open_fd() on it. -*/ +#endif -int attribute_align_arg mpg123_open_fd(mpg123_handle *mh, int fd) +#ifdef LFS_LARGEFILE_64 + +int attribute_align_arg mpg123_replace_reader_64(mpg123_handle *mh, mpg123_ssize_t (*r_read) (int, void *, size_t), off64_t (*r_lseek)(int, off64_t, int) ) { struct wrap_data* ioh; if(mh == NULL) return MPG123_ERR; mpg123_close(mh); - ioh = mh->wrapperdata; - if(ioh != NULL && ioh->iotype == IO_FD) + ioh = wrap_get(mh, 1); + if(ioh == NULL) return MPG123_ERR; + + /* If both callbacks are NULL, switch totally to internal I/O, else just use fallback for at most half of them. */ + if(r_read == NULL && r_lseek == NULL) { - int err; - err = MPG123_LARGENAME(mpg123_replace_reader_handle)(mh, wrap_read, wrap_lseek, wrap_io_cleanup); - if(err != MPG123_OK) return MPG123_ERR; - - /* The above call implied mpg123_close() already */ - - /* Store the real file descriptor inside the handle. */ - ioh->fd = fd; - /* Initiate I/O operating on my handle now. */ - err = open_stream_handle(mh, ioh); - if(err != MPG123_OK) - { - wrap_io_cleanup(ioh); - return MPG123_ERR; - } - /* All fine... */ - return MPG123_OK; - } - else return MPG123_LARGENAME(mpg123_open_fd)(mh, fd); -} - -int attribute_align_arg mpg123_open_handle(mpg123_handle *mh, void *handle) -{ - struct wrap_data* ioh; - - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - ioh = mh->wrapperdata; - if(ioh != NULL && ioh->iotype == IO_HANDLE && ioh->r_h_read != NULL) - { - /* Wrap the custom handle into my handle. */ - int err; - err = MPG123_LARGENAME(mpg123_replace_reader_handle)(mh, wrap_read, wrap_lseek, wrap_io_cleanup); - if(err != MPG123_OK) return MPG123_ERR; - - ioh->handle = handle; - /* No extra error handling, keep behaviour of the original open_handle. */ - return open_stream_handle(mh, ioh); + ioh->iotype = IO_INT_FD; + ioh->fd = -1; + ioh->r_read_64 = NULL; + ioh->r_lseek_64 = NULL; } else { - /* This is an error ... you need to prepare the I/O before using it. */ - mh->err = MPG123_BAD_CUSTOM_IO; - return MPG123_ERR; + ioh->iotype = IO_FD_64; + ioh->fd = -1; /* On next mpg123_open_fd(), this gets a value. */ + ioh->r_read_64 = r_read != NULL ? r_read : fallback_read; + ioh->r_lseek_64 = r_lseek != NULL ? r_lseek : lseek64; } + + /* The real reader replacement will happen while opening. */ + return MPG123_OK; } +int attribute_align_arg mpg123_replace_reader_handle_64(mpg123_handle *mh, mpg123_ssize_t (*r_read) (void*, void *, size_t), off64_t (*r_lseek)(void*, off64_t, int), void (*cleanup)(void*)) +{ + struct wrap_data* ioh; + + if(mh == NULL) return MPG123_ERR; + + mpg123_close(mh); + ioh = wrap_get(mh, 1); + if(ioh == NULL) return MPG123_ERR; + + ioh->iotype = IO_HANDLE_64; + ioh->handle = NULL; + ioh->r_h_read_64 = r_read; + ioh->r_h_lseek_64 = r_lseek; + ioh->h_cleanup = cleanup; + + /* The real reader replacement will happen while opening. */ + return MPG123_OK; +} + +#endif diff --git a/src/libmpg123/lfs_wrap.h b/src/libmpg123/lfs_wrap.h new file mode 100644 index 0000000..97ff804 --- /dev/null +++ b/src/libmpg123/lfs_wrap.h @@ -0,0 +1,43 @@ +/* + lfs_wrap: I/O wrapper code + + copyright 2010-2023 by the mpg123 project + free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org + initially written by Thomas Orgis (after code from Michael Hipp) + + This is the interface to the implementation of internal reading/seeking + as well as wrapping of client callbacks to the one and only 64 bit + callback API on opaque handles. + + Code outside of this shall not be concerned with I/O details, and + code inside of this shall not be concerned with other + libmpg123 internals. Just the public portable API interface. +*/ + + +// This is to be offered by libmpg123 code that has access to frame struct +// details. It returns the address to load/store the pointer to the +// wrapper handle from/into. A little hack to keep things disentangled. +void ** INT123_wrap_handle(mpg123_handle *mh); +// Set error code in the mpg123 handle and return MPG123_ERR. +int INT123_set_err(mpg123_handle *mh, int err); + +// These are offered by the source associated with this header. + +// This is one open routine for all ways. One of the given resource arguments is active: +// 1. handle: if path == NULL && fd < 0 +// 2. path: if path != NULL +// 3. fd: if fd >= 0 +// In case of 64 bit handle setup, this does nothing. +// Return values: +// 0: setup for wrapped I/O successful. +// 1: use user-supplied 64 bit I/O handle directly, no internal wrappery +// <0: error +#define LFS_WRAP_NONE 1 +int INT123_wrap_open(mpg123_handle *mh, void *handle, const char *path, int fd, long timeout, int quiet); +// Deallocate all associated resources and handle memory itself. +void INT123_wrap_destroy(void * handle); + +// The bulk of functions are implementations of the non-portable +// libmpg123 API declared or implied in the main header. diff --git a/src/libmpg123/libmpg123.c b/src/libmpg123/libmpg123.c index 068524f..114787e 100644 --- a/src/libmpg123/libmpg123.c +++ b/src/libmpg123/libmpg123.c @@ -1,12 +1,13 @@ /* libmpg123: MPEG Audio Decoder library - copyright 1995-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org */ #include "mpg123lib_intern.h" +#include "version.h" #include "icy2utf8.h" #include "gapless.h" @@ -14,11 +15,33 @@ #define FORCE_ACCURATE #include "sample.h" #include "parse.h" +#ifndef PORTABLE_API +#include "lfs_wrap.h" +#endif #include "debug.h" #define SEEKFRAME(mh) ((mh)->ignoreframe < 0 ? 0 : (mh)->ignoreframe) + +const char * attribute_align_arg mpg123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch) +{ + if(major) + *major = MPG123_MAJOR; + if(minor) + *minor = MPG123_MINOR; + if(patch) + *patch = MPG123_PATCH; + return MPG123_VERSION; +} + +unsigned int attribute_align_arg mpg123_libversion(unsigned int *patch) +{ + if(patch) + *patch = MPG123_PATCHLEVEL; + return MPG123_API_VERSION; +} + int attribute_align_arg mpg123_init(void) { // Since 1.27.0, this is a no-op and shall stay that way. @@ -52,12 +75,12 @@ mpg123_handle attribute_align_arg *mpg123_parnew(mpg123_pars *mp, const char* de if(!tables_initialized) { #ifndef NO_LAYER12 - init_layer12(); /* inits also shared tables with layer1 */ + INT123_init_layer12(); /* inits also shared tables with layer1 */ #endif #ifndef NO_LAYER3 - init_layer3(); + INT123_init_layer3(); #endif - init_costabs(); + INT123_init_costabs(); tables_initialized = 1; } #endif @@ -83,12 +106,12 @@ mpg123_handle attribute_align_arg *mpg123_parnew(mpg123_pars *mp, const char* de fr = (mpg123_handle*) malloc(sizeof(mpg123_handle)); if(fr != NULL) { - frame_init_par(fr, mp); + INT123_frame_init_par(fr, mp); debug("cpu opt setting"); - if(frame_cpu_opt(fr, decoder) != 1) + if(INT123_frame_cpu_opt(fr, decoder) != 1) { err = MPG123_BAD_DECODER; - frame_exit(fr); + INT123_frame_exit(fr); free(fr); fr = NULL; } @@ -105,7 +128,7 @@ mpg123_handle attribute_align_arg *mpg123_parnew(mpg123_pars *mp, const char* de int attribute_align_arg mpg123_decoder(mpg123_handle *mh, const char* decoder) { - enum optdec dt = dectype(decoder); + enum optdec dt = INT123_dectype(decoder); if(mh == NULL) return MPG123_BAD_HANDLE; @@ -117,23 +140,23 @@ int attribute_align_arg mpg123_decoder(mpg123_handle *mh, const char* decoder) if(dt == mh->cpu_opts.type) return MPG123_OK; /* Now really change. */ - /* frame_exit(mh); - frame_init(mh); */ + /* INT123_frame_exit(mh); + INT123_frame_init(mh); */ debug("cpu opt setting"); - if(frame_cpu_opt(mh, decoder) != 1) + if(INT123_frame_cpu_opt(mh, decoder) != 1) { mh->err = MPG123_BAD_DECODER; - frame_exit(mh); + INT123_frame_exit(mh); return MPG123_ERR; } - /* New buffers for decoder are created in frame_buffers() */ - if((frame_outbuffer(mh) != 0)) + /* New buffers for decoder are created in INT123_frame_buffers() */ + if((INT123_frame_outbuffer(mh) != 0)) { mh->err = MPG123_NO_BUFFERS; - frame_exit(mh); + INT123_frame_exit(mh); return MPG123_ERR; } - /* Do _not_ call decode_update here! That is only allowed after a first MPEG frame has been met. */ + /* Do _not_ call INT123_decode_update here! That is only allowed after a first MPEG frame has been met. */ mh->decoder_change = 1; return MPG123_OK; } @@ -150,14 +173,14 @@ int attribute_align_arg mpg123_param(mpg123_handle *mh, enum mpg123_parms key, l #ifdef FRAME_INDEX if(key == MPG123_INDEX_SIZE) { /* Apply frame index size and grow property on the fly. */ - r = frame_index_setup(mh); + r = INT123_frame_index_setup(mh); if(r != MPG123_OK) mh->err = MPG123_INDEX_FAIL; } #endif #ifndef NO_FEEDER /* Feeder pool size is applied right away, reader will react to that. */ if(key == MPG123_FEEDPOOL || key == MPG123_FEEDBUFFER) - bc_poolsize(&mh->rdat.buffer, mh->p.feedpool, mh->p.feedbuffer); + INT123_bc_poolsize(&mh->rdat.buffer, mh->p.feedpool, mh->p.feedbuffer); #endif } return r; @@ -410,7 +433,7 @@ int attribute_align_arg mpg123_getstate(mpg123_handle *mh, enum mpg123_state key case MPG123_BUFFERFILL: #ifndef NO_FEEDER { - size_t sval = bc_fill(&mh->rdat.buffer); + size_t sval = INT123_bc_fill(&mh->rdat.buffer); theval = (long)sval; if(theval < 0 || (size_t)theval != sval) { @@ -536,19 +559,27 @@ double attribute_align_arg mpg123_geteq2(mpg123_handle *mh, int channel, int ban return mpg123_geteq(mh, channel, band); } +#ifndef PORTABLE_API /* plain file access, no http! */ int attribute_align_arg mpg123_open(mpg123_handle *mh, const char *path) { if(mh == NULL) return MPG123_BAD_HANDLE; mpg123_close(mh); - return open_stream(mh, path, -1); + if(!path) + return MPG123_ERR; + // sets callbacks, only allocating wrapperdata handle if internal callbacks involved + int ret = INT123_wrap_open( mh, NULL, path, -1 + , mh->p.timeout, mh->p.flags & MPG123_QUIET ); + if(!ret) + ret = INT123_open_stream_handle(mh, mh->wrapperdata); + return ret; } // The convenience function mpg123_open_fixed() wraps over acual mpg123_open // and hence needs to have the exact same code in lfs_wrap.c. The flesh is -// in open_fixed_pre() and open_fixed_post(), wich are only defined here. -int open_fixed_pre(mpg123_handle *mh, int channels, int encoding) +// in INT123_open_fixed_pre() and INT123_open_fixed_post(), wich are only defined here. +int INT123_open_fixed_pre(mpg123_handle *mh, int channels, int encoding) { if(!mh) return MPG123_BAD_HANDLE; @@ -559,7 +590,7 @@ int open_fixed_pre(mpg123_handle *mh, int channels, int encoding) return err; } -int open_fixed_post(mpg123_handle *mh, int channels, int encoding) +int INT123_open_fixed_post(mpg123_handle *mh, int channels, int encoding) { if(!mh) return MPG123_BAD_HANDLE; @@ -573,7 +604,7 @@ int open_fixed_post(mpg123_handle *mh, int channels, int encoding) { if(mh->track_frames < 1 && (mh->rdat.flags & READER_SEEKABLE)) { - debug("open_fixed_post: scan because we can seek and do not know track_frames"); + debug("INT123_open_fixed_post: scan because we can seek and do not know track_frames"); err = mpg123_scan(mh); } } @@ -585,11 +616,11 @@ int open_fixed_post(mpg123_handle *mh, int channels, int encoding) int attribute_align_arg mpg123_open_fixed( mpg123_handle *mh, const char *path , int channels, int encoding ) { - int err = open_fixed_pre(mh, channels, encoding); + int err = INT123_open_fixed_pre(mh, channels, encoding); if(err == MPG123_OK) err = mpg123_open(mh, path); if(err == MPG123_OK) - err = open_fixed_post(mh, channels, encoding); + err = INT123_open_fixed_post(mh, channels, encoding); return err; } @@ -598,20 +629,29 @@ int attribute_align_arg mpg123_open_fd(mpg123_handle *mh, int fd) if(mh == NULL) return MPG123_BAD_HANDLE; mpg123_close(mh); - return open_stream(mh, NULL, fd); + if(fd < 0) + return MPG123_ERR; + int ret = INT123_wrap_open( mh, NULL, NULL, fd + , mh->p.timeout, mh->p.flags & MPG123_QUIET ); + if(!ret) + ret = INT123_open_stream_handle(mh, mh->wrapperdata); + return ret; } +#endif int attribute_align_arg mpg123_open_handle(mpg123_handle *mh, void *iohandle) { if(mh == NULL) return MPG123_BAD_HANDLE; mpg123_close(mh); - if(mh->rdat.r_read_handle == NULL) - { - mh->err = MPG123_BAD_CUSTOM_IO; - return MPG123_ERR; - } - return open_stream_handle(mh, iohandle); + int ret; +#ifndef PORTABLE_API + ret = INT123_wrap_open( mh, iohandle, NULL, -1 + , mh->p.timeout, mh->p.flags & MPG123_QUIET ); + if(ret >= 0) +#endif + ret = INT123_open_stream_handle(mh, ret == LFS_WRAP_NONE ? iohandle : mh->wrapperdata); + return ret; } int attribute_align_arg mpg123_open_feed(mpg123_handle *mh) @@ -619,40 +659,41 @@ int attribute_align_arg mpg123_open_feed(mpg123_handle *mh) if(mh == NULL) return MPG123_BAD_HANDLE; mpg123_close(mh); - return open_feed(mh); + return INT123_open_feed(mh); } -int attribute_align_arg mpg123_replace_reader( mpg123_handle *mh, - ssize_t (*r_read) (int, void *, size_t), - off_t (*r_lseek)(int, off_t, int) ) +static int64_t no_lseek64(void *handle, int64_t off, int whence) { - if(mh == NULL) return MPG123_BAD_HANDLE; - - mpg123_close(mh); - mh->rdat.r_read = r_read; - mh->rdat.r_lseek = r_lseek; - return MPG123_OK; + return -1; } -int attribute_align_arg mpg123_replace_reader_handle( mpg123_handle *mh, - ssize_t (*r_read) (void*, void *, size_t), - off_t (*r_lseek)(void*, off_t, int), - void (*cleanup)(void*) ) +// The simplest direct wrapper, actually no wrapping at all. +int attribute_align_arg mpg123_reader64( mpg123_handle *mh +, int (*r_read) (void *, void *, size_t, size_t *) +, int64_t (*r_lseek)(void *, int64_t, int) +, void (*cleanup)(void*) ) { - if(mh == NULL) return MPG123_BAD_HANDLE; + if(mh == NULL) + return MPG123_BAD_HANDLE; mpg123_close(mh); - mh->rdat.r_read_handle = r_read; - mh->rdat.r_lseek_handle = r_lseek; + + if(!r_read) + return MPG123_NULL_POINTER; + + mh->rdat.r_read64 = r_read; + mh->rdat.r_lseek64 = r_lseek ? r_lseek : no_lseek64; mh->rdat.cleanup_handle = cleanup; return MPG123_OK; } +// All other I/O gets routed through predefined wrapper. + /* Update decoding engine for a) a new choice of decoder b) a changed native format of the MPEG stream ... calls are only valid after parsing some MPEG frame! */ -int decode_update(mpg123_handle *mh) +int INT123_decode_update(mpg123_handle *mh) { long native_rate; int b; @@ -660,16 +701,16 @@ int decode_update(mpg123_handle *mh) mh->state_flags &= ~FRAME_DECODER_LIVE; if(mh->num < 0) { - if(!(mh->p.flags & MPG123_QUIET)) error("decode_update() has been called before reading the first MPEG frame! Internal programming error."); + if(!(mh->p.flags & MPG123_QUIET)) error("INT123_decode_update() has been called before reading the first MPEG frame! Internal programming error."); mh->err = MPG123_BAD_DECODER_SETUP; return MPG123_ERR; } mh->state_flags |= FRAME_FRESH_DECODER; - native_rate = frame_freq(mh); + native_rate = INT123_frame_freq(mh); - b = frame_output_format(mh); /* Select the new output format based on given constraints. */ + b = INT123_frame_output_format(mh); /* Select the new output format based on given constraints. */ if(b < 0) return MPG123_ERR; if(b == 1) mh->new_format = 1; /* Store for later... */ @@ -686,23 +727,23 @@ int decode_update(mpg123_handle *mh) case 2: mh->down_sample_sblimit = SBLIMIT>>(mh->down_sample); /* With downsampling I get less samples per frame */ - mh->outblock = outblock_bytes(mh, (mh->spf>>mh->down_sample)); + mh->outblock = INT123_outblock_bytes(mh, (mh->spf>>mh->down_sample)); break; #ifndef NO_NTOM case 3: { - if(synth_ntom_set_step(mh) != 0) return -1; - if(frame_freq(mh) > mh->af.rate) + if(INT123_synth_ntom_set_step(mh) != 0) return -1; + if(INT123_frame_freq(mh) > mh->af.rate) { mh->down_sample_sblimit = SBLIMIT * mh->af.rate; - mh->down_sample_sblimit /= frame_freq(mh); + mh->down_sample_sblimit /= INT123_frame_freq(mh); if(mh->down_sample_sblimit < 1) mh->down_sample_sblimit = 1; } else mh->down_sample_sblimit = SBLIMIT; - mh->outblock = outblock_bytes(mh, + mh->outblock = INT123_outblock_bytes(mh, ( ( NTOM_MUL-1+mh->spf - * (((size_t)NTOM_MUL*mh->af.rate)/frame_freq(mh)) + * (((size_t)NTOM_MUL*mh->af.rate)/INT123_frame_freq(mh)) )/NTOM_MUL )); } break; @@ -715,13 +756,13 @@ int decode_update(mpg123_handle *mh) else mh->single = SINGLE_STEREO; } else mh->single = (mh->p.flags & MPG123_FORCE_MONO)-1; - if(set_synth_functions(mh) != 0) return -1;; + if(INT123_set_synth_functions(mh) != 0) return -1;; /* The needed size of output buffer may have changed. */ - if(frame_outbuffer(mh) != MPG123_OK) return -1; + if(INT123_frame_outbuffer(mh) != MPG123_OK) return -1; - do_rva(mh); - debug3("done updating decoder structure with native rate %li and af.rate %li and down_sample %i", frame_freq(mh), mh->af.rate, mh->down_sample); + INT123_do_rva(mh); + debug3("done updating decoder structure with native rate %li and af.rate %li and down_sample %i", INT123_frame_freq(mh), mh->af.rate, mh->down_sample); mh->decoder_change = 0; mh->state_flags |= FRAME_DECODER_LIVE; @@ -754,7 +795,7 @@ static int get_next_frame(mpg123_handle *mh) change = 1; mh->header_change = 0; debug("starting with big header change"); - if(decode_update(mh) < 0) + if(INT123_decode_update(mh) < 0) return MPG123_ERR; } @@ -765,19 +806,19 @@ static int get_next_frame(mpg123_handle *mh) if(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe) { debug1("ignoring frame %li", (long)mh->num); - /* Decoder structure must be current! decode_update has been called before... */ + /* Decoder structure must be current! INT123_decode_update has been called before... */ (mh->do_layer)(mh); mh->buffer.fill = 0; #ifndef NO_NTOM /* The ignored decoding may have failed. Make sure ntom stays consistent. */ - if(mh->down_sample == 3) ntom_set_ntom(mh, mh->num+1); + if(mh->down_sample == 3) INT123_ntom_set_ntom(mh, mh->num+1); #endif mh->to_ignore = mh->to_decode = FALSE; } /* Read new frame data; possibly breaking out here for MPG123_NEED_MORE. */ debug("read frame"); mh->to_decode = FALSE; - b = read_frame(mh); /* That sets to_decode only if a full frame was read. */ - debug4("read of frame %li returned %i (to_decode=%i) at sample %li", (long)mh->num, b, mh->to_decode, (long)mpg123_tell(mh)); + b = INT123_read_frame(mh); /* That sets to_decode only if a full frame was read. */ + debug4("read of frame %"PRIi64" returned %i (to_decode=%i) at sample %"PRIi64, mh->num, b, mh->to_decode, mpg123_tell64(mh)); if(b == MPG123_NEED_MORE) return MPG123_NEED_MORE; /* need another call with data */ else if(b <= 0) { @@ -798,7 +839,7 @@ static int get_next_frame(mpg123_handle *mh) mh->header_change = 0; /* Need to update decoder structure right away since frame might need to be decoded on next loop iteration for properly ignoring its output. */ - if(decode_update(mh) < 0) + if(INT123_decode_update(mh) < 0) return MPG123_ERR; } /* Now some accounting: Look at the numbers and decide if we want this frame. */ @@ -808,7 +849,7 @@ static int get_next_frame(mpg123_handle *mh) { if(!(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe)) { - frame_skip(mh); + INT123_frame_skip(mh); /* Should one fix NtoM here or not? It is not work the trouble for doublespeed, but what with leading frames? */ } @@ -826,9 +867,9 @@ static int get_next_frame(mpg123_handle *mh) #ifdef GAPLESS int b=0; /* Prepare offsets for gapless decoding. */ - debug1("preparing gapless stuff with native rate %li", frame_freq(mh)); - frame_gapless_realinit(mh); - frame_set_frameseek(mh, mh->num); + debug1("preparing gapless stuff with native rate %li", INT123_frame_freq(mh)); + INT123_frame_gapless_realinit(mh); + INT123_frame_set_frameseek(mh, mh->num); #endif mh->fresh = 0; #ifdef GAPLESS @@ -859,9 +900,8 @@ static int zero_byte(mpg123_handle *fr) */ static void decode_the_frame(mpg123_handle *fr) { - size_t needed_bytes = decoder_synth_bytes(fr, frame_expect_outsamples(fr)); + size_t needed_bytes = INT123_decoder_synth_bytes(fr, INT123_frame_expect_outsamples(fr)); fr->clip += (fr->do_layer)(fr); - /*fprintf(stderr, "frame %"OFF_P": got %"SIZE_P" / %"SIZE_P"\n", fr->num,(size_p)fr->buffer.fill, (size_p)needed_bytes);*/ /* There could be less data than promised. Also, then debugging, we look out for coding errors that could result in _more_ data than expected. */ #ifdef DEBUG @@ -883,8 +923,8 @@ static void decode_the_frame(mpg123_handle *fr) fr->buffer.fill = needed_bytes; #ifndef NO_NTOM - /* ntom_val will be wrong when the decoding wasn't carried out completely */ - ntom_set_ntom(fr, fr->num+1); + /* INT123_ntom_val will be wrong when the decoding wasn't carried out completely */ + INT123_ntom_set_ntom(fr, fr->num+1); #endif } #ifdef DEBUG @@ -895,7 +935,7 @@ static void decode_the_frame(mpg123_handle *fr) } } #endif - postprocess_buffer(fr); + INT123_postprocess_buffer(fr); } /* @@ -910,7 +950,7 @@ static void decode_the_frame(mpg123_handle *fr) MPG123_BAD_HANDLE -- mh has not been initialized MPG123_NO_SPACE -- not enough space in buffer for safe decoding, should not happen */ -int attribute_align_arg mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) +int attribute_align_arg mpg123_framebyframe_decode64(mpg123_handle *mh, int64_t *num, unsigned char **audio, size_t *bytes) { if(bytes == NULL) return MPG123_ERR_NULL; if(audio == NULL) return MPG123_ERR_NULL; @@ -982,7 +1022,7 @@ int attribute_align_arg mpg123_framebyframe_next(mpg123_handle *mh) num will be updated to the last decoded frame number (may possibly _not_ increase, p.ex. when format changed). */ -int attribute_align_arg mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes) +int attribute_align_arg mpg123_decode_frame64(mpg123_handle *mh, int64_t *num, unsigned char **audio, size_t *bytes) { if(bytes != NULL) *bytes = 0; if(mh == NULL) return MPG123_BAD_HANDLE; @@ -1005,7 +1045,7 @@ int attribute_align_arg mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsig } debug("decoding"); - if( (mh->decoder_change && decode_update(mh) < 0) + if( (mh->decoder_change && INT123_decode_update(mh) < 0) || !(mh->state_flags & FRAME_DECODER_LIVE) ) return MPG123_ERR; decode_the_frame(mh); @@ -1027,6 +1067,7 @@ int attribute_align_arg mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsig } } + int attribute_align_arg mpg123_read(mpg123_handle *mh, void *out, size_t size, size_t *done) { return mpg123_decode(mh, NULL, 0, out, size, done); @@ -1040,7 +1081,7 @@ int attribute_align_arg mpg123_feed(mpg123_handle *mh, const unsigned char *in, { if(in != NULL) { - if(feed_more(mh, in, size) != 0) return MPG123_ERR; + if(INT123_feed_more(mh, in, size) != 0) return MPG123_ERR; else { /* The need for more data might have triggered an error. @@ -1111,7 +1152,7 @@ int attribute_align_arg mpg123_decode(mpg123_handle *mh, const unsigned char *in ret = MPG123_NO_SPACE; goto decodeend; } - if( (mh->decoder_change && decode_update(mh) < 0) + if( (mh->decoder_change && INT123_decode_update(mh) < 0) || ! (mh->state_flags & FRAME_DECODER_LIVE) ) { ret = MPG123_ERR; @@ -1120,7 +1161,7 @@ int attribute_align_arg mpg123_decode(mpg123_handle *mh, const unsigned char *in decode_the_frame(mh); mh->to_decode = mh->to_ignore = FALSE; mh->buffer.p = mh->buffer.data; - debug2("decoded frame %li, got %li samples in buffer", (long)mh->num, (long)(mh->buffer.fill / (samples_to_bytes(mh, 1)))); + debug2("decoded frame %li, got %li samples in buffer", (long)mh->num, (long)(mh->buffer.fill / (INT123_samples_to_bytes(mh, 1)))); FRAME_BUFFERCHECK(mh); } if(mh->buffer.fill) /* Copy (part of) the decoded data to the caller's buffer. */ @@ -1189,7 +1230,7 @@ static int init_track(mpg123_handle *mh) \ mi->version = mh->mpeg25 ? MPG123_2_5 : (mh->lsf ? MPG123_2_0 : MPG123_1_0); \ mi->layer = mh->lay; \ - mi->rate = frame_freq(mh); \ + mi->rate = INT123_frame_freq(mh); \ switch(mh->mode) \ { \ case 0: mi->mode = MPG123_M_STEREO; break; \ @@ -1206,7 +1247,7 @@ static int init_track(mpg123_handle *mh) if(mh->extension) mi->flags |= MPG123_PRIVATE; \ if(mh->original) mi->flags |= MPG123_ORIGINAL; \ mi->emphasis = mh->emphasis; \ - mi->bitrate = frame_bitrate(mh); \ + mi->bitrate = INT123_frame_bitrate(mh); \ mi->abr_rate = mh->abr_rate; \ mi->vbr = mh->vbr; \ return MPG123_OK; \ @@ -1239,14 +1280,15 @@ int attribute_align_arg mpg123_getformat(mpg123_handle *mh, long *rate, int *cha return mpg123_getformat2(mh, rate, channels, encoding, 1); } -off_t attribute_align_arg mpg123_timeframe(mpg123_handle *mh, double seconds) +int64_t attribute_align_arg mpg123_timeframe64(mpg123_handle *mh, double seconds) { - off_t b; + int64_t b; if(mh == NULL) return MPG123_ERR; b = init_track(mh); if(b<0) return b; - return (off_t)(seconds/mpg123_tpf(mh)); + // Overflow checking here would be a bit more elaborate. TODO? + return (int64_t)(seconds/mpg123_tpf(mh)); } /* @@ -1257,29 +1299,29 @@ off_t attribute_align_arg mpg123_timeframe(mpg123_handle *mh, double seconds) Then, there is firstframe...when we didn't reach it yet, then the next data will come from there. mh->num starts with -1 */ -off_t attribute_align_arg mpg123_tell(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_tell64(mpg123_handle *mh) { if(mh == NULL) return MPG123_ERR; if(track_need_init(mh)) return 0; /* Now we have all the info at hand. */ - debug5("tell: %li/%i first %li buffer %lu; frame_outs=%li", (long)mh->num, mh->to_decode, (long)mh->firstframe, (unsigned long)mh->buffer.fill, (long)frame_outs(mh, mh->num)); + debug5("tell: %li/%i first %li buffer %lu; INT123_frame_outs=%li", (long)mh->num, mh->to_decode, (long)mh->firstframe, (unsigned long)mh->buffer.fill, (long)INT123_frame_outs(mh, mh->num)); { /* Funny block to keep C89 happy. */ - off_t pos = 0; + int64_t pos = 0; if((mh->num < mh->firstframe) || (mh->num == mh->firstframe && mh->to_decode)) { /* We are at the beginning, expect output from firstframe on. */ - pos = frame_outs(mh, mh->firstframe); + pos = INT123_frame_outs(mh, mh->firstframe); #ifdef GAPLESS pos += mh->firstoff; #endif } else if(mh->to_decode) { /* We start fresh with this frame. Buffer should be empty, but we make sure to count it in. */ - pos = frame_outs(mh, mh->num) - bytes_to_samples(mh, mh->buffer.fill); + pos = INT123_frame_outs(mh, mh->num) - INT123_bytes_to_samples(mh, mh->buffer.fill); } else { /* We serve what we have in buffer and then the beginning of next frame... */ - pos = frame_outs(mh, mh->num+1) - bytes_to_samples(mh, mh->buffer.fill); + pos = INT123_frame_outs(mh, mh->num+1) - INT123_bytes_to_samples(mh, mh->buffer.fill); } /* Substract padding and delay from the beginning. */ pos = SAMPLE_ADJUST(mh,pos); @@ -1288,7 +1330,7 @@ off_t attribute_align_arg mpg123_tell(mpg123_handle *mh) } } -off_t attribute_align_arg mpg123_tellframe(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_tellframe64(mpg123_handle *mh) { if(mh == NULL) return MPG123_ERR; if(mh->num < mh->firstframe) return mh->firstframe; @@ -1297,7 +1339,7 @@ off_t attribute_align_arg mpg123_tellframe(mpg123_handle *mh) return mh->buffer.fill ? mh->num : mh->num + 1; } -off_t attribute_align_arg mpg123_tell_stream(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_tell_stream64(mpg123_handle *mh) { if(mh == NULL) return MPG123_ERR; /* mh->rd is at least a bad_reader, so no worry. */ @@ -1307,7 +1349,7 @@ off_t attribute_align_arg mpg123_tell_stream(mpg123_handle *mh) static int do_the_seek(mpg123_handle *mh) { int b; - off_t fnum = SEEKFRAME(mh); + int64_t fnum = SEEKFRAME(mh); mh->buffer.fill = 0; /* If we are inside the ignoreframe - firstframe window, we may get away without actual seeking. */ @@ -1327,18 +1369,18 @@ static int do_the_seek(mpg123_handle *mh) } /* OK, real seeking follows... clear buffers and go for it. */ - frame_buffers_reset(mh); + INT123_frame_buffers_reset(mh); #ifndef NO_NTOM if(mh->down_sample == 3) { - ntom_set_ntom(mh, fnum); - debug3("fixed ntom for frame %"OFF_P" to %lu, num=%"OFF_P, (off_p)fnum, mh->ntom_val[0], (off_p)mh->num); + INT123_ntom_set_ntom(mh, fnum); + debug3("fixed ntom for frame %"PRIi64" to %lu, num=%"PRIi64, fnum, mh->INT123_ntom_val[0], mh->num); } #endif b = mh->rd->seek_frame(mh, fnum); if(mh->header_change > 1) { - if(decode_update(mh) < 0) return MPG123_ERR; + if(INT123_decode_update(mh) < 0) return MPG123_ERR; mh->header_change = 0; } debug1("seek_frame returned: %i", b); @@ -1350,12 +1392,12 @@ static int do_the_seek(mpg123_handle *mh) return 0; } -off_t attribute_align_arg mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence) +int64_t attribute_align_arg mpg123_seek64(mpg123_handle *mh, int64_t sampleoff, int whence) { int b; - off_t pos; + int64_t pos; - pos = mpg123_tell(mh); /* adjusted samples */ + pos = mpg123_tell64(mh); /* adjusted samples */ /* pos < 0 also can mean that simply a former seek failed at the lower levels. In that case, we only allow absolute seeks. */ if(pos < 0 && whence != SEEK_SET) @@ -1369,12 +1411,20 @@ off_t attribute_align_arg mpg123_seek(mpg123_handle *mh, off_t sampleoff, int wh case SEEK_CUR: pos += sampleoff; break; case SEEK_SET: pos = sampleoff; break; case SEEK_END: + // Fix for a bug that existed since the beginning of libmpg123: SEEK_END offsets are + // also pointing forward for SEEK_END in lseek(). In libmpg123, they used to interpreted + // as positive from the end towards the beginning. Since just swapping the sign now would + // break existing programs and seeks beyond the end just don't make sense for a + // read-only library, we simply ignore the sign and always assumne negative offsets + // (pointing towards the beginning). Assuming INT64_MIN <= -INT64_MAX. + if(sampleoff > 0) + sampleoff = -sampleoff; /* When we do not know the end already, we can try to find it. */ if(mh->track_frames < 1 && (mh->rdat.flags & READER_SEEKABLE)) mpg123_scan(mh); - if(mh->track_frames > 0) pos = SAMPLE_ADJUST(mh,frame_outs(mh, mh->track_frames)) - sampleoff; + if(mh->track_frames > 0) pos = SAMPLE_ADJUST(mh,INT123_frame_outs(mh, mh->track_frames)) + sampleoff; #ifdef GAPLESS - else if(mh->end_os > 0) pos = SAMPLE_ADJUST(mh,mh->end_os) - sampleoff; + else if(mh->end_os > 0) pos = SAMPLE_ADJUST(mh,mh->end_os) + sampleoff; #endif else { @@ -1386,11 +1436,11 @@ off_t attribute_align_arg mpg123_seek(mpg123_handle *mh, off_t sampleoff, int wh } if(pos < 0) pos = 0; /* pos now holds the wanted sample offset in adjusted samples */ - frame_set_seek(mh, SAMPLE_UNADJUST(mh,pos)); + INT123_frame_set_seek(mh, SAMPLE_UNADJUST(mh,pos)); pos = do_the_seek(mh); if(pos < 0) return pos; - return mpg123_tell(mh); + return mpg123_tell64(mh); } /* @@ -1398,13 +1448,18 @@ off_t attribute_align_arg mpg123_seek(mpg123_handle *mh, off_t sampleoff, int wh All it can do is to ignore frames until the wanted one is there. The caller doesn't know where a specific frame starts and mpg123 also only knows the general region after it scanned the file. Well, it is tricky... + + Wow, there was no input checking at all ... I'll better add it. */ -off_t attribute_align_arg mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset) +int64_t attribute_align_arg mpg123_feedseek64(mpg123_handle *mh, int64_t sampleoff, int whence, int64_t *input_offset) { int b; - off_t pos; + int64_t pos; + int64_t inoff = 0; + if(!mh) + return MPG123_BAD_HANDLE; - pos = mpg123_tell(mh); /* adjusted samples */ + pos = mpg123_tell64(mh); /* adjusted samples */ debug3("seek from %li to %li (whence=%i)", (long)pos, (long)sampleoff, whence); /* The special seek error handling does not apply here... there is no lowlevel I/O. */ if(pos < 0) return pos; /* mh == NULL is covered in mpg123_tell() */ @@ -1422,7 +1477,7 @@ off_t attribute_align_arg mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, in case SEEK_CUR: pos += sampleoff; break; case SEEK_SET: pos = sampleoff; break; case SEEK_END: - if(mh->track_frames > 0) pos = SAMPLE_ADJUST(mh,frame_outs(mh, mh->track_frames)) - sampleoff; + if(mh->track_frames > 0) pos = SAMPLE_ADJUST(mh,INT123_frame_outs(mh, mh->track_frames)) - sampleoff; #ifdef GAPLESS else if(mh->end_os >= 0) pos = SAMPLE_ADJUST(mh,mh->end_os) - sampleoff; #endif @@ -1435,32 +1490,35 @@ off_t attribute_align_arg mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, in default: mh->err = MPG123_BAD_WHENCE; return MPG123_ERR; } if(pos < 0) pos = 0; - frame_set_seek(mh, SAMPLE_UNADJUST(mh,pos)); + INT123_frame_set_seek(mh, SAMPLE_UNADJUST(mh,pos)); pos = SEEKFRAME(mh); mh->buffer.fill = 0; /* Shortcuts without modifying input stream. */ - *input_offset = mh->rdat.buffer.fileoff + mh->rdat.buffer.size; + inoff = mh->rdat.buffer.fileoff + mh->rdat.buffer.size; if(mh->num < mh->firstframe) mh->to_decode = FALSE; if(mh->num == pos && mh->to_decode) goto feedseekend; if(mh->num == pos-1) goto feedseekend; /* Whole way. */ - *input_offset = feed_set_pos(mh, frame_index_find(mh, SEEKFRAME(mh), &pos)); + inoff = INT123_feed_set_pos(mh, INT123_frame_index_find(mh, SEEKFRAME(mh), &pos)); mh->num = pos-1; /* The next read frame will have num = pos. */ - if(*input_offset < 0) return MPG123_ERR; + if(input_offset) + *input_offset = inoff; + if(inoff < 0) + return MPG123_ERR; feedseekend: - return mpg123_tell(mh); + return mpg123_tell64(mh); #else mh->err = MPG123_MISSING_FEATURE; return MPG123_ERR; #endif } -off_t attribute_align_arg mpg123_seek_frame(mpg123_handle *mh, off_t offset, int whence) +int64_t attribute_align_arg mpg123_seek_frame64(mpg123_handle *mh, int64_t offset, int whence) { int b; - off_t pos = 0; + int64_t pos = 0; if(mh == NULL) return MPG123_ERR; if((b=init_track(mh)) < 0) return b; @@ -1486,14 +1544,14 @@ off_t attribute_align_arg mpg123_seek_frame(mpg123_handle *mh, off_t offset, int if(pos < 0) pos = 0; /* Not limiting the possible position on end for the chance that there might be more to the stream than announced via track_frames. */ - frame_set_frameseek(mh, pos); + INT123_frame_set_frameseek(mh, pos); pos = do_the_seek(mh); if(pos < 0) return pos; - return mpg123_tellframe(mh); + return mpg123_tellframe64(mh); } -int attribute_align_arg mpg123_set_filesize(mpg123_handle *mh, off_t size) +int attribute_align_arg mpg123_set_filesize64(mpg123_handle *mh, int64_t size) { if(mh == NULL) return MPG123_BAD_HANDLE; @@ -1501,7 +1559,7 @@ int attribute_align_arg mpg123_set_filesize(mpg123_handle *mh, off_t size) return MPG123_OK; } -off_t attribute_align_arg mpg123_framelength(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_framelength64(mpg123_handle *mh) { int b; if(mh == NULL) @@ -1515,8 +1573,8 @@ off_t attribute_align_arg mpg123_framelength(mpg123_handle *mh) { /* A bad estimate. Ignoring tags 'n stuff. */ double bpf = mh->mean_framesize > 0. ? mh->mean_framesize - : compute_bpf(mh); - return (off_t)((double)(mh->rdat.filelen)/bpf+0.5); + : INT123_compute_bpf(mh); + return (int64_t)((double)(mh->rdat.filelen)/bpf+0.5); } /* Last resort: No view of the future, can at least count the frames that were already parsed. */ @@ -1526,10 +1584,10 @@ off_t attribute_align_arg mpg123_framelength(mpg123_handle *mh) return MPG123_ERR; } -off_t attribute_align_arg mpg123_length(mpg123_handle *mh) +int64_t attribute_align_arg mpg123_length64(mpg123_handle *mh) { int b; - off_t length; + int64_t length; if(mh == NULL) return MPG123_ERR; b = init_track(mh); @@ -1539,27 +1597,26 @@ off_t attribute_align_arg mpg123_length(mpg123_handle *mh) else if(mh->rdat.filelen > 0) /* Let the case of 0 length just fall through. */ { /* A bad estimate. Ignoring tags 'n stuff. */ - double bpf = mh->mean_framesize ? mh->mean_framesize : compute_bpf(mh); - length = (off_t)((double)(mh->rdat.filelen)/bpf*mh->spf); + double bpf = mh->mean_framesize ? mh->mean_framesize : INT123_compute_bpf(mh); + length = (int64_t)((double)(mh->rdat.filelen)/bpf*mh->spf); } - else if(mh->rdat.filelen == 0) return mpg123_tell(mh); /* we could be in feeder mode */ + else if(mh->rdat.filelen == 0) return mpg123_tell64(mh); /* we could be in feeder mode */ else return MPG123_ERR; /* No length info there! */ - debug1("mpg123_length: internal sample length: %"OFF_P, (off_p)length); + debug1("mpg123_length: internal sample length: %"PRIi64, length); - length = frame_ins2outs(mh, length); - debug1("mpg123_length: external sample length: %"OFF_P, (off_p)length); + length = INT123_frame_ins2outs(mh, length); + debug1("mpg123_length: external sample length: %"PRIi64, length); length = SAMPLE_ADJUST(mh,length); return length; } - int attribute_align_arg mpg123_scan(mpg123_handle *mh) { int b; - off_t oldpos; - off_t track_frames = 0; - off_t track_samples = 0; + int64_t oldpos; + int64_t track_frames = 0; + int64_t track_samples = 0; if(mh == NULL) return MPG123_BAD_HANDLE; if(!(mh->rdat.flags & READER_SEEKABLE)){ mh->err = MPG123_NO_SEEK; return MPG123_ERR; } @@ -1572,7 +1629,7 @@ int attribute_align_arg mpg123_scan(mpg123_handle *mh) if(b == MPG123_DONE) return MPG123_OK; else return MPG123_ERR; /* Must be error here, NEED_MORE is not for seekable streams. */ } - oldpos = mpg123_tell(mh); + oldpos = mpg123_tell64(mh); b = mh->rd->seek_frame(mh, 0); if(b<0 || mh->num != 0) return MPG123_ERR; /* One frame must be there now. */ @@ -1581,19 +1638,20 @@ int attribute_align_arg mpg123_scan(mpg123_handle *mh) debug("TODO: We should disable gapless code when encountering inconsistent mh->spf!"); debug(" ... at least unset MPG123_ACCURATE."); /* Do not increment mh->track_frames in the loop as tha would confuse Frankenstein detection. */ - while(read_frame(mh) == 1) + while(INT123_read_frame(mh) == 1) { ++track_frames; track_samples += mh->spf; } mh->track_frames = track_frames; mh->track_samples = track_samples; - debug2("Scanning yielded %"OFF_P" track samples, %"OFF_P" frames.", (off_p)mh->track_samples, (off_p)mh->track_frames); + debug2("Scanning yielded %"PRIi64" track samples, %"PRIi64" frames." + , mh->track_samples, mh->track_frames); #ifdef GAPLESS /* Also, think about usefulness of that extra value track_samples ... it could be used for consistency checking. */ - if(mh->p.flags & MPG123_GAPLESS) frame_gapless_update(mh, mh->track_samples); + if(mh->p.flags & MPG123_GAPLESS) INT123_frame_gapless_update(mh, mh->track_samples); #endif - return mpg123_seek(mh, oldpos, SEEK_SET) >= 0 ? MPG123_OK : MPG123_ERR; + return mpg123_seek64(mh, oldpos, SEEK_SET) >= 0 ? MPG123_OK : MPG123_ERR; } int attribute_align_arg mpg123_meta_check(mpg123_handle *mh) @@ -1606,8 +1664,8 @@ void attribute_align_arg mpg123_meta_free(mpg123_handle *mh) { if(mh == NULL) return; - reset_id3(mh); - reset_icy(&mh->icy); + INT123_reset_id3(mh); + INT123_reset_icy(&mh->icy); } int attribute_align_arg mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2) @@ -1618,7 +1676,7 @@ int attribute_align_arg mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_ if(mh->metaflags & MPG123_ID3) { - id3_link(mh); + INT123_id3_link(mh); if(v1 != NULL && mh->rdat.flags & READER_ID3TAG) *v1 = (mpg123_id3v1*) mh->id3buf; if(v2 != NULL) #ifdef NO_ID3V2 @@ -1677,7 +1735,7 @@ int attribute_align_arg mpg123_icy(mpg123_handle *mh, char **icy_meta) char* attribute_align_arg mpg123_icy2utf8(const char* icy_text) { #ifndef NO_ICY - return icy2utf8(icy_text, 0); + return INT123_icy2utf8(icy_text, 0); #else return NULL; #endif @@ -1709,18 +1767,18 @@ int attribute_align_arg mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_en #ifndef NO_ID3V2 /* The encodings we get from ID3v2 tags. */ case mpg123_text_utf8: - id3_to_utf8(sb, mpg123_id3_utf8, source, source_size, 0); + INT123_id3_to_utf8(sb, mpg123_id3_utf8, source, source_size, 0); break; case mpg123_text_latin1: - id3_to_utf8(sb, mpg123_id3_latin1, source, source_size, 0); + INT123_id3_to_utf8(sb, mpg123_id3_latin1, source, source_size, 0); break; case mpg123_text_utf16bom: case mpg123_text_utf16: - id3_to_utf8(sb, mpg123_id3_utf16bom, source, source_size, 0); + INT123_id3_to_utf8(sb, mpg123_id3_utf16bom, source, source_size, 0); break; /* Special because one cannot skip zero bytes here. */ case mpg123_text_utf16be: - id3_to_utf8(sb, mpg123_id3_utf16be, source, source_size, 0); + INT123_id3_to_utf8(sb, mpg123_id3_utf16be, source, source_size, 0); break; #endif #ifndef NO_ICY @@ -1733,7 +1791,7 @@ int attribute_align_arg mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_en if(source[source_size-1] == 0) { /* Convert from ICY encoding... with force applied or not. */ - char *tmpstring = icy2utf8((const char*)source, enc == mpg123_text_cp1252 ? 1 : 0); + char *tmpstring = INT123_icy2utf8((const char*)source, enc == mpg123_text_cp1252 ? 1 : 0); if(tmpstring != NULL) { mpg123_set_string(sb, tmpstring); @@ -1756,9 +1814,7 @@ int attribute_align_arg mpg123_store_utf8_2(mpg123_string *sb, int enc, const un } #endif - - -int attribute_align_arg mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill) +int attribute_align_arg mpg123_index64(mpg123_handle *mh, int64_t **offsets, int64_t *step, size_t *fill) { if(mh == NULL) return MPG123_BAD_HANDLE; if(offsets == NULL || step == NULL || fill == NULL) @@ -1778,7 +1834,7 @@ int attribute_align_arg mpg123_index(mpg123_handle *mh, off_t **offsets, off_t * return MPG123_OK; } -int attribute_align_arg mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill) +int attribute_align_arg mpg123_set_index64(mpg123_handle *mh, int64_t *offsets, int64_t step, size_t fill) { if(mh == NULL) return MPG123_BAD_HANDLE; #ifdef FRAME_INDEX @@ -1787,7 +1843,7 @@ int attribute_align_arg mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_ mh->err = MPG123_BAD_INDEX_PAR; return MPG123_ERR; } - if(fi_set(&mh->index, offsets, step, fill) == -1) + if(INT123_fi_set(&mh->index, offsets, step, fill) == -1) { mh->err = MPG123_OUT_OF_MEM; return MPG123_ERR; @@ -1799,6 +1855,7 @@ int attribute_align_arg mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_ #endif } + int attribute_align_arg mpg123_close(mpg123_handle *mh) { if(mh == NULL) return MPG123_BAD_HANDLE; @@ -1809,11 +1866,11 @@ int attribute_align_arg mpg123_close(mpg123_handle *mh) if(mh->new_format) { debug("Hey, we are closing a track before the new format has been queried..."); - invalidate_format(&mh->af); + INT123_invalidate_format(&mh->af); mh->new_format = 0; } /* Always reset the frame buffers on close, so we cannot forget it in funky opening routines (wrappers, even). */ - frame_reset(mh); + INT123_frame_reset(mh); return MPG123_OK; } @@ -1822,7 +1879,10 @@ void attribute_align_arg mpg123_delete(mpg123_handle *mh) if(mh != NULL) { mpg123_close(mh); - frame_exit(mh); /* free buffers in frame */ +#ifndef PORTABLE_API + INT123_wrap_destroy(mh->wrapperdata); +#endif + INT123_frame_exit(mh); /* free buffers in frame */ free(mh); /* free struct; cast? */ } } @@ -1858,7 +1918,7 @@ static const char *mpg123_error[] = "Build does not support stream timeouts. (code 21)", "File access error. (code 22)", "Seek not supported by stream. (code 23)", - "No stream opened. (code 24)", + "No stream opened or missing reader setup while opening. (code 24)", "Bad parameter handle. (code 25)", "Invalid parameter addresses for index retrieval. (code 26)", "Lost track in the bytestream and did not attempt resync. (code 27)", @@ -1910,3 +1970,22 @@ const char* attribute_align_arg mpg123_strerror(mpg123_handle *mh) { return mpg123_plain_strerror(mpg123_errcode(mh)); } + +#ifndef PORTABLE_API +// Isolation of lfs_wrap.c code, limited hook to get at its data and +// for storing error codes. + +void ** INT123_wrap_handle(mpg123_handle *mh) +{ + if(mh == NULL) + return NULL; + return &(mh->wrapperdata); +} + +int INT123_set_err(mpg123_handle *mh, int err) +{ + if(mh) + mh->err = err; + return MPG123_ERR; +} +#endif diff --git a/src/libmpg123/mangle.h b/src/libmpg123/mangle.h index aaebfd3..6ade630 100644 --- a/src/libmpg123/mangle.h +++ b/src/libmpg123/mangle.h @@ -1,7 +1,7 @@ /* mangle: support defines for preprocessed assembler - copyright 1995-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org This once started out as mangle.h from MPlayer, but you can't really call it derived work... the small part that in principle stems from MPlayer also being not very special (once you decided to use such a header at all, it's quite obvious material). @@ -11,7 +11,6 @@ #define __MANGLE_H #include "config.h" -#include "intsym.h" #if (defined OPT_I486) || (defined OPT_I586) || (defined OPT_I586_DITHER) \ || (defined OPT_MMX) || (defined OPT_SSE) || (defined OPT_3DNOW) || (defined OPT_3DNOWEXT) \ @@ -94,13 +93,13 @@ #if defined(PIC) && defined(__ELF__) /* ELF binaries (Unix/Linux) */ -#define LOCAL_VAR(a) a ## @GOTOFF(_EBX_) -#define GLOBAL_VAR(a) ASM_NAME(a) ## @GOTOFF(_EBX_) -#define GLOBAL_VAR_PTR(a) ASM_NAME(a) ## @GOT(_EBX_) +#define LOCAL_VAR(a) MANGLE_MACROCAT(a, @GOTOFF(_EBX_)) +#define GLOBAL_VAR(a) MANGLE_MACROCAT(ASM_NAME(a), @GOTOFF(_EBX_)) +#define GLOBAL_VAR_PTR(a) MANGLE_MACROCAT(ASM_NAME(a), @GOT(_EBX_)) #define FUNC(a) ASM_NAME(a) -#define EXTERNAL_FUNC(a) ASM_NAME(a) ## @PLT +#define EXTERNAL_FUNC(a) MANGLE_MACROCAT(ASM_NAME(a), @PLT) #undef ASM_VALUE -#define ASM_VALUE(a) MANGLE_MACROCAT($,a) ##@GOTOFF +#define ASM_VALUE(a) MANGLE_MACROCAT(MANGLE_MACROCAT($,a), @GOTOFF) #define GET_GOT \ call 1f; \ 1: \ @@ -113,11 +112,11 @@ #elif defined(PIC) && defined(__APPLE__) /* Mach-O binaries (OSX/iOS) */ -#define LOCAL_VAR(a) a ## - Lpic_base(_EBX_) +#define LOCAL_VAR(a) MANGLE_MACROCAT(a, - Lpic_base(_EBX_)) #define GLOBAL_VAR(a) .err This ABI cannot access non-local symbols directly. -#define GLOBAL_VAR_PTR(a) L_ ## a ## - Lpic_base(_EBX_) -#define FUNC(a) L_ ## a -#define EXTERNAL_FUNC(a) L_ ## a +#define GLOBAL_VAR_PTR(a) MANGLE_MACROCAT(MANGLE_MACROCAT(L_, a), - Lpic_base(_EBX_)) +#define FUNC(a) MANGLE_MACROCAT(L_, a) +#define EXTERNAL_FUNC(a) MANGLE_MACROCAT(L_, a) #define GET_GOT \ call Lpic_base; \ Lpic_base: \ diff --git a/src/libmpg123/mpg123.h.in b/src/libmpg123/mpg123.h similarity index 88% rename from src/libmpg123/mpg123.h.in rename to src/libmpg123/mpg123.h index 75e0ced..8219018 100644 --- a/src/libmpg123/mpg123.h.in +++ b/src/libmpg123/mpg123.h @@ -1,7 +1,7 @@ /* - libmpg123: MPEG Audio Decoder library (version @PACKAGE_VERSION@) + libmpg123: MPEG Audio Decoder library - copyright 1995-2015 by the mpg123 project + copyright 1995-2023 by the mpg123 project free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org */ @@ -9,17 +9,17 @@ #ifndef MPG123_LIB_H #define MPG123_LIB_H -#include +#include "fmt123.h" /** \file mpg123.h The header file for the libmpg123 MPEG Audio decoder */ /** A macro to check at compile time which set of API functions to expect. - * This should be incremented at least each time a new symbol is added + * This must be incremented at least each time a new symbol is added * to the header. */ -#ifndef MPG123_API_VERSION -#define MPG123_API_VERSION @API_VERSION@ -#endif +#define MPG123_API_VERSION 48 +/** library patch level at client build time */ +#define MPG123_PATCHLEVEL 0 #ifndef MPG123_EXPORT /** Defines needed for MS Visual Studio(tm) DLL builds. @@ -71,49 +71,37 @@ #endif -/* You can use this file directly, avoiding the autoconf replacements. - Might have to set MPG123_NO_LARGENAME, too, in case you have - _FILE_OFFSET_BITS defined where it does not make sense. */ -#ifndef MPG123_NO_CONFIGURE - -@INCLUDE_STDLIB_H@ -@INCLUDE_SYS_TYPE_H@ +#include +#include +#ifndef MPG123_PORTABLE_API +#include /* A little hack to help MSVC not having ssize_t. */ #ifdef _MSC_VER -#include typedef ptrdiff_t mpg123_ssize_t; #else typedef ssize_t mpg123_ssize_t; #endif - -/* You can always enforce largefile hackery by setting MPG123_LARGESUFFIX. */ -/* Otherwise, this header disables it if the build system decided so. */ -#if !defined(MPG123_LARGESUFFIX) && @BUILD_NO_LARGENAME@ -#ifndef MPG123_NO_LARGENAME -#define MPG123_NO_LARGENAME -#endif #endif -#endif /* MPG123_NO_CONFIGURE */ -/* Simplified large file handling. - I used to have a check here that prevents building for a library with conflicting large file setup - (application that uses 32 bit offsets with library that uses 64 bits). - While that was perfectly fine in an environment where there is one incarnation of the library, - it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the - correct header matching the 32 bit library (where large files need explicit support) or - the 64 bit library (where there is no distinction). +/* Handling of large file offsets. + When client code defines _FILE_OFFSET_BITS, it wants non-default large file support, + and thus functions with added suffix (mpg123_open_64). The default library build provides + wrapper and alias functions to accomodate client code variations (dual-mode library like glibc). - New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support, - and thus functions with added suffix (mpg123_open_64). - Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when - building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now. - Link failure is not the expected outcome of any half-sane usage anymore. + Client code can definie MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling + or enforcing the suffixes. If explicit usage of 64 bit offsets is desired, the int64_t API + (functions with 64 suffix without underscore, notablly mpg123_reader64()) can be used since + API version 48 (mpg123 1.32). - More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names. + When in doubt, use the explicit 64 bit functions and avoid off_t in the API. You can define + MPG123_PORTABLE_API to ensure that. That being said, if you and your compiler do not have + problems with the concept of off_t, just use the normal API and be happy. Both 32 and 64 + bit versions will be present where appropriate. */ +#ifndef MPG123_PORTABLE_API /* Now, the renaming of large file aware functions. By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME. @@ -152,6 +140,7 @@ typedef ssize_t mpg123_ssize_t; #define mpg123_framepos MPG123_LARGENAME(mpg123_framepos) #endif /* largefile hackery */ +#endif #ifdef __cplusplus extern "C" { @@ -174,6 +163,21 @@ struct mpg123_handle_struct; */ typedef struct mpg123_handle_struct mpg123_handle; +/** Get version of the mpg123 distribution this library build came with. + * (optional means non-NULL) + * \param major optional address to store major version number + * \param minor optional address to store minor version number + * \param patch optional address to store patchlevel version number + * \return full version string (like "1.2.3-beta4 (experimental)") + */ +const char *mpg123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch); + +/** Get API version of library build. + * \param patch optional address to store patchlevel + * \return API version of library + */ +unsigned int mpg123_libversion(unsigned int *patch); + /** Useless no-op that used to do initialization work. * * For API version before 46 (mpg123 1.27.0), you had to ensure to have @@ -488,7 +492,7 @@ enum mpg123_errors MPG123_NO_TIMEOUT, /**< Build does not support stream timeouts. */ MPG123_BAD_FILE, /**< File access error. */ MPG123_NO_SEEK, /**< Seek not supported by stream. */ - MPG123_NO_READER, /**< No stream opened. */ + MPG123_NO_READER, /**< No stream opened or no reader callback setup. */ MPG123_BAD_PARS, /**< Bad parameter handle. */ MPG123_BAD_INDEX_PAR, /**< Bad parameters to mpg123_index() and mpg123_set_index() */ MPG123_OUT_OF_SYNC, /**< Lost track in bytestream and did not try to resync. */ @@ -711,6 +715,7 @@ MPG123_EXPORT int mpg123_getformat2( mpg123_handle *mh * @{ */ +#ifndef MPG123_PORTABLE_API /** Open a simple MPEG file with fixed properties. * * This function shall simplify the common use case of a plain MPEG @@ -781,10 +786,12 @@ MPG123_EXPORT int mpg123_open(mpg123_handle *mh, const char *path); * \return MPG123_OK on success */ MPG123_EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd); +#endif /** Use an opaque handle as bitstream input. This works only with the - * replaced I/O from mpg123_replace_reader_handle()! - * mpg123_close() will call the cleanup callback for your handle (if you gave one). + * replaced I/O from mpg123_replace_reader_handle() or mpg123_reader64()! + * mpg123_close() will call the cleanup callback for your non-NULL + * handle (if you gave one). * \param mh handle * \param iohandle your handle * \return MPG123_OK on success @@ -853,6 +860,7 @@ MPG123_EXPORT int mpg123_decode( mpg123_handle *mh , const unsigned char *inmemory, size_t inmemsize , void *outmemory, size_t outmemsize, size_t *done ); +#ifndef MPG123_PORTABLE_API /** Decode next MPEG frame to internal buffer * or read a frame and return after setting a new format. * \param mh handle @@ -875,6 +883,30 @@ MPG123_EXPORT int mpg123_decode_frame( mpg123_handle *mh */ MPG123_EXPORT int mpg123_framebyframe_decode( mpg123_handle *mh , off_t *num, unsigned char **audio, size_t *bytes ); +#endif /* un-portable API */ + +/** Decode next MPEG frame to internal buffer + * or read a frame and return after setting a new format. + * \param mh handle + * \param num current frame offset gets stored there + * \param audio This pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_decode_frame64( mpg123_handle *mh +, int64_t *num, unsigned char **audio, size_t *bytes ); + +/** Decode current MPEG frame to internal buffer. + * Warning: This is experimental API that might change in future releases! + * Please watch mpg123 development closely when using it. + * \param mh handle + * \param num last frame offset gets stored there + * \param audio this pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_framebyframe_decode64( mpg123_handle *mh +, int64_t *num, unsigned char **audio, size_t *bytes ); /** Find, read and parse the next mp3 frame * Warning: This is experimental API that might change in future releases! @@ -902,6 +934,7 @@ MPG123_EXPORT int mpg123_framebyframe_next(mpg123_handle *mh); MPG123_EXPORT int mpg123_framedata( mpg123_handle *mh , unsigned long *header, unsigned char **bodydata, size_t *bodybytes ); +#ifndef MPG123_PORTABLE_API /** Get the input position (byte offset in stream) of the last parsed frame. * This can be used for external seek index building, for example. * It just returns the internally stored offset, regardless of validity -- @@ -910,6 +943,16 @@ MPG123_EXPORT int mpg123_framedata( mpg123_handle *mh * \return byte offset in stream */ MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh); +#endif + +/** Get the 64 bit input position (byte offset in stream) of the last parsed frame. + * This can be used for external seek index building, for example. + * It just returns the internally stored offset, regardless of validity -- + * you ensure that a valid frame has been parsed before! + * \param mh handle + * \return byte offset in stream + */ +MPG123_EXPORT int64_t mpg123_framepos64(mpg123_handle *mh); /** @} */ @@ -936,6 +979,12 @@ MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh); * - SEEK_CUR: change position by offset from now * - SEEK_END: set position to offset from end * + * Since API version 48 (mpg123 1.32), the offset given with SEEK_END is always + * taken to be negative in the terms of standard lseek(). You can only seek from + * the end towards the beginning. All earlier versions had the sign wrong, positive + * was towards the beginning, negative past the end (which results in error, + * anyway). + * * Note that sample-accurate seek only works when gapless support has been * enabled at compile time; seek is frame-accurate otherwise. * Also, really sample-accurate seeking (meaning that you get the identical @@ -956,57 +1005,131 @@ MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh); * @{ */ +#ifndef MPG123_PORTABLE_API /** Returns the current position in samples. * On the next successful read, you'd get audio data with that offset. * \param mh handle * \return sample (PCM frame) offset or MPG123_ERR (null handle) */ MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh); +#endif +/** Returns the current 64 bit position in samples. + * On the next successful read, you'd get audio data with that offset. + * \param mh handle + * \return sample (PCM frame) offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT int64_t mpg123_tell64(mpg123_handle *mh); + +#ifndef MPG123_PORTABLE_API /** Returns the frame number that the next read will give you data from. * \param mh handle * \return frame offset or MPG123_ERR (null handle) */ MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh); +#endif +/** Returns the 64 bit frame number that the next read will give you data from. + * \param mh handle + * \return frame offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT int64_t mpg123_tellframe64(mpg123_handle *mh); + +#ifndef MPG123_PORTABLE_API /** Returns the current byte offset in the input stream. * \param mh handle * \return byte offset or MPG123_ERR (null handle) */ MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh); +#endif +/** Returns the current 64 bit byte offset in the input stream. + * \param mh handle + * \return byte offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT int64_t mpg123_tell_stream64(mpg123_handle *mh); + + +#ifndef MPG123_PORTABLE_API /** Seek to a desired sample offset. * Usage is modelled afer the standard lseek(). * \param mh handle * \param sampleoff offset in samples (PCM frames) * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative since API + * version 48, was inverted from lseek() usage since ever before.) * \return The resulting offset >= 0 or error/message code */ MPG123_EXPORT off_t mpg123_seek( mpg123_handle *mh , off_t sampleoff, int whence ); +#endif +/** Seek to a desired 64 bit sample offset. + * Usage is modelled afer the standard lseek(). + * \param mh handle + * \param sampleoff offset in samples (PCM frames) + * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative.) + * \return The resulting offset >= 0 or error/message code + */ +MPG123_EXPORT int64_t mpg123_seek64( mpg123_handle *mh +, int64_t sampleoff, int whence ); + +#ifndef MPG123_PORTABLE_API /** Seek to a desired sample offset in data feeding mode. * This just prepares things to be right only if you ensure that the next chunk * of input data will be from input_offset byte position. * \param mh handle * \param sampleoff offset in samples (PCM frames) * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative since API + * version 48, was inverted from lseek() usage since ever before.) * \param input_offset The position it expects to be at the * next time data is fed to mpg123_decode(). * \return The resulting offset >= 0 or error/message code */ MPG123_EXPORT off_t mpg123_feedseek( mpg123_handle *mh , off_t sampleoff, int whence, off_t *input_offset ); +#endif +/** Seek to a desired 64 bit sample offset in data feeding mode. + * This just prepares things to be right only if you ensure that the next chunk + * of input data will be from input_offset byte position. + * \param mh handle + * \param sampleoff offset in samples (PCM frames) + * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative.) + * \param input_offset The position it expects to be at the + * next time data is fed to mpg123_decode(). + * \return The resulting offset >= 0 or error/message code + */ +MPG123_EXPORT int64_t mpg123_feedseek64( mpg123_handle *mh +, int64_t sampleoff, int whence, int64_t *input_offset ); + +#ifndef MPG123_PORTABLE_API /** Seek to a desired MPEG frame offset. * Usage is modelled afer the standard lseek(). * \param mh handle * \param frameoff offset in MPEG frames * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative since API + * version 48, was inverted from lseek() usage since ever before.) * \return The resulting offset >= 0 or error/message code */ MPG123_EXPORT off_t mpg123_seek_frame( mpg123_handle *mh , off_t frameoff, int whence ); +#endif +/** Seek to a desired 64 bit MPEG frame offset. + * Usage is modelled afer the standard lseek(). + * \param mh handle + * \param frameoff offset in MPEG frames + * \param whence one of SEEK_SET, SEEK_CUR or SEEK_END + * (Offset for SEEK_END is always effectively negative.) + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT int64_t mpg123_seek_frame64( mpg123_handle *mh +, int64_t frameoff, int whence ); + +#ifndef MPG123_PORTABLE_API /** Return a MPEG frame offset corresponding to an offset in seconds. * This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only. * \return frame offset >= 0 or error/message code */ @@ -1014,7 +1137,9 @@ MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec); /** Give access to the frame index table that is managed for seeking. * You are asked not to modify the values... Use mpg123_set_index to set the - * seek index + * seek index. + * Note: This can be just a copy of the data in case a conversion is done + * from the internal 64 bit values. * \param mh handle * \param offsets pointer to the index array * \param step one index byte offset advances this many MPEG frames @@ -1023,10 +1148,31 @@ MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec); */ MPG123_EXPORT int mpg123_index( mpg123_handle *mh , off_t **offsets, off_t *step, size_t *fill ); +#endif +/** Return a 64 bit MPEG frame offset corresponding to an offset in seconds. + * This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only. + * \return frame offset >= 0 or error/message code */ +MPG123_EXPORT int64_t mpg123_timeframe64(mpg123_handle *mh, double sec); + +/** Give access to the 64 bit frame index table that is managed for seeking. + * You are asked not to modify the values... Use mpg123_set_index to set the + * seek index. + * \param mh handle + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_index64( mpg123_handle *mh +, int64_t **offsets, int64_t *step, size_t *fill ); + +#ifndef MPG123_PORTABLE_API /** Set the frame index table * Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets * to NULL and fill to 0 will clear the index and free the allocated memory used by the index. + * Note that this function might involve conversion/copying of data because of + * the varying nature of off_t. Better use mpg123_set_index64(). * \param mh handle * \param offsets pointer to the index array * \param step one index byte offset advances this many MPEG frames @@ -1035,15 +1181,31 @@ MPG123_EXPORT int mpg123_index( mpg123_handle *mh */ MPG123_EXPORT int mpg123_set_index( mpg123_handle *mh , off_t *offsets, off_t step, size_t fill ); +#endif +/** Set the 64 bit frame index table + * Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets + * to NULL and fill to 0 will clear the index and free the allocated memory used by the index. + * \param mh handle + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_index64( mpg123_handle *mh +, int64_t *offsets, int64_t step, size_t fill ); + + +#ifndef MPG123_PORTABLE_API /** An old crutch to keep old mpg123 binaries happy. * WARNING: This function is there only to avoid runtime linking errors with - * standalone mpg123 before version 1.23.0 (if you strangely update the + * standalone mpg123 before version 1.32.0 (if you strangely update the * library but not the end-user program) and actually is broken * for various cases (p.ex. 24 bit output). Do never use. It might eventually * be purged from the library. */ -MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left); +MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t INT123_frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left); +#endif /** @} */ @@ -1333,6 +1495,7 @@ MPG123_EXPORT size_t mpg123_safe_buffer(void); */ MPG123_EXPORT int mpg123_scan(mpg123_handle *mh); +#ifndef MPG123_PORTABLE_API /** Return, if possible, the full (expected) length of current track in * MPEG frames. * \param mh handle @@ -1361,6 +1524,36 @@ MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh); * \return MPG123_OK on success */ MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size); +#endif + +/** Return, if possible, the full (expected) length of current track in + * MPEG frames as 64 bit number. + * \param mh handle + * \return length >= 0 or MPG123_ERR if there is no length guess possible. + */ +MPG123_EXPORT int64_t mpg123_framelength64(mpg123_handle *mh); + +/** Return, if possible, the full (expected) length of current + * track in samples (PCM frames) as 64 bit value. + * + * This relies either on an Info frame at the beginning or a previous + * call to mpg123_scan() to get the real number of MPEG frames in a + * file. It will guess based on file size if neither Info frame nor + * scan data are present. In any case, there is no guarantee that the + * decoder will not give you more data, for example in case the open + * file gets appended to during decoding. + * \param mh handle + * \return length >= 0 or MPG123_ERR if there is no length guess possible. + */ +MPG123_EXPORT int64_t mpg123_length64(mpg123_handle *mh); + +/** Override the 64 bit value for file size in bytes. + * Useful for getting sensible track length values in feed mode or for HTTP streams. + * \param mh handle + * \param size file size in bytes + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_filesize64(mpg123_handle *mh, int64_t size); /** Get MPEG frame duration in seconds. * \param mh handle @@ -1984,12 +2177,13 @@ MPG123_EXPORT int mpg123_replace_buffer(mpg123_handle *mh */ MPG123_EXPORT size_t mpg123_outblock(mpg123_handle *mh); +#ifndef MPG123_PORTABLE_API /** Replace low-level stream access functions; read and lseek as known in POSIX. * You can use this to make any fancy file opening/closing yourself, * using mpg123_open_fd() to set the file descriptor for your read/lseek * (doesn't need to be a "real" file descriptor...). - * Setting a function to NULL means that the default internal read is - * used (active from next mpg123_open call on). + * Setting a function to NULL means that just a call to POSIX read/lseek is + * done (without handling signals). * Note: As it would be troublesome to mess with this while having a file open, * this implies mpg123_close(). * \param mh handle @@ -2002,6 +2196,10 @@ MPG123_EXPORT int mpg123_replace_reader( mpg123_handle *mh , off_t (*r_lseek)(int, off_t, int) ); +/* TODO: Implement replace_read_handle() as thin wrapper over mpg123_reader(), + triggering the same further code paths, include mpg123_open_handle(). + And: Implement the below functions, MPG123_PORTABLE_API, at all. */ + /** Replace I/O functions with your own ones operating on some kind of * handle instead of integer descriptors. * The handle is a void pointer, so you can pass any data you want... @@ -2012,7 +2210,7 @@ MPG123_EXPORT int mpg123_replace_reader( mpg123_handle *mh * \param mh handle * \param r_read callback for reading (behaviour like POSIX read) * \param r_lseek callback for seeking (like POSIX lseek) - * \param cleanup A callback to clean up an I/O handle on mpg123_close, + * \param cleanup A callback to clean up a non-NULL I/O handle on mpg123_close, * can be NULL for none (you take care of cleaning your handles). * \return MPG123_OK on success */ @@ -2020,6 +2218,27 @@ MPG123_EXPORT int mpg123_replace_reader_handle( mpg123_handle *mh , mpg123_ssize_t (*r_read) (void *, void *, size_t) , off_t (*r_lseek)(void *, off_t, int) , void (*cleanup)(void*) ); +#endif + +/** Set up portable read functions on an opaque handle. + * The handle is a void pointer, so you can pass any data you want... + * mpg123_open_handle() is the call you make to use the I/O defined here. + * There is no fallback to internal read/seek here. + * Note: As it would be troublesome to mess with this while having a file open, + * this mpg123_close() is implied here. + * \param mh handle + * \param r_read callback for reading + * The parameters are the handle, the buffer to read into, a byte count to read, + * address to store the returned byte count. Return value is zero for + * no issue, non-zero for some error. Recoverable signal handling has to happen + * inside the callback. + * \param r_lseek callback for seeking (like POSIX lseek), maybe NULL for + * non-seekable streams + * \param cleanup A callback to clean up a non-NULL I/O handle on mpg123_close, + * maybe NULL for none + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_reader64( mpg123_handle *mh, int (*r_read) (void *, void *, size_t, size_t *), int64_t (*r_lseek)(void *, int64_t, int), void (*cleanup)(void*) ); /** @} */ diff --git a/src/libmpg123/mpg123lib_intern.h b/src/libmpg123/mpg123lib_intern.h index e89af70..8489711 100644 --- a/src/libmpg123/mpg123lib_intern.h +++ b/src/libmpg123/mpg123lib_intern.h @@ -1,7 +1,7 @@ /* mpg123lib_intern: Common non-public stuff for libmpg123 - copyright 1995-2021 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org derived from the old mpg123.h @@ -14,15 +14,14 @@ #define MPG123_ENCODINGS 12 #include "config.h" /* Load this before _anything_ */ -#include "intsym.h" /* Prefixing of internal symbols that still are public in a static lib. */ #include "abi_align.h" -/* export DLL symbols */ -#if defined(WIN32) && defined(DYNAMIC_BUILD) -#define BUILD_MPG123_DLL -#endif #include "compat.h" + +// Only portable API plays a role in the library itself, outside of lfs_wrap.c. +// Also, we need to ensure no suffix renaming for the primary implementations. +#define MPG123_PORTABLE_API #define MPG123_ENUM_API #include "mpg123.h" @@ -321,17 +320,17 @@ static inline int32_t scale_rounded(int32_t x, int shift) #define VERBOSE4 (NOQUIET && fr->p.verbose > 3) #define PVERB(mp, level) (!((mp)->flags & MPG123_QUIET) && (mp)->verbose >= (level)) -int decode_update(mpg123_handle *mh); +int INT123_decode_update(mpg123_handle *mh); /* residing in format.c */ -off_t decoder_synth_bytes(mpg123_handle *fr , off_t s); -off_t samples_to_bytes(mpg123_handle *fr , off_t s); -off_t bytes_to_samples(mpg123_handle *fr , off_t b); -off_t outblock_bytes(mpg123_handle *fr, off_t s); +int64_t INT123_decoder_synth_bytes(mpg123_handle *fr , int64_t s); +int64_t INT123_samples_to_bytes(mpg123_handle *fr , int64_t s); +int64_t INT123_bytes_to_samples(mpg123_handle *fr , int64_t b); +int64_t INT123_outblock_bytes(mpg123_handle *fr, int64_t s); /* Postprocessing format conversion of freshly decoded buffer. */ -void postprocess_buffer(mpg123_handle *fr); +void INT123_postprocess_buffer(mpg123_handle *fr); -int open_fixed_pre(mpg123_handle *mh, int channels, int encoding); -int open_fixed_post(mpg123_handle *mh, int channels, int encoding); +int INT123_open_fixed_pre(mpg123_handle *mh, int channels, int encoding); +int INT123_open_fixed_post(mpg123_handle *mh, int channels, int encoding); /* If networking is enabled and we really mean internal networking, the timeout_read function is available. */ #if defined (NETWORK) && !defined (WANT_WIN32_SOCKETS) diff --git a/src/libmpg123/ntom.c b/src/libmpg123/ntom.c index 196a569..1fb4c01 100644 --- a/src/libmpg123/ntom.c +++ b/src/libmpg123/ntom.c @@ -1,19 +1,19 @@ /* ntom.c: N->M down/up sampling; the setup code. - copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ -#define SAFE_NTOM /* Do not depend on off_t*off_t with big values still being in the range... */ +#define SAFE_NTOM /* Do not depend on int64_t*int64_t with big values still being in the range... */ #include "mpg123lib_intern.h" #include "debug.h" -int synth_ntom_set_step(mpg123_handle *fr) +int INT123_synth_ntom_set_step(mpg123_handle *fr) { long m,n; - m = frame_freq(fr); + m = INT123_frame_freq(fr); n = fr->af.rate; if(VERBOSE2) fprintf(stderr,"Init rate converter: %ld->%ld\n",m,n); @@ -33,21 +33,21 @@ int synth_ntom_set_step(mpg123_handle *fr) return -1; } - fr->ntom_val[0] = fr->ntom_val[1] = ntom_val(fr, fr->num); + fr->INT123_ntom_val[0] = fr->INT123_ntom_val[1] = INT123_ntom_val(fr, fr->num); return 0; } /* The SAFE_NTOM does iterative loops instead of straight multiplication. The safety is not just about the algorithm closely mimicking the decoder instead of applying some formula, - it is more about avoiding multiplication of possibly big sample offsets (a 32bit off_t could overflow too easily). + it is more about avoiding multiplication of possibly big sample offsets (a 32bit int64_t could overflow too easily). */ -unsigned long ntom_val(mpg123_handle *fr, off_t frame) +unsigned long INT123_ntom_val(mpg123_handle *fr, int64_t frame) { - off_t ntm; + int64_t ntm; #ifdef SAFE_NTOM /* Carry out the loop, without the threatening integer overflow. */ - off_t f; + int64_t f; ntm = NTOM_MUL>>1; /* for frame 0 */ for(f=0; f 0 */ { @@ -63,29 +63,29 @@ unsigned long ntom_val(mpg123_handle *fr, off_t frame) /* Set the ntom value for next expected frame to be decoded. This is for keeping output consistent across seeks. */ -void ntom_set_ntom(mpg123_handle *fr, off_t num) +void INT123_ntom_set_ntom(mpg123_handle *fr, int64_t num) { - fr->ntom_val[1] = fr->ntom_val[0] = ntom_val(fr, num); + fr->INT123_ntom_val[1] = fr->INT123_ntom_val[0] = INT123_ntom_val(fr, num); } /* Carry out the ntom sample count operation for this one frame. No fear of integer overflow here. */ -off_t ntom_frame_outsamples(mpg123_handle *fr) +int64_t INT123_ntom_frame_outsamples(mpg123_handle *fr) { /* The do this before decoding the separate channels, so there is only one common ntom value. */ - int ntm = fr->ntom_val[0]; + int ntm = fr->INT123_ntom_val[0]; ntm += fr->spf*fr->ntom_step; return ntm/NTOM_MUL; } /* Convert frame offset to unadjusted output sample offset. */ -off_t ntom_frmouts(mpg123_handle *fr, off_t frame) +int64_t INT123_ntom_frmouts(mpg123_handle *fr, int64_t frame) { #ifdef SAFE_NTOM - off_t f; + int64_t f; #endif - off_t soff = 0; - off_t ntm = ntom_val(fr,0); + int64_t soff = 0; + int64_t ntm = INT123_ntom_val(fr,0); #ifdef SAFE_NTOM if(frame <= 0) return 0; for(f=0; fspf*(off_t)fr->ntom_step)/(off_t)NTOM_MUL; + soff = (ntm + frame*(int64_t)fr->spf*(int64_t)fr->ntom_step)/(int64_t)NTOM_MUL; #endif return soff; } /* Convert input samples to unadjusted output samples. */ -off_t ntom_ins2outs(mpg123_handle *fr, off_t ins) +int64_t INT123_ntom_ins2outs(mpg123_handle *fr, int64_t ins) { - off_t soff = 0; - off_t ntm = ntom_val(fr,0); + int64_t soff = 0; + int64_t ntm = INT123_ntom_val(fr,0); #ifdef SAFE_NTOM { - off_t block = fr->spf; + int64_t block = fr->spf; if(ins <= 0) return 0; do { - off_t nowblock = ins > block ? block : ins; + int64_t nowblock = ins > block ? block : ins; ntm += nowblock*fr->ntom_step; soff += ntm/NTOM_MUL; ntm -= (ntm/NTOM_MUL)*NTOM_MUL; @@ -119,18 +119,18 @@ off_t ntom_ins2outs(mpg123_handle *fr, off_t ins) } while(ins > 0); } #else - /* Beware of overflows: when off_t is 32bits, the multiplication blows too easily. + /* Beware of overflows: when int64_t is 32bits, the multiplication blows too easily. Of course, it blows for 64bits, too, in theory, but that's for _really_ large files. */ - soff = ((off_t)ntm + (off_t)ins*(off_t)fr->ntom_step)/(off_t)NTOM_MUL; + soff = ((int64_t)ntm + (int64_t)ins*(int64_t)fr->ntom_step)/(int64_t)NTOM_MUL; #endif return soff; } /* Determine frame offset from unadjusted output sample offset. */ -off_t ntom_frameoff(mpg123_handle *fr, off_t soff) +int64_t INT123_ntom_frameoff(mpg123_handle *fr, int64_t soff) { - off_t ioff = 0; /* frames or samples */ - off_t ntm = ntom_val(fr,0); + int64_t ioff = 0; /* frames or samples */ + int64_t ntm = INT123_ntom_val(fr,0); #ifdef SAFE_NTOM if(soff <= 0) return 0; for(ioff=0; 1; ++ioff) @@ -142,7 +142,7 @@ off_t ntom_frameoff(mpg123_handle *fr, off_t soff) } return ioff; #else - ioff = (soff*(off_t)NTOM_MUL-ntm)/(off_t)fr->ntom_step; - return ioff/(off_t)fr->spf; + ioff = (soff*(int64_t)NTOM_MUL-ntm)/(int64_t)fr->ntom_step; + return ioff/(int64_t)fr->spf; #endif } diff --git a/src/libmpg123/optimize.c b/src/libmpg123/optimize.c index 7ada934..2478bef 100644 --- a/src/libmpg123/optimize.c +++ b/src/libmpg123/optimize.c @@ -63,13 +63,13 @@ static int synth_stereo_wrap(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr static const struct synth_s synth_base = { { /* plain */ - OUT_SYNTHS(synth_1to1, synth_1to1_8bit, synth_1to1_real, synth_1to1_s32) + OUT_SYNTHS(INT123_synth_1to1, INT123_synth_1to1_8bit, INT123_synth_1to1_real, INT123_synth_1to1_s32) # ifndef NO_DOWNSAMPLE - ,OUT_SYNTHS(synth_2to1, synth_2to1_8bit, synth_2to1_real, synth_2to1_s32) - ,OUT_SYNTHS(synth_4to1, synth_4to1_8bit, synth_4to1_real, synth_4to1_s32) + ,OUT_SYNTHS(INT123_synth_2to1, INT123_synth_2to1_8bit, INT123_synth_2to1_real, INT123_synth_2to1_s32) + ,OUT_SYNTHS(INT123_synth_4to1, INT123_synth_4to1_8bit, INT123_synth_4to1_real, INT123_synth_4to1_s32) # endif # ifndef NO_NTOM - ,OUT_SYNTHS(synth_ntom, synth_ntom_8bit, synth_ntom_real, synth_ntom_s32) + ,OUT_SYNTHS(INT123_synth_ntom, INT123_synth_ntom_8bit, INT123_synth_ntom_real, INT123_synth_ntom_s32) # endif }, { /* stereo, by default only wrappers over plain synth */ @@ -83,23 +83,23 @@ static const struct synth_s synth_base = # endif }, { /* mono2stereo */ - OUT_SYNTHS(synth_1to1_m2s, synth_1to1_8bit_m2s, synth_1to1_real_m2s, synth_1to1_s32_m2s) + OUT_SYNTHS(INT123_synth_1to1_m2s, INT123_synth_1to1_8bit_m2s, INT123_synth_1to1_real_m2s, INT123_synth_1to1_s32_m2s) # ifndef NO_DOWNSAMPLE - ,OUT_SYNTHS(synth_2to1_m2s, synth_2to1_8bit_m2s, synth_2to1_real_m2s, synth_2to1_s32_m2s) - ,OUT_SYNTHS(synth_4to1_m2s, synth_4to1_8bit_m2s, synth_4to1_real_m2s, synth_4to1_s32_m2s) + ,OUT_SYNTHS(INT123_synth_2to1_m2s, INT123_synth_2to1_8bit_m2s, INT123_synth_2to1_real_m2s, INT123_synth_2to1_s32_m2s) + ,OUT_SYNTHS(INT123_synth_4to1_m2s, INT123_synth_4to1_8bit_m2s, INT123_synth_4to1_real_m2s, INT123_synth_4to1_s32_m2s) # endif # ifndef NO_NTOM - ,OUT_SYNTHS(synth_ntom_m2s, synth_ntom_8bit_m2s, synth_ntom_real_m2s, synth_ntom_s32_m2s) + ,OUT_SYNTHS(INT123_synth_ntom_m2s, INT123_synth_ntom_8bit_m2s, INT123_synth_ntom_real_m2s, INT123_synth_ntom_s32_m2s) # endif }, { /* mono*/ - OUT_SYNTHS(synth_1to1_mono, synth_1to1_8bit_mono, synth_1to1_real_mono, synth_1to1_s32_mono) + OUT_SYNTHS(INT123_synth_1to1_mono, INT123_synth_1to1_8bit_mono, INT123_synth_1to1_real_mono, INT123_synth_1to1_s32_mono) # ifndef NO_DOWNSAMPLE - ,OUT_SYNTHS(synth_2to1_mono, synth_2to1_8bit_mono, synth_2to1_real_mono, synth_2to1_s32_mono) - ,OUT_SYNTHS(synth_4to1_mono, synth_4to1_8bit_mono, synth_4to1_real_mono, synth_4to1_s32_mono) + ,OUT_SYNTHS(INT123_synth_2to1_mono, INT123_synth_2to1_8bit_mono, INT123_synth_2to1_real_mono, INT123_synth_2to1_s32_mono) + ,OUT_SYNTHS(INT123_synth_4to1_mono, INT123_synth_4to1_8bit_mono, INT123_synth_4to1_real_mono, INT123_synth_4to1_s32_mono) # endif # ifndef NO_NTOM - ,OUT_SYNTHS(synth_ntom_mono, synth_ntom_8bit_mono, synth_ntom_real_mono, synth_ntom_s32_mono) + ,OUT_SYNTHS(INT123_synth_ntom_mono, INT123_synth_ntom_8bit_mono, INT123_synth_ntom_real_mono, INT123_synth_ntom_s32_mono) #endif } }; @@ -108,21 +108,21 @@ static const struct synth_s synth_base = /* More plain synths for i386 */ const func_synth plain_i386[r_limit][f_limit] = { /* plain */ - OUT_SYNTHS(synth_1to1_i386, synth_1to1_8bit_i386, synth_1to1_real_i386, synth_1to1_s32_i386) + OUT_SYNTHS(INT123_synth_1to1_i386, INT123_synth_1to1_8bit_i386, INT123_synth_1to1_real_i386, INT123_synth_1to1_s32_i386) # ifndef NO_DOWNSAMPLE - ,OUT_SYNTHS(synth_2to1_i386, synth_2to1_8bit_i386, synth_2to1_real_i386, synth_2to1_s32_i386) - ,OUT_SYNTHS(synth_4to1_i386, synth_4to1_8bit_i386, synth_4to1_real_i386, synth_4to1_s32_i386) + ,OUT_SYNTHS(INT123_synth_2to1_i386, INT123_synth_2to1_8bit_i386, INT123_synth_2to1_real_i386, INT123_synth_2to1_s32_i386) + ,OUT_SYNTHS(INT123_synth_4to1_i386, INT123_synth_4to1_8bit_i386, INT123_synth_4to1_real_i386, INT123_synth_4to1_s32_i386) # endif # ifndef NO_NTOM - ,OUT_SYNTHS(synth_ntom, synth_ntom_8bit, synth_ntom_real, synth_ntom_s32) + ,OUT_SYNTHS(INT123_synth_ntom, INT123_synth_ntom_8bit, INT123_synth_ntom_real, INT123_synth_ntom_s32) # endif }; #endif -enum optdec defdec(void){ return defopt; } +enum optdec INT123_defdec(void){ return defopt; } -enum optcla decclass(const enum optdec type) +enum optcla INT123_decclass(const enum optdec type) { return ( @@ -161,7 +161,7 @@ static enum optdec sse_or_vintage(mpg123_handle *fr) type = sse_vintage; # ifdef OPT_SSE # ifdef OPT_MULTI - if(fr->cpu_opts.the_dct36 == dct36_sse) + if(fr->cpu_opts.the_dct36 == INT123_dct36_sse) # endif type = sse; # endif @@ -179,7 +179,7 @@ static int find_dectype(mpg123_handle *fr) func_synth basic_synth = fr->synth; #ifndef NO_8BIT #ifndef NO_16BIT - if(basic_synth == synth_1to1_8bit_wrap) + if(basic_synth == INT123_synth_1to1_8bit_wrap) basic_synth = fr->synths.plain[r_1to1][f_16]; /* That is what's really below the surface. */ #endif #endif @@ -187,71 +187,71 @@ static int find_dectype(mpg123_handle *fr) if(FALSE) ; /* Just to initialize the else if ladder. */ #ifndef NO_16BIT #if defined(OPT_3DNOWEXT) || defined(OPT_3DNOWEXT_VINTAGE) - else if(basic_synth == synth_1to1_3dnowext) + else if(basic_synth == INT123_synth_1to1_3dnowext) { type = dreidnowext; # ifdef OPT_3DNOWEXT_VINTAGE # ifdef OPT_MULTI - if(fr->cpu_opts.the_dct36 == dct36_3dnowext) + if(fr->cpu_opts.the_dct36 == INT123_dct36_3dnowext) # endif type = dreidnowext_vintage; # endif } #endif #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) - else if(basic_synth == synth_1to1_sse) + else if(basic_synth == INT123_synth_1to1_sse) { type = sse_or_vintage(fr); } #endif #if defined(OPT_3DNOW) || defined(OPT_3DNOW_VINTAGE) - else if(basic_synth == synth_1to1_3dnow) + else if(basic_synth == INT123_synth_1to1_3dnow) { type = dreidnow; # ifdef OPT_3DNOW_VINTAGE # ifdef OPT_MULTI - if(fr->cpu_opts.the_dct36 == dct36_3dnow) + if(fr->cpu_opts.the_dct36 == INT123_dct36_3dnow) # endif type = dreidnow_vintage; # endif } #endif #ifdef OPT_MMX - else if(basic_synth == synth_1to1_mmx) type = mmx; + else if(basic_synth == INT123_synth_1to1_mmx) type = mmx; #endif #ifdef OPT_I586_DITHER - else if(basic_synth == synth_1to1_i586_dither) type = ifuenf_dither; + else if(basic_synth == INT123_synth_1to1_i586_dither) type = ifuenf_dither; #endif #ifdef OPT_I586 - else if(basic_synth == synth_1to1_i586) type = ifuenf; + else if(basic_synth == INT123_synth_1to1_i586) type = ifuenf; #endif #ifdef OPT_ALTIVEC - else if(basic_synth == synth_1to1_altivec) type = altivec; + else if(basic_synth == INT123_synth_1to1_altivec) type = altivec; #endif #ifdef OPT_X86_64 - else if(basic_synth == synth_1to1_x86_64) type = x86_64; + else if(basic_synth == INT123_synth_1to1_x86_64) type = x86_64; #endif #ifdef OPT_AVX - else if(basic_synth == synth_1to1_avx) type = avx; + else if(basic_synth == INT123_synth_1to1_avx) type = avx; #endif #ifdef OPT_ARM - else if(basic_synth == synth_1to1_arm) type = arm; + else if(basic_synth == INT123_synth_1to1_arm) type = arm; #endif #ifdef OPT_NEON - else if(basic_synth == synth_1to1_neon) type = neon; + else if(basic_synth == INT123_synth_1to1_neon) type = neon; #endif #ifdef OPT_NEON64 - else if(basic_synth == synth_1to1_neon64) type = neon64; + else if(basic_synth == INT123_synth_1to1_neon64) type = neon64; #endif #ifdef OPT_GENERIC_DITHER - else if(basic_synth == synth_1to1_dither) type = generic_dither; + else if(basic_synth == INT123_synth_1to1_dither) type = generic_dither; #endif #ifdef OPT_DITHER /* either i586 or generic! */ #ifndef NO_DOWNSAMPLE else if ( - basic_synth == synth_2to1_dither - || basic_synth == synth_4to1_dither + basic_synth == INT123_synth_2to1_dither + || basic_synth == INT123_synth_4to1_dither ) type = generic_dither; #endif #endif @@ -261,50 +261,50 @@ static int find_dectype(mpg123_handle *fr) #ifndef NO_REAL #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) - else if(basic_synth == synth_1to1_real_sse) + else if(basic_synth == INT123_synth_1to1_real_sse) { type = sse_or_vintage(fr); } #endif #ifdef OPT_X86_64 - else if(basic_synth == synth_1to1_real_x86_64) type = x86_64; + else if(basic_synth == INT123_synth_1to1_real_x86_64) type = x86_64; #endif #ifdef OPT_AVX - else if(basic_synth == synth_1to1_real_avx) type = avx; + else if(basic_synth == INT123_synth_1to1_real_avx) type = avx; #endif #ifdef OPT_ALTIVEC - else if(basic_synth == synth_1to1_real_altivec) type = altivec; + else if(basic_synth == INT123_synth_1to1_real_altivec) type = altivec; #endif #ifdef OPT_NEON - else if(basic_synth == synth_1to1_real_neon) type = neon; + else if(basic_synth == INT123_synth_1to1_real_neon) type = neon; #endif #ifdef OPT_NEON64 - else if(basic_synth == synth_1to1_real_neon64) type = neon64; + else if(basic_synth == INT123_synth_1to1_real_neon64) type = neon64; #endif #endif /* real */ #ifndef NO_32BIT #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) - else if(basic_synth == synth_1to1_s32_sse) + else if(basic_synth == INT123_synth_1to1_s32_sse) { type = sse_or_vintage(fr); } #endif #ifdef OPT_X86_64 - else if(basic_synth == synth_1to1_s32_x86_64) type = x86_64; + else if(basic_synth == INT123_synth_1to1_s32_x86_64) type = x86_64; #endif #ifdef OPT_AVX - else if(basic_synth == synth_1to1_s32_avx) type = avx; + else if(basic_synth == INT123_synth_1to1_s32_avx) type = avx; #endif #ifdef OPT_ALTIVEC - else if(basic_synth == synth_1to1_s32_altivec) type = altivec; + else if(basic_synth == INT123_synth_1to1_s32_altivec) type = altivec; #endif #ifdef OPT_NEON - else if(basic_synth == synth_1to1_s32_neon) type = neon; + else if(basic_synth == INT123_synth_1to1_s32_neon) type = neon; #endif #ifdef OPT_NEON64 - else if(basic_synth == synth_1to1_s32_neon64) type = neon64; + else if(basic_synth == INT123_synth_1to1_s32_neon64) type = neon64; #endif #endif /* 32bit */ @@ -329,7 +329,7 @@ static int find_dectype(mpg123_handle *fr) if(type != nodec) { fr->cpu_opts.type = type; - fr->cpu_opts.class = decclass(type); + fr->cpu_opts.class = INT123_decclass(type); debug3("determined active decoder type %i (%s) of class %i", type, decname[type], fr->cpu_opts.class); return MPG123_OK; @@ -344,7 +344,7 @@ static int find_dectype(mpg123_handle *fr) } /* set synth functions for current frame, optimizations handled by opt_* macros */ -int set_synth_functions(mpg123_handle *fr) +int INT123_set_synth_functions(mpg123_handle *fr) { enum synth_resample resample = r_none; enum synth_format basic_format = f_none; /* Default is always 16bit, or whatever. */ @@ -372,7 +372,7 @@ int set_synth_functions(mpg123_handle *fr) /* Make sure the chosen format is compiled into this lib. */ if(basic_format == f_none) { - if(NOQUIET) error("set_synth_functions: This output format is disabled in this build!"); + if(NOQUIET) error("INT123_set_synth_functions: This output format is disabled in this build!"); return -1; } @@ -392,7 +392,7 @@ int set_synth_functions(mpg123_handle *fr) if(resample == r_none) { - if(NOQUIET) error("set_synth_functions: This resampling mode is not supported in this build!"); + if(NOQUIET) error("INT123_set_synth_functions: This resampling mode is not supported in this build!"); return -1; } @@ -411,7 +411,7 @@ int set_synth_functions(mpg123_handle *fr) return MPG123_ERR; } - if(frame_buffers(fr) != 0) + if(INT123_frame_buffers(fr) != 0) { fr->err = MPG123_NO_BUFFERS; if(NOQUIET) error("Failed to set up decoder buffers!"); @@ -422,7 +422,7 @@ int set_synth_functions(mpg123_handle *fr) #ifndef NO_8BIT if(basic_format == f_8) { - if(make_conv16to8_table(fr) != 0) + if(INT123_make_conv16to8_table(fr) != 0) { if(NOQUIET) error("Failed to set up conv16to8 table!"); /* it's a bit more work to get proper error propagation up */ @@ -452,32 +452,32 @@ int set_synth_functions(mpg123_handle *fr) ) { #ifndef NO_LAYER3 - init_layer3_stuff(fr, init_layer3_gainpow2_mmx); + INT123_init_layer3_stuff(fr, INT123_init_layer3_gainpow2_mmx); #endif #ifndef NO_LAYER12 - init_layer12_stuff(fr, init_layer12_table_mmx); + INT123_init_layer12_stuff(fr, INT123_init_layer12_table_mmx); #endif - fr->make_decode_tables = make_decode_tables_mmx; + fr->INT123_make_decode_tables = INT123_make_decode_tables_mmx; } else #endif { #ifndef NO_LAYER3 - init_layer3_stuff(fr, init_layer3_gainpow2); + INT123_init_layer3_stuff(fr, INT123_init_layer3_gainpow2); #endif #ifndef NO_LAYER12 - init_layer12_stuff(fr, init_layer12_table); + INT123_init_layer12_stuff(fr, INT123_init_layer12_table); #endif - fr->make_decode_tables = make_decode_tables; + fr->INT123_make_decode_tables = INT123_make_decode_tables; } /* We allocated the table buffers just now, so (re)create the tables. */ - fr->make_decode_tables(fr); + fr->INT123_make_decode_tables(fr); return 0; } -int frame_cpu_opt(mpg123_handle *fr, const char* cpu) +int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu) { const char* chosen = ""; /* the chosen decoder opt as string */ enum optdec want_dec = nodec; @@ -487,7 +487,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) int dithered = FALSE; /* If some dithered decoder is chosen. */ #endif - want_dec = dectype(cpu); + want_dec = INT123_dectype(cpu); auto_choose = want_dec == autodec; /* Fill whole array of synth functions with generic code first. */ fr->synths = synth_base; @@ -506,11 +506,11 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) #ifdef OPT_MULTI #ifndef NO_LAYER3 #if (defined OPT_3DNOW_VINTAGE || defined OPT_3DNOWEXT_VINTAGE || defined OPT_SSE || defined OPT_X86_64 || defined OPT_AVX || defined OPT_NEON || defined OPT_NEON64) - fr->cpu_opts.the_dct36 = dct36; + fr->cpu_opts.the_dct36 = INT123_dct36; #endif #endif #endif - /* covers any i386+ cpu; they actually differ only in the synth_1to1 function, mostly... */ + /* covers any i386+ cpu; they actually differ only in the INT123_synth_1to1 function, mostly... */ #ifdef OPT_X86 if(cpu_i586(fr->cpu_flags)) { @@ -525,22 +525,22 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = sse; #ifdef OPT_MULTI # ifndef NO_LAYER3 - /* if(cpu_fast_sse(fr->cpu_flags)) */ fr->cpu_opts.the_dct36 = dct36_sse; + /* if(cpu_fast_sse(fr->cpu_flags)) */ fr->cpu_opts.the_dct36 = INT123_dct36_sse; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_sse; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_sse; # ifdef ACCURATE_ROUNDING - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_sse; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_sse; # endif # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_sse; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_real_stereo_sse; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_sse; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_sse; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_sse; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_sse; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_sse; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_sse; # endif done = 1; } @@ -552,18 +552,18 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_sse_vintage; fr->cpu_opts.type = sse_vintage; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_sse; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_sse; # ifdef ACCURATE_ROUNDING - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_sse; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_sse; # endif # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_sse; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_real_stereo_sse; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_sse; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_sse; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_sse; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_sse; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_sse; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_sse; # endif done = 1; } @@ -577,7 +577,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_dreidnowext; fr->cpu_opts.type = dreidnowext; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_3dnowext; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnowext; # endif done = 1; } @@ -592,11 +592,11 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = dreidnowext_vintage; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_3dnowext; + fr->cpu_opts.the_dct36 = INT123_dct36_3dnowext; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_3dnowext; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnowext; # endif done = 1; } @@ -608,7 +608,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_dreidnow; fr->cpu_opts.type = dreidnow; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_3dnow; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnow; # endif done = 1; } @@ -621,11 +621,11 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = dreidnow_vintage; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_3dnow; + fr->cpu_opts.the_dct36 = INT123_dct36_3dnow; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_3dnow; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnow; # endif done = 1; } @@ -637,7 +637,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_mmx; fr->cpu_opts.type = mmx; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_mmx; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_mmx; # endif done = 1; } @@ -648,7 +648,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = "i586/pentium"; fr->cpu_opts.type = ifuenf; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_i586; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_i586; # endif done = 1; } @@ -660,10 +660,10 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = ifuenf_dither; dithered = TRUE; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_i586_dither; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_i586_dither; # ifndef NO_DOWNSAMPLE - fr->synths.plain[r_2to1][f_16] = synth_2to1_dither; - fr->synths.plain[r_4to1][f_16] = synth_4to1_dither; + fr->synths.plain[r_2to1][f_16] = INT123_synth_2to1_dither; + fr->synths.plain[r_4to1][f_16] = INT123_synth_4to1_dither; # endif # endif done = 1; @@ -693,7 +693,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) { /* We have chosen some x86 decoder... fillup some i386 stuff. - There is an open question about using dithered synth_1to1 for 8bit wrappers. + There is an open question about using dithered INT123_synth_1to1 for 8bit wrappers. For quality it won't make sense, but wrapped i586_dither wrapped may still be faster... */ enum synth_resample ri; @@ -702,9 +702,9 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) # ifndef NO_16BIT /* possibility to use a 16->8 wrapper... */ if(fr->synths.plain[r_1to1][f_16] != synth_base.plain[r_1to1][f_16]) { - fr->synths.plain[r_1to1][f_8] = synth_1to1_8bit_wrap; - fr->synths.mono[r_1to1][f_8] = synth_1to1_8bit_wrap_mono; - fr->synths.mono2stereo[r_1to1][f_8] = synth_1to1_8bit_wrap_m2s; + fr->synths.plain[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap; + fr->synths.mono[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_mono; + fr->synths.mono2stereo[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_m2s; } # endif # endif @@ -725,20 +725,20 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = avx; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_avx; + fr->cpu_opts.the_dct36 = INT123_dct36_avx; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_avx; - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_avx; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_avx; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_avx; # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_avx; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_fltst_avx; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_avx; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_avx; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_avx; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_avx; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_avx; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_avx; # endif done = 1; } @@ -751,20 +751,20 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = x86_64; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_x86_64; + fr->cpu_opts.the_dct36 = INT123_dct36_x86_64; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_x86_64; - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_x86_64; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_x86_64; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_x86_64; # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_x86_64; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_real_stereo_x86_64; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_x86_64; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_x86_64; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_x86_64; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_x86_64; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_x86_64; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_x86_64; # endif done = 1; } @@ -776,16 +776,16 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_altivec; fr->cpu_opts.type = altivec; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_altivec; - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_altivec; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_altivec; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_altivec; # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_altivec; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_fltst_altivec; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_altivec; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_altivec; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_altivec; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_altivec; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_altivec; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_altivec; # endif done = 1; } @@ -798,20 +798,20 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = neon; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_neon; + fr->cpu_opts.the_dct36 = INT123_dct36_neon; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_neon; - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_neon; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon; # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_neon; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_real_stereo_neon; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_neon; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_real_stereo_neon; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_neon; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32_stereo_neon; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_neon; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32_stereo_neon; # endif done = 1; } @@ -823,7 +823,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) chosen = dn_arm; fr->cpu_opts.type = arm; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_arm; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_arm; # endif done = 1; } @@ -836,20 +836,20 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = neon64; #ifdef OPT_MULTI # ifndef NO_LAYER3 - fr->cpu_opts.the_dct36 = dct36_neon64; + fr->cpu_opts.the_dct36 = INT123_dct36_neon64; # endif #endif # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_neon64; - fr->synths.stereo[r_1to1][f_16] = synth_1to1_stereo_neon64; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon64; + fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon64; # endif # ifndef NO_REAL - fr->synths.plain[r_1to1][f_real] = synth_1to1_real_neon64; - fr->synths.stereo[r_1to1][f_real] = synth_1to1_fltst_neon64; + fr->synths.plain[r_1to1][f_real] = INT123_synth_1to1_real_neon64; + fr->synths.stereo[r_1to1][f_real] = INT123_synth_1to1_fltst_neon64; # endif # ifndef NO_32BIT - fr->synths.plain[r_1to1][f_32] = synth_1to1_s32_neon64; - fr->synths.stereo[r_1to1][f_32] = synth_1to1_s32st_neon64; + fr->synths.plain[r_1to1][f_32] = INT123_synth_1to1_s32_neon64; + fr->synths.stereo[r_1to1][f_32] = INT123_synth_1to1_s32st_neon64; # endif done = 1; } @@ -871,17 +871,17 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) fr->cpu_opts.type = generic_dither; dithered = TRUE; # ifndef NO_16BIT - fr->synths.plain[r_1to1][f_16] = synth_1to1_dither; + fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_dither; # ifndef NO_DOWNSAMPLE - fr->synths.plain[r_2to1][f_16] = synth_2to1_dither; - fr->synths.plain[r_4to1][f_16] = synth_4to1_dither; + fr->synths.plain[r_2to1][f_16] = INT123_synth_2to1_dither; + fr->synths.plain[r_4to1][f_16] = INT123_synth_4to1_dither; # endif # endif done = 1; } #endif - fr->cpu_opts.class = decclass(fr->cpu_opts.type); + fr->cpu_opts.class = INT123_decclass(fr->cpu_opts.type); # ifndef NO_8BIT # ifndef NO_16BIT /* possibility to use a 16->8 wrapper... */ @@ -890,9 +890,9 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) && fr->cpu_opts.type != generic_dither && fr->synths.plain[r_1to1][f_16] != synth_base.plain[r_1to1][f_16] ) { - fr->synths.plain[r_1to1][f_8] = synth_1to1_8bit_wrap; - fr->synths.mono[r_1to1][f_8] = synth_1to1_8bit_wrap_mono; - fr->synths.mono2stereo[r_1to1][f_8] = synth_1to1_8bit_wrap_m2s; + fr->synths.plain[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap; + fr->synths.mono[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_mono; + fr->synths.mono2stereo[r_1to1][f_8] = INT123_synth_1to1_8bit_wrap_m2s; } # endif # endif @@ -901,7 +901,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) if(done && dithered) { /* run-time dither noise table generation */ - if(!frame_dither_init(fr)) + if(!INT123_frame_dither_init(fr)) { if(NOQUIET) error("Dither noise setup failed!"); return 0; @@ -921,7 +921,7 @@ int frame_cpu_opt(mpg123_handle *fr, const char* cpu) } } -enum optdec dectype(const char* decoder) +enum optdec INT123_dectype(const char* decoder) { enum optdec dt; if( (decoder == NULL) @@ -1072,7 +1072,7 @@ void check_decoders(void) return; #else const char **d = mpg123_supported_decoder_list; -#if (defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64) +#ifdef OPT_CPU_FLAGS struct cpuflags cpu_flags; wrap_getcpuflags(&cpu_flags); #endif diff --git a/src/libmpg123/optimize.h b/src/libmpg123/optimize.h index 4ac33a2..25df421 100644 --- a/src/libmpg123/optimize.h +++ b/src/libmpg123/optimize.h @@ -32,7 +32,7 @@ Also, one should minimize code size by really ensuring that only functions that are really needed are included. Currently, all generic functions will be always there (to be safe for fallbacks for advanced decoders). - Strictly, at least the synth_1to1 should not be necessary for single-decoder mode. + Strictly, at least the INT123_synth_1to1 should not be necessary for single-decoder mode. */ @@ -166,15 +166,15 @@ static const char* decname[] = enum optcla { nocla=0, normal, mmxsse }; /* - Set up the table of synth functions for current decoder choice. */ -int frame_cpu_opt(mpg123_handle *fr, const char* cpu); +int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu); /* - Choose, from the synth table, the synth functions to use for current output format/rate. */ -int set_synth_functions(mpg123_handle *fr); +int INT123_set_synth_functions(mpg123_handle *fr); /* - Parse decoder name and return numerical code. */ -enum optdec dectype(const char* decoder); +enum optdec INT123_dectype(const char* decoder); /* - Return the default decoder type. */ -enum optdec defdec(void); +enum optdec INT123_defdec(void); /* - Return the class of a decoder type (mmxsse or normal). */ -enum optcla decclass(const enum optdec); +enum optcla INT123_decclass(const enum optdec); /* Now comes a whole lot of definitions, for multi decoder mode and single decoder mode. Because of the latter, it may look redundant at times. */ @@ -265,7 +265,7 @@ enum optcla decclass(const enum optdec); #define OPT_X86 #ifndef OPT_MULTI # define defopt sse -# define opt_dct36(fr) dct36_sse +# define opt_dct36(fr) INT123_dct36_sse #endif #endif @@ -287,22 +287,22 @@ enum optcla decclass(const enum optdec); #endif #endif -/* same as above but also using 3DNowExt dct36 */ +/* same as above but also using 3DNowExt INT123_dct36 */ #ifdef OPT_3DNOWEXT_VINTAGE #define OPT_MMXORSSE #define OPT_MPLAYER #define OPT_X86 #ifndef OPT_MULTI # define defopt dreidnowext_vintage -# define opt_dct36(fr) dct36_3dnowext +# define opt_dct36(fr) INT123_dct36_3dnowext #endif #endif #ifdef OPT_MPLAYER -extern const int costab_mmxsse[]; +extern const int INT123_costab_mmxsse[]; #endif -/* 3dnow used to use synth_1to1_i586 for mono / 8bit conversion - was that intentional? */ +/* 3dnow used to use INT123_synth_1to1_i586 for mono / 8bit conversion - was that intentional? */ /* I'm trying to skip the pentium code here ... until I see that that is indeed a bad idea */ #ifdef OPT_3DNOW #define OPT_X86 @@ -311,12 +311,12 @@ extern const int costab_mmxsse[]; #endif #endif -/* same as above but also using 3DNow dct36 */ +/* same as above but also using 3DNow INT123_dct36 */ #ifdef OPT_3DNOW_VINTAGE #define OPT_X86 #ifndef OPT_MULTI # define defopt dreidnow_vintage -# define opt_dct36(fr) dct36_3dnow +# define opt_dct36(fr) INT123_dct36_3dnow #endif #endif @@ -330,7 +330,7 @@ extern const int costab_mmxsse[]; #define OPT_MMXORSSE #ifndef OPT_MULTI # define defopt x86_64 -# define opt_dct36(fr) dct36_x86_64 +# define opt_dct36(fr) INT123_dct36_x86_64 #endif #endif @@ -338,7 +338,7 @@ extern const int costab_mmxsse[]; #define OPT_MMXORSSE #ifndef OPT_MULTI # define defopt avx -# define opt_dct36(fr) dct36_avx +# define opt_dct36(fr) INT123_dct36_avx #endif #endif @@ -352,7 +352,7 @@ extern const int costab_mmxsse[]; #define OPT_MMXORSSE #ifndef OPT_MULTI # define defopt neon -# define opt_dct36(fr) dct36_neon +# define opt_dct36(fr) INT123_dct36_neon #endif #endif @@ -360,7 +360,7 @@ extern const int costab_mmxsse[]; #define OPT_MMXORSSE #ifndef OPT_MULTI # define defopt neon64 -# define opt_dct36(fr) dct36_neon64 +# define opt_dct36(fr) INT123_dct36_neon64 #endif #endif @@ -381,7 +381,7 @@ extern const int costab_mmxsse[]; #endif /* OPT_MULTI else */ # ifndef opt_dct36 -# define opt_dct36(fr) dct36 +# define opt_dct36(fr) INT123_dct36 # endif #endif /* MPG123_H_OPTIMIZE */ diff --git a/src/libmpg123/parse.c b/src/libmpg123/parse.c index c2efd3d..98a49eb 100644 --- a/src/libmpg123/parse.c +++ b/src/libmpg123/parse.c @@ -1,7 +1,7 @@ /* parse: spawned from common; clustering around stream/frame parsing - copyright ?-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp & Thomas Orgis */ @@ -71,12 +71,12 @@ static int wetwork(mpg123_handle *fr, unsigned long *newheadp); /* These two are to be replaced by one function that gives all the frame parameters (for outsiders).*/ /* Those functions are unsafe regarding bad arguments (inside the mpg123_handle), but just returning anything would also be unsafe, the caller code has to be trusted. */ -int frame_bitrate(mpg123_handle *fr) +int INT123_frame_bitrate(mpg123_handle *fr) { return tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]; } -long frame_freq(mpg123_handle *fr) +long INT123_frame_freq(mpg123_handle *fr) { return freqs[fr->sampling_frequency]; } @@ -203,12 +203,12 @@ static int check_lame_tag(mpg123_handle *fr) else { /* Check for endless stream, but: TRACK_MAX_FRAMES sensible at all? */ - fr->track_frames = long_tmp > TRACK_MAX_FRAMES ? 0 : (off_t) long_tmp; + fr->track_frames = long_tmp > TRACK_MAX_FRAMES ? 0 : (int64_t) long_tmp; #ifdef GAPLESS /* All or nothing: Only if encoder delay/padding is known, we'll cut samples for gapless. */ if(fr->p.flags & MPG123_GAPLESS) - frame_gapless_init(fr, fr->track_frames, 0, 0); + INT123_frame_gapless_init(fr, fr->track_frames, 0, 0); #endif if(VERBOSE3) fprintf(stderr, "Note: Xing: %lu frames\n", long_tmp); } @@ -228,14 +228,14 @@ static int check_lame_tag(mpg123_handle *fr) ignoring leading ID3v2 data. Trailing tags (ID3v1) seem to be included, though. */ if(fr->rdat.filelen < 1) - fr->rdat.filelen = (off_t) long_tmp + fr->audio_start; /* Overflow? */ + fr->rdat.filelen = (int64_t) long_tmp + fr->audio_start; /* Overflow? */ else { - if((off_t)long_tmp != fr->rdat.filelen - fr->audio_start && NOQUIET) + if((int64_t)long_tmp != fr->rdat.filelen - fr->audio_start && NOQUIET) { /* 1/filelen instead of 1/(filelen-start), my decision */ double diff = 100.0/fr->rdat.filelen * ( fr->rdat.filelen - fr->audio_start - - (off_t)long_tmp ); + - (int64_t)long_tmp ); if(diff < 0.) diff = -diff; if(VERBOSE3) fprintf(stderr @@ -253,7 +253,7 @@ static int check_lame_tag(mpg123_handle *fr) if(xing_flags & 0x4) /* TOC */ { check_bytes_left(100); - frame_fill_toc(fr, fr->bsbuf+lame_offset); + INT123_frame_fill_toc(fr, fr->bsbuf+lame_offset); lame_offset += 100; } if(xing_flags & 0x8) /* VBR quality */ @@ -279,8 +279,8 @@ static int check_lame_tag(mpg123_handle *fr) float peak = 0; float gain_offset = 0; /* going to be +6 for old lame that used 83dB */ char nb[10]; - off_t pad_in; - off_t pad_out; + int64_t pad_in; + int64_t pad_out; memcpy(nb, fr->bsbuf+lame_offset, 9); nb[9] = 0; if(VERBOSE3) fprintf(stderr, "Note: Info: Encoder: %s\n", nb); @@ -413,7 +413,7 @@ static int check_lame_tag(mpg123_handle *fr) fr->enc_padding = (int)pad_out; #ifdef GAPLESS if(fr->p.flags & MPG123_GAPLESS) - frame_gapless_init(fr, fr->track_frames, pad_in, pad_out); + INT123_frame_gapless_init(fr, fr->track_frames, pad_in, pad_out); #endif /* final: 24 B LAME data */ } @@ -461,7 +461,7 @@ static int halfspeed_do(mpg123_handle *fr) debug("repeat!"); fr->to_decode = fr->to_ignore = TRUE; --fr->halfphase; - set_pointer(fr, 0, 0); + INT123_set_pointer(fr, 0, 0); if(fr->lay == 3) memcpy (fr->bsbuf, fr->ssave, fr->ssize); if(fr->error_protection) fr->crc = getbits(fr, 16); /* skip crc */ return 1; @@ -491,12 +491,12 @@ else if(ret == PARSE_END){ ret=0; goto read_frame_bad; } \ That's a big one: read the next frame. 1 is success, <= 0 is some error Special error READER_MORE means: Please feed more data and try again. */ -int read_frame(mpg123_handle *fr) +int INT123_read_frame(mpg123_handle *fr) { /* TODO: rework this thing */ int freeformat_count = 0; unsigned long newhead; - off_t framepos; + int64_t framepos; int ret; /* stuff that needs resetting if complete frame reading fails */ int oldsize = fr->framesize; @@ -521,9 +521,9 @@ int read_frame(mpg123_handle *fr) #endif ) ) { - mdebug( "stopping parsing at %"OFF_P + mdebug( "stopping parsing at %"PRIi64 " frames as indicated fixed track length" - , (off_p)fr->num+1 ); + , fr->num+1 ); return 0; } @@ -532,7 +532,7 @@ read_again: This is essential to prevent endless looping, always going back to the beginning when feeder buffer is exhausted. */ if(fr->rd->forget != NULL) fr->rd->forget(fr); - debug2("trying to get frame %"OFF_P" at %"OFF_P, (off_p)fr->num+1, (off_p)fr->rd->tell(fr)); + debug2("trying to get frame %"PRIi64" at %"PRIi64, fr->num+1, fr->rd->tell(fr)); if((ret = fr->rd->head_read(fr,&newhead)) <= 0){ debug1("need more? (%i)", ret); goto read_frame_bad;} init_resync: @@ -573,8 +573,8 @@ init_resync: { if(fr->firsthead && !head_compatible(fr->firsthead, newhead)) { - mdebug( "stopping before reading frame %"OFF_P - " as its header indicates Frankenstein coming for you", (off_p)fr->num ); + mdebug( "stopping before reading frame %"PRIi64 + " as its header indicates Frankenstein coming for you", fr->num ); return 0; } } @@ -585,7 +585,7 @@ init_resync: { unsigned char *newbuf = fr->bsspace[fr->bsnum]+512; /* read main data into memory */ - debug2("read frame body of %i at %"OFF_P, fr->framesize, framepos+4); + debug2("read frame body of %i at %"PRIi64, fr->framesize, framepos+4); if((ret=fr->rd->read_frame_body(fr,newbuf,fr->framesize))<0) { /* if failed: flip back */ @@ -616,23 +616,22 @@ init_resync: goto read_again; } /* now adjust volume */ - do_rva(fr); + INT123_do_rva(fr); } debug2("fr->firsthead: %08lx, audio_start: %li", fr->firsthead, (long int)fr->audio_start); } - set_pointer(fr, 0, 0); + INT123_set_pointer(fr, 0, 0); /* Question: How bad does the floating point value get with repeated recomputation? Also, considering that we can play the file or parts of many times. */ if(++fr->mean_frames != 0) { - fr->mean_framesize = ((fr->mean_frames-1)*fr->mean_framesize+compute_bpf(fr)) / fr->mean_frames ; + fr->mean_framesize = ((fr->mean_frames-1)*fr->mean_framesize+INT123_compute_bpf(fr)) / fr->mean_frames ; } ++fr->num; /* 0 for first frame! */ - debug4("Frame %"OFF_P" %08lx %i, next filepos=%"OFF_P, - (off_p)fr->num, newhead, fr->framesize, (off_p)fr->rd->tell(fr)); + debug4("Frame %"PRIi64" %08lx %i, next filepos=%"PRIi64, fr->num, newhead, fr->framesize, fr->rd->tell(fr)); if(!(fr->state_flags & FRAME_FRANKENSTEIN) && ( (fr->track_frames > 0 && fr->num >= fr->track_frames) #ifdef GAPLESS @@ -641,11 +640,13 @@ init_resync: )) { fr->state_flags |= FRAME_FRANKENSTEIN; - if(NOQUIET) fprintf(stderr, "\nWarning: Encountered more data after announced end of track (frame %"OFF_P"/%"OFF_P"). Frankenstein!\n", (off_p)fr->num, + if(NOQUIET) + fprintf(stderr, "\nWarning: Encountered more data after announced" + " end of track (frame %"PRIi64"/%"PRIi64"). Frankenstein!\n", fr->num, #ifdef GAPLESS - fr->gapless_frames > 0 ? (off_p)fr->gapless_frames : + fr->gapless_frames > 0 ? fr->gapless_frames : #endif - (off_p)fr->track_frames); + fr->track_frames); } halfspeed_prepare(fr); @@ -656,7 +657,7 @@ init_resync: /* Keep track of true frame positions in our frame index. but only do so when we are sure that the frame number is accurate... */ if((fr->state_flags & FRAME_ACCURATE) && FI_NEXT(fr->index, fr->num)) - fi_add(&fr->index, framepos); + INT123_fi_add(&fr->index, framepos); #endif if(fr->silent_resync > 0) --fr->silent_resync; @@ -760,7 +761,7 @@ static int guess_freeformat_framesize(mpg123_handle *fr, unsigned long oldhead) /* * decode a header and write the information * into the frame structure - * Return values are compatible with those of read_frame, namely: + * Return values are compatible with those of INT123_read_frame, namely: * 1: success * 0: no valid header * <0: some error @@ -857,7 +858,7 @@ static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeforma #ifndef NO_LAYER1 case 1: fr->spf = 384; - fr->do_layer = do_layer1; + fr->do_layer = INT123_do_layer1; if(!fr->freeformat) { long fs = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; @@ -870,7 +871,7 @@ static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeforma #ifndef NO_LAYER2 case 2: fr->spf = 1152; - fr->do_layer = do_layer2; + fr->do_layer = INT123_do_layer2; if(!fr->freeformat) { debug2("bitrate index: %i (%i)", fr->bitrate_index, tabsel_123[fr->lsf][1][fr->bitrate_index] ); @@ -884,7 +885,7 @@ static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeforma #ifndef NO_LAYER3 case 3: fr->spf = fr->lsf ? 576 : 1152; /* MPEG 2.5 implies LSF.*/ - fr->do_layer = do_layer3; + fr->do_layer = INT123_do_layer3; if(fr->lsf) fr->ssize = (fr->stereo == 1) ? 9 : 17; else @@ -929,9 +930,9 @@ static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeforma This overwrites side info needed for stage 0. Continuing to read bits after layer 3 side info shall fail unless - set_pointer() is called to refresh things. + INT123_set_pointer() is called to refresh things. */ -void set_pointer(mpg123_handle *fr, int part2, long backstep) +void INT123_set_pointer(mpg123_handle *fr, int part2, long backstep) { fr->bitindex = 0; if(fr->lay == 3) @@ -959,7 +960,7 @@ void set_pointer(mpg123_handle *fr, int part2, long backstep) /********************************/ -double compute_bpf(mpg123_handle *fr) +double INT123_compute_bpf(mpg123_handle *fr) { return (fr->framesize > 0) ? fr->framesize + 4.0 : 1.0; } @@ -982,13 +983,13 @@ double attribute_align_arg mpg123_tpf(mpg123_handle *fr) return tpf; } -int attribute_align_arg mpg123_position(mpg123_handle *fr, off_t no, off_t buffsize, - off_t *current_frame, off_t *frames_left, +int attribute_align_arg mpg123_position64(mpg123_handle *fr, int64_t no, int64_t buffsize, + int64_t *current_frame, int64_t *frames_left, double *current_seconds, double *seconds_left) { double tpf; double dt = 0.0; - off_t cur, left; + int64_t cur, left; double curs, lefts; if(!fr || !fr->rd) return MPG123_ERR; @@ -1009,9 +1010,9 @@ int attribute_align_arg mpg123_position(mpg123_handle *fr, off_t no, off_t buffs if(fr->rdat.filelen >= 0) { double bpf; - off_t t = fr->rd->tell(fr); - bpf = fr->mean_framesize ? fr->mean_framesize : compute_bpf(fr); - left = (off_t)((double)(fr->rdat.filelen-t)/bpf); + int64_t t = fr->rd->tell(fr); + bpf = fr->mean_framesize ? fr->mean_framesize : INT123_compute_bpf(fr); + left = (int64_t)((double)(fr->rdat.filelen-t)/bpf); /* no can be different for prophetic purposes, file pointer is always associated with fr->num! */ if(fr->num != no) { @@ -1044,29 +1045,12 @@ int attribute_align_arg mpg123_position(mpg123_handle *fr, off_t no, off_t buffs return MPG123_OK; } -int get_songlen(mpg123_handle *fr,int no) -{ - double tpf; - - if(!fr) - return 0; - - if(no < 0) { - if(!fr->rd || fr->rdat.filelen < 0) - return 0; - no = (int) ((double) fr->rdat.filelen / compute_bpf(fr)); - } - - tpf = mpg123_tpf(fr); - return (int) (no*tpf); -} - /* first attempt of read ahead check to find the real first header; cannot believe what junk is out there! */ static int do_readahead(mpg123_handle *fr, unsigned long newhead) { unsigned long nexthead = 0; int hd = 0; - off_t start, oret; + int64_t start, oret; int ret; if( ! (!fr->firsthead && fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED)) ) @@ -1074,7 +1058,7 @@ static int do_readahead(mpg123_handle *fr, unsigned long newhead) start = fr->rd->tell(fr); - debug2("doing ahead check with BPF %d at %"OFF_P, fr->framesize+4, (off_p)start); + debug2("doing ahead check with BPF %d at %"PRIi64, fr->framesize+4, start); /* step framesize bytes forward and read next possible header*/ if((oret=fr->rd->skip_bytes(fr, fr->framesize))<0) { @@ -1093,7 +1077,7 @@ static int do_readahead(mpg123_handle *fr, unsigned long newhead) } if(hd == MPG123_NEED_MORE) return PARSE_MORE; - debug1("After fetching next header, at %"OFF_P, (off_p)fr->rd->tell(fr)); + debug1("After fetching next header, at %"PRIi64, fr->rd->tell(fr)); if(!hd) { if(NOQUIET) warning("Cannot read next header, a one-frame stream? Duh..."); @@ -1121,7 +1105,7 @@ static int handle_id3v2(mpg123_handle *fr, unsigned long newhead) { int ret; fr->oldhead = 0; /* Think about that. Used to be present only for skipping of junk, not resync-style wetwork. */ - ret = parse_new_id3(fr, newhead); + ret = INT123_parse_new_id3(fr, newhead); if (ret < 0) return ret; #ifndef NO_ID3V2 else if(ret > 0){ debug("got ID3v2"); fr->metaflags |= MPG123_NEW_ID3|MPG123_ID3; } @@ -1140,7 +1124,7 @@ static int handle_apetag(mpg123_handle *fr, unsigned long newhead) int back_bytes = 3; fr->oldhead = 0; - debug1("trying to read remaining APE header at %"OFF_P, (off_p)fr->rd->tell(fr)); + debug1("trying to read remaining APE header at %"PRIi64, fr->rd->tell(fr)); /* Apetag headers are 32 bytes, newhead contains 4, read the rest */ if((ret=fr->rd->fullread(fr,apebuf,28)) < 0) return ret; @@ -1148,7 +1132,7 @@ static int handle_apetag(mpg123_handle *fr, unsigned long newhead) if(ret < 28) goto apetag_bad; - debug1("trying to parse APE header at %"OFF_P, (off_p)fr->rd->tell(fr)); + debug1("trying to parse APE header at %"PRIi64, fr->rd->tell(fr)); /* Apetags start with "APETAGEX", "APET" is already tested. */ if(strncmp((char *)apebuf,"AGEX",4) != 0) goto apetag_bad; @@ -1171,8 +1155,8 @@ static int handle_apetag(mpg123_handle *fr, unsigned long newhead) | ((unsigned long)apebuf[10]<<16) | ((unsigned long)apebuf[9]<<8) | apebuf[8]; - debug2( "skipping %lu bytes of APE data at %"OFF_P - , val, (off_p)fr->rd->tell(fr) ); + debug2( "skipping %lu bytes of APE data at %"PRIi64 + , val, fr->rd->tell(fr) ); /* If encountering EOF here, things are just at an end. */ if((ret=fr->rd->skip_bytes(fr,val)) < 0) return ret; @@ -1277,7 +1261,7 @@ static int skip_junk(mpg123_handle *fr, unsigned long *newheadp, long *headcount fr->err = MPG123_RESYNC_FAIL; return PARSE_ERR; } - else debug1("hopefully found one at %"OFF_P, (off_p)fr->rd->tell(fr)); + else debug1("hopefully found one at %"PRIi64, fr->rd->tell(fr)); /* If the new header ist good, it is already decoded. */ *newheadp = newhead; @@ -1320,8 +1304,8 @@ static int wetwork(mpg123_handle *fr, unsigned long *newheadp) } else if(NOQUIET && fr->silent_resync == 0) { - fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset %"OFF_P".\n", - newhead, (off_p)fr->rd->tell(fr)-4); + fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset %"PRIi64".\n", + newhead, fr->rd->tell(fr)-4); } /* Now we got something bad at hand, try to recover. */ @@ -1352,7 +1336,7 @@ static int wetwork(mpg123_handle *fr, unsigned long *newheadp) return ret ? ret : PARSE_END; } - if(VERBOSE3) debug3("resync try %li at %"OFF_P", got newhead 0x%08lx", try, (off_p)fr->rd->tell(fr), newhead); + if(VERBOSE3) debug3("resync try %li at %"PRIi64", got newhead 0x%08lx", try, fr->rd->tell(fr), newhead); } while(!head_check(newhead)); *newheadp = newhead; diff --git a/src/libmpg123/parse.h b/src/libmpg123/parse.h index 33eeccd..31585fb 100644 --- a/src/libmpg123/parse.h +++ b/src/libmpg123/parse.h @@ -1,7 +1,7 @@ /* parse: spawned from common; clustering around stream/frame parsing - copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp & Thomas Orgis */ @@ -11,15 +11,12 @@ #include "frame.h" -int read_frame_init(mpg123_handle* fr); -int frame_bitrate(mpg123_handle *fr); -long frame_freq(mpg123_handle *fr); -int read_frame_recover(mpg123_handle* fr); /* dead? */ -int read_frame(mpg123_handle *fr); -void set_pointer(mpg123_handle *fr, int part2, long backstep); -int position_info(mpg123_handle* fr, unsigned long no, long buffsize, unsigned long* frames_left, double* current_seconds, double* seconds_left); -double compute_bpf(mpg123_handle *fr); -long time_to_frame(mpg123_handle *fr, double seconds); -int get_songlen(mpg123_handle *fr,int no); +int INT123_read_frame_init(mpg123_handle* fr); +int INT123_frame_bitrate(mpg123_handle *fr); +long INT123_frame_freq(mpg123_handle *fr); +int INT123_read_frame_recover(mpg123_handle* fr); /* dead? */ +int INT123_read_frame(mpg123_handle *fr); +void INT123_set_pointer(mpg123_handle *fr, int part2, long backstep); +double INT123_compute_bpf(mpg123_handle *fr); #endif diff --git a/src/libmpg123/reader.h b/src/libmpg123/reader.h index 52735c1..f070cb2 100644 --- a/src/libmpg123/reader.h +++ b/src/libmpg123/reader.h @@ -1,7 +1,7 @@ /* reader: reading input data - copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis (after code from Michael Hipp) */ @@ -9,15 +9,16 @@ #ifndef MPG123_READER_H #define MPG123_READER_H -#include "config.h" -#include "mpg123.h" +#ifndef MPG123_H_INTERN +#error "include internal mpg123 header first" +#endif #ifndef NO_FEEDER struct buffy { unsigned char *data; - ssize_t size; - ssize_t realsize; + ptrdiff_t size; + ptrdiff_t realsize; struct buffy *next; }; @@ -26,12 +27,14 @@ struct bufferchain { struct buffy* first; /* The beginning of the chain. */ struct buffy* last; /* The end... of the chain. */ - ssize_t size; /* Aggregated size of all buffies. */ + ptrdiff_t size; /* Aggregated size of all buffies. */ /* These positions are relative to buffer chain beginning. */ - ssize_t pos; /* Position in whole chain. */ - ssize_t firstpos; /* The point of return on non-forget() */ + ptrdiff_t pos; /* Position in whole chain. */ + ptrdiff_t firstpos; /* The point of return on non-forget() */ /* The "real" filepos is fileoff + pos. */ - off_t fileoff; /* Beginning of chain is at this file offset. */ + int64_t fileoff; /* Beginning of chain is at this file offset. */ + // Unsigned since no direct arithmetic with offsets. Overflow of overall + // size needs to be checked anyway. size_t bufblock; /* Default (minimal) size of buffers. */ size_t pool_size; /* Keep that many buffers in storage. */ size_t pool_fill; /* That many buffers are there. */ @@ -40,40 +43,28 @@ struct bufferchain }; /* Call this before any buffer chain use (even bc_init()). */ -void bc_prepare(struct bufferchain *, size_t pool_size, size_t bufblock); +void INT123_bc_prepare(struct bufferchain *, size_t pool_size, size_t bufblock); /* Free persistent data in the buffer chain, after bc_reset(). */ -void bc_cleanup(struct bufferchain *); +void INT123_bc_cleanup(struct bufferchain *); /* Change pool size. This does not actually allocate/free anything on itself, just instructs later operations to free less / allocate more buffers. */ -void bc_poolsize(struct bufferchain *, size_t pool_size, size_t bufblock); +void INT123_bc_poolsize(struct bufferchain *, size_t pool_size, size_t bufblock); /* Return available byte count in the buffer. */ -size_t bc_fill(struct bufferchain *bc); +size_t INT123_bc_fill(struct bufferchain *bc); #endif struct reader_data { - off_t filelen; /* total file length or total buffer size */ - off_t filepos; /* position in file or position in buffer chain */ - int filept; + int64_t filelen; /* total file length or total buffer size */ + int64_t filepos; /* position in file or position in buffer chain */ /* Custom opaque I/O handle from the client. */ void *iohandle; int flags; - long timeout_sec; - ssize_t (*fdread) (mpg123_handle *, void *, size_t); - /* User can replace the read and lseek functions. The r_* are the stored replacement functions or NULL. */ - ssize_t (*r_read) (int fd, void *buf, size_t count); - off_t (*r_lseek)(int fd, off_t offset, int whence); - /* These are custom I/O routines for opaque user handles. - They get picked if there's some iohandle set. */ - ssize_t (*r_read_handle) (void *handle, void *buf, size_t count); - off_t (*r_lseek_handle)(void *handle, off_t offset, int whence); - /* An optional cleaner for the handle on closing the stream. */ + // The one and only lowlevel reader wrapper, wrapping over all others. + // This is either libmpg123's wrapper or directly the user-supplied functions. + int (*r_read64) (void *, void *, size_t, size_t *); + int64_t (*r_lseek64)(void *, int64_t, int); void (*cleanup_handle)(void *handle); - /* These two pointers are the actual workers (default map to POSIX read/lseek). */ - ssize_t (*read) (int fd, void *buf, size_t count); - off_t (*lseek)(int fd, off_t offset, int whence); - /* Buffered readers want that abstracted, set internally. */ - ssize_t (*fullread)(mpg123_handle *, unsigned char *, ssize_t); #ifndef NO_FEEDER struct bufferchain buffer; /* Not dynamically allocated, these few struct bytes aren't worth the trouble. */ #endif @@ -87,39 +78,35 @@ struct reader { int (*init) (mpg123_handle *); void (*close) (mpg123_handle *); - ssize_t (*fullread) (mpg123_handle *, unsigned char *, ssize_t); + ptrdiff_t (*fullread) (mpg123_handle *, unsigned char *, ptrdiff_t); int (*head_read) (mpg123_handle *, unsigned long *newhead); /* succ: TRUE, else <= 0 (FALSE or READER_MORE) */ int (*head_shift) (mpg123_handle *, unsigned long *head); /* succ: TRUE, else <= 0 (FALSE or READER_MORE) */ - off_t (*skip_bytes) (mpg123_handle *, off_t len); /* succ: >=0, else error or READER_MORE */ + int64_t (*skip_bytes) (mpg123_handle *, int64_t len); /* succ: >=0, else error or READER_MORE */ int (*read_frame_body)(mpg123_handle *, unsigned char *, int size); - int (*back_bytes) (mpg123_handle *, off_t bytes); - int (*seek_frame) (mpg123_handle *, off_t num); - off_t (*tell) (mpg123_handle *); + int (*back_bytes) (mpg123_handle *, int64_t bytes); + int (*seek_frame) (mpg123_handle *, int64_t num); + int64_t (*tell) (mpg123_handle *); void (*rewind) (mpg123_handle *); void (*forget) (mpg123_handle *); }; -/* Open a file by path or use an opened file descriptor. */ -int open_stream(mpg123_handle *, const char *path, int fd); /* Open an external handle. */ -int open_stream_handle(mpg123_handle *, void *iohandle); +int INT123_open_stream_handle(mpg123_handle *, void *iohandle); /* feed based operation has some specials */ -int open_feed(mpg123_handle *); +int INT123_open_feed(mpg123_handle *); /* externally called function, returns 0 on success, -1 on error */ -int feed_more(mpg123_handle *fr, const unsigned char *in, long count); -void feed_forget(mpg123_handle *fr); /* forget the data that has been read (free some buffers) */ -off_t feed_set_pos(mpg123_handle *fr, off_t pos); /* Set position (inside available data if possible), return wanted byte offset of next feed. */ +int INT123_feed_more(mpg123_handle *fr, const unsigned char *in, size_t count); +void INT123_feed_forget(mpg123_handle *fr); /* forget the data that has been read (free some buffers) */ +int64_t INT123_feed_set_pos(mpg123_handle *fr, int64_t pos); /* Set position (inside available data if possible), return wanted byte offset of next feed. */ -void open_bad(mpg123_handle *); +void INT123_open_bad(mpg123_handle *); -#define READER_FD_OPENED 0x1 #define READER_ID3TAG 0x2 #define READER_SEEKABLE 0x4 #define READER_BUFFERED 0x8 -#define READER_NONBLOCK 0x20 +#define READER_NOSEEK 0x10 #define READER_HANDLEIO 0x40 - #define READER_STREAM 0 #define READER_ICY_STREAM 1 #define READER_FEED 2 @@ -127,13 +114,6 @@ void open_bad(mpg123_handle *); #define READER_BUF_STREAM 3 #define READER_BUF_ICY_STREAM 4 -#ifdef READ_SYSTEM -#define READER_SYSTEM 5 -#define READERS 6 -#else -#define READERS 5 -#endif - #define READER_ERROR MPG123_ERR #define READER_MORE MPG123_NEED_MORE diff --git a/src/libmpg123/readers.c b/src/libmpg123/readers.c index fbaa4d9..0cf4aae 100644 --- a/src/libmpg123/readers.c +++ b/src/libmpg123/readers.c @@ -4,94 +4,70 @@ /* readers.c: reading input data - copyright ?-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ #include "mpg123lib_intern.h" -#include -#include -#include -/* For select(), I need select.h according to POSIX 2001, else: sys/time.h sys/types.h unistd.h (the latter two included in compat.h already). */ -#ifdef HAVE_SYS_SELECT_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef _MSC_VER -#include -#endif -#include "compat.h" #include "debug.h" -static int default_init(mpg123_handle *fr); -static off_t get_fileinfo(mpg123_handle *); -static ssize_t posix_read(int fd, void *buf, size_t count){ return read(fd, buf, count); } -static off_t posix_lseek(int fd, off_t offset, int whence){ return lseek(fd, offset, whence); } -static off_t nix_lseek(int fd, off_t offset, int whence){ return -1; } +static int stream_init(mpg123_handle *fr); +static int64_t get_fileinfo(mpg123_handle *); -static ssize_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ssize_t count); - -/* Wrapper to decide between descriptor-based and external handle-based I/O. */ -static off_t io_seek(struct reader_data *rdat, off_t offset, int whence); -static ssize_t io_read(struct reader_data *rdat, void *buf, size_t count); +static ptrdiff_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ptrdiff_t count); #ifndef NO_FEEDER /* Bufferchain methods. */ static void bc_init(struct bufferchain *bc); static void bc_reset(struct bufferchain *bc); -static int bc_append(struct bufferchain *bc, ssize_t size); +static int bc_append(struct bufferchain *bc, ptrdiff_t size); #if 0 static void bc_drop(struct bufferchain *bc); #endif -static int bc_add(struct bufferchain *bc, const unsigned char *data, ssize_t size); -static ssize_t bc_give(struct bufferchain *bc, unsigned char *out, ssize_t size); -static ssize_t bc_skip(struct bufferchain *bc, ssize_t count); -static ssize_t bc_seekback(struct bufferchain *bc, ssize_t count); +static int bc_add(struct bufferchain *bc, const unsigned char *data, ptrdiff_t size); +static ptrdiff_t bc_give(struct bufferchain *bc, unsigned char *out, ptrdiff_t size); +static ptrdiff_t bc_skip(struct bufferchain *bc, ptrdiff_t count); +static ptrdiff_t bc_seekback(struct bufferchain *bc, ptrdiff_t count); static void bc_forget(struct bufferchain *bc); #endif -/* A normal read and a read with timeout. */ -static ssize_t plain_read(mpg123_handle *fr, void *buf, size_t count) +// This is only for streams, so READER_HANDLEIO must be set. +static ptrdiff_t fdread(mpg123_handle *fr, void *buf, size_t count) { - ssize_t ret = io_read(&fr->rdat, buf, count); - if(VERBOSE3) debug2("read %li bytes of %li", (long)ret, (long)count); - return ret; -} - -#ifdef TIMEOUT_READ - -/* Wait for data becoming available, allowing soft-broken network connection to die - This is needed for Shoutcast servers that have forgotten about us while connection was temporarily down. */ -static ssize_t timeout_read(mpg123_handle *fr, void *buf, size_t count) -{ - struct timeval tv; - ssize_t ret = 0; - fd_set fds; - tv.tv_sec = fr->rdat.timeout_sec; - tv.tv_usec = 0; - FD_ZERO(&fds); - FD_SET(fr->rdat.filept, &fds); - ret = select(fr->rdat.filept+1, &fds, NULL, NULL, &tv); - /* This works only with "my" read function. Not user-replaced. */ - if(ret > 0) ret = read(fr->rdat.filept, buf, count); - else + if((fr->rdat.flags & READER_HANDLEIO) && fr->rdat.r_read64) { - ret=-1; /* no activity is the error */ - if(NOQUIET) error("stream timed out"); + size_t got = 0; + int ret = fr->rdat.r_read64(fr->rdat.iohandle, buf, count, &got); + if(ret<0) + { + if(NOQUIET) merror("error reading %zu bytes", count); + return -1; + } + if(VERBOSE3) mdebug("read %zu bytes of %zu", got, count); + // Stupid handling, but at least some handling of never-occuring case. + return (ptrdiff_t)(got > PTRDIFF_MAX ? PTRDIFF_MAX : got); } - return ret; + if(NOQUIET) error("no reader setup"); + return -1; +} + +static int64_t fdseek(mpg123_handle *fr, int64_t offset, int whence) +{ + if((fr->rdat.flags & READER_HANDLEIO) && fr->rdat.r_lseek64) + return (fr->rdat.flags & READER_NOSEEK) + ? -1 + : fr->rdat.r_lseek64(fr->rdat.iohandle, offset, whence); + if(NOQUIET) error("no reader setup"); + return -1; } -#endif #ifndef NO_ICY /* stream based operation with icy meta data*/ -static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count) +static ptrdiff_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ptrdiff_t count) { - ssize_t ret,cnt; + ptrdiff_t ret,cnt; cnt = 0; if(fr->rdat.flags & READER_SEEKABLE) { @@ -114,13 +90,13 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count { unsigned char temp_buff; size_t meta_size; - ssize_t cut_pos; + ptrdiff_t cut_pos; /* we are near icy-metaint boundary, read up to the boundary */ if(fr->icy.next > 0) { cut_pos = fr->icy.next; - ret = fr->rdat.fdread(fr,buf+cnt,cut_pos); + ret = fdread(fr,buf+cnt,cut_pos); if(ret < 1) { if(ret == 0) break; /* Just EOF. */ @@ -130,7 +106,7 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count } if(!(fr->rdat.flags & READER_BUFFERED)) - SATURATE_ADD(fr->rdat.filepos, ret, OFF_MAX); + SATURATE_ADD(fr->rdat.filepos, ret, INT64_MAX); cnt += ret; fr->icy.next -= ret; if(fr->icy.next > 0) @@ -143,13 +119,13 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count /* one byte icy-meta size (must be multiplied by 16 to get icy-meta length) */ - ret = fr->rdat.fdread(fr,&temp_buff,1); /* Getting one single byte hast to suceed. */ + ret = fdread(fr,&temp_buff,1); /* Getting one single byte hast to suceed. */ if(ret < 0){ if(NOQUIET) error("reading icy size"); return READER_ERROR; } if(ret == 0) break; debug2("got meta-size byte: %u, at filepos %li", temp_buff, (long)fr->rdat.filepos ); if(!(fr->rdat.flags & READER_BUFFERED)) - SATURATE_ADD(fr->rdat.filepos, ret, OFF_MAX); /* 1... */ + SATURATE_ADD(fr->rdat.filepos, ret, INT64_MAX); /* 1... */ if((meta_size = ((size_t) temp_buff) * 16)) { @@ -159,17 +135,17 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count meta_buff = malloc(meta_size+1); if(meta_buff != NULL) { - ssize_t left = meta_size; + ptrdiff_t left = meta_size; while(left > 0) { - ret = fr->rdat.fdread(fr,meta_buff+meta_size-left,left); + ret = fdread(fr,meta_buff+meta_size-left,left); /* 0 is error here, too... there _must_ be the ICY data, the server promised! */ if(ret < 1){ if(NOQUIET) error("reading icy-meta"); return READER_ERROR; } left -= ret; } meta_buff[meta_size] = 0; /* string paranoia */ if(!(fr->rdat.flags & READER_BUFFERED)) - SATURATE_ADD(fr->rdat.filepos, ret, OFF_MAX); + SATURATE_ADD(fr->rdat.filepos, ret, INT64_MAX); if(fr->icy.data) free(fr->icy.data); fr->icy.data = meta_buff; @@ -202,12 +178,12 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count #endif /* NO_ICY */ /* stream based operation */ -static ssize_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ssize_t count) +static ptrdiff_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ptrdiff_t count) { - ssize_t ret,cnt=0; + ptrdiff_t ret,cnt=0; #ifdef EXTRA_DEBUG - debug1("plain fullread of %"SSIZE_P, (size_p)count); + mdebug("plain fullread of %td", count); #endif /* There used to be a check for expected file end here (length value or ID3 flag). @@ -218,21 +194,21 @@ static ssize_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ssize_t coun */ while(cnt < count) { - ret = fr->rdat.fdread(fr,buf+cnt,count-cnt); + ret = fdread(fr,buf+cnt,count-cnt); if(ret < 0) return READER_ERROR; if(ret == 0) break; if(!(fr->rdat.flags & READER_BUFFERED)) - SATURATE_ADD(fr->rdat.filepos, ret, OFF_MAX); + SATURATE_ADD(fr->rdat.filepos, ret, INT64_MAX); cnt += ret; } return cnt; } -static off_t stream_lseek(mpg123_handle *fr, off_t pos, int whence) +static int64_t stream_lseek(mpg123_handle *fr, int64_t pos, int whence) { - off_t ret; - ret = io_seek(&fr->rdat, pos, whence); - if (ret >= 0) fr->rdat.filepos = ret; + int64_t ret = fdseek(fr, pos, whence); + if (ret >= 0) + fr->rdat.filepos = ret; else { fr->err = MPG123_LSEEK_FAILED; @@ -243,37 +219,34 @@ static off_t stream_lseek(mpg123_handle *fr, off_t pos, int whence) static void stream_close(mpg123_handle *fr) { - if(fr->rdat.flags & READER_FD_OPENED) compat_close(fr->rdat.filept); - - fr->rdat.filept = 0; - #ifndef NO_FEEDER if(fr->rdat.flags & READER_BUFFERED) bc_reset(&fr->rdat.buffer); #endif if(fr->rdat.flags & READER_HANDLEIO) { - if(fr->rdat.cleanup_handle != NULL) fr->rdat.cleanup_handle(fr->rdat.iohandle); + if(fr->rdat.cleanup_handle != NULL) + fr->rdat.cleanup_handle(fr->rdat.iohandle); fr->rdat.iohandle = NULL; } } -static int stream_seek_frame(mpg123_handle *fr, off_t newframe) +static int stream_seek_frame(mpg123_handle *fr, int64_t newframe) { - debug2("seek_frame to %"OFF_P" (from %"OFF_P")", (off_p)newframe, (off_p)fr->num); + debug2("seek_frame to %"PRIi64" (from %"PRIi64")", newframe, fr->num); /* Seekable streams can go backwards and jump forwards. Non-seekable streams still can go forward, just not jump. */ if((fr->rdat.flags & READER_SEEKABLE) || (newframe >= fr->num)) { - off_t preframe; /* a leading frame we jump to */ - off_t seek_to; /* the byte offset we want to reach */ - off_t to_skip; /* bytes to skip to get there (can be negative) */ + int64_t preframe; /* a leading frame we jump to */ + int64_t seek_to; /* the byte offset we want to reach */ + int64_t to_skip; /* bytes to skip to get there (can be negative) */ /* now seek to nearest leading index position and read from there until newframe is reached. We use skip_bytes, which handles seekable and non-seekable streams (the latter only for positive offset, which we ensured before entering here). */ - seek_to = frame_index_find(fr, newframe, &preframe); + seek_to = INT123_frame_index_find(fr, newframe, &preframe); /* No need to seek to index position if we are closer already. But I am picky about fr->num == newframe, play safe by reading the frame again. If you think that's stupid, don't call a seek to the current frame. */ @@ -289,10 +262,10 @@ static int stream_seek_frame(mpg123_handle *fr, off_t newframe) while(fr->num < newframe) { /* try to be non-fatal now... frameNum only gets advanced on success anyway */ - if(!read_frame(fr)) break; + if(!INT123_read_frame(fr)) break; } /* Now the wanted frame should be ready for decoding. */ - debug1("arrived at %lu", (long unsigned)fr->num); + debug1("arrived at %"PRIi64, fr->num); return MPG123_OK; } @@ -334,20 +307,20 @@ static int generic_head_shift(mpg123_handle *fr,unsigned long *head) } /* returns reached position... negative ones are bad... */ -static off_t stream_skip_bytes(mpg123_handle *fr,off_t len) +static int64_t stream_skip_bytes(mpg123_handle *fr, int64_t len) { if(fr->rdat.flags & READER_SEEKABLE) { - off_t ret = stream_lseek(fr, len, SEEK_CUR); + int64_t ret = stream_lseek(fr, len, SEEK_CUR); return (ret < 0) ? READER_ERROR : ret; } else if(len >= 0) { unsigned char buf[1024]; /* ThOr: Compaq cxx complained and it makes sense to me... or should one do a cast? What for? */ - ssize_t ret; + ptrdiff_t ret; while (len > 0) { - ssize_t num = len < (off_t)sizeof(buf) ? (ssize_t)len : (ssize_t)sizeof(buf); + ptrdiff_t num = len < (ptrdiff_t)sizeof(buf) ? (ptrdiff_t)len : (ptrdiff_t)sizeof(buf); ret = fr->rd->fullread(fr, buf, num); if (ret < 0) return ret; else if(ret == 0) break; /* EOF... an error? interface defined to tell the actual position... */ @@ -378,9 +351,9 @@ static off_t stream_skip_bytes(mpg123_handle *fr,off_t len) } /* Return 0 on success... */ -static int stream_back_bytes(mpg123_handle *fr, off_t bytes) +static int stream_back_bytes(mpg123_handle *fr, int64_t bytes) { - off_t want = fr->rd->tell(fr)-bytes; + int64_t want = fr->rd->tell(fr)-bytes; if(want < 0) return READER_ERROR; if(stream_skip_bytes(fr,-bytes) != want) return READER_ERROR; @@ -391,18 +364,18 @@ static int stream_back_bytes(mpg123_handle *fr, off_t bytes) /* returns size on success... otherwise an error code < 0 */ static int generic_read_frame_body(mpg123_handle *fr,unsigned char *buf, int size) { - long l; + ptrdiff_t l; l=fr->rd->fullread(fr,buf,size); - return (l >= 0 && l= 0 && lrdat.flags & READER_BUFFERED) { fr->rdat.filepos = fr->rdat.buffer.fileoff; - SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, OFF_MAX); + SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, INT64_MAX); } #endif @@ -434,17 +407,17 @@ static void stream_rewind(mpg123_handle *fr) * reads the last 128 bytes information into buffer * ... that is not totally safe... */ -static off_t get_fileinfo(mpg123_handle *fr) +static int64_t get_fileinfo(mpg123_handle *fr) { - off_t len; + int64_t len; - if((len=io_seek(&fr->rdat,0,SEEK_END)) < 0) + if((len=fdseek(fr,0,SEEK_END)) < 0) { debug("cannot seek to end"); return -1; } else if(len >= 128) { - if(io_seek(&fr->rdat,-128,SEEK_END) < 0) + if(fdseek(fr,-128,SEEK_END) < 0) { debug("cannot seek to END-128"); return -1; @@ -460,14 +433,14 @@ static off_t get_fileinfo(mpg123_handle *fr) debug("stream too short for ID3"); } - if(io_seek(&fr->rdat,0,SEEK_SET) < 0) + if(fdseek(fr,0,SEEK_SET) < 0) { debug("cannot seek back"); return -1; } fr->rdat.filepos = 0; // un-do our seeking here - debug1("returning length: %"OFF_P, (off_p)len); + debug1("returning length: %"PRIi64, len); return len; } @@ -475,14 +448,16 @@ static off_t get_fileinfo(mpg123_handle *fr) /* Methods for the buffer chain, mainly used for feed reader, but not just that. */ -static struct buffy* buffy_new(size_t size, size_t minsize) +static struct buffy* buffy_new(ptrdiff_t size, ptrdiff_t minsize) { struct buffy *newbuf; + if(size > PTRDIFF_MAX) + return NULL; newbuf = malloc(sizeof(struct buffy)); if(newbuf == NULL) return NULL; newbuf->realsize = size > minsize ? size : minsize; - newbuf->data = malloc(newbuf->realsize); + newbuf->data = malloc((size_t)newbuf->realsize); if(newbuf->data == NULL) { free(newbuf); @@ -513,26 +488,26 @@ static void buffy_del_chain(struct buffy* buf) } } -void bc_prepare(struct bufferchain *bc, size_t pool_size, size_t bufblock) +void INT123_bc_prepare(struct bufferchain *bc, size_t pool_size, size_t bufblock) { - bc_poolsize(bc, pool_size, bufblock); + INT123_bc_poolsize(bc, pool_size, bufblock); bc->pool = NULL; bc->pool_fill = 0; bc_init(bc); /* Ensure that members are zeroed for read-only use. */ } -size_t bc_fill(struct bufferchain *bc) +size_t INT123_bc_fill(struct bufferchain *bc) { return (size_t)(bc->size - bc->pos); } -void bc_poolsize(struct bufferchain *bc, size_t pool_size, size_t bufblock) +void INT123_bc_poolsize(struct bufferchain *bc, size_t pool_size, size_t bufblock) { bc->pool_size = pool_size; bc->bufblock = bufblock; } -void bc_cleanup(struct bufferchain *bc) +void INT123_bc_cleanup(struct bufferchain *bc) { buffy_del_chain(bc->pool); bc->pool = NULL; @@ -625,7 +600,7 @@ static void bc_reset(struct bufferchain *bc) } /* Create a new buffy at the end to be filled. */ -static int bc_append(struct bufferchain *bc, ssize_t size) +static int bc_append(struct bufferchain *bc, ptrdiff_t size) { struct buffy *newbuf; if(size < 1) return -1; @@ -637,16 +612,18 @@ static int bc_append(struct bufferchain *bc, ssize_t size) else if(bc->first == NULL) bc->first = newbuf; bc->last = newbuf; - debug3("bc_append: new last buffer %p with %"SSIZE_P" B (really %"SSIZE_P")", (void*)bc->last, (ssize_p)bc->last->size, (ssize_p)bc->last->realsize); + debug3("bc_append: new last buffer %p with %td B (really %td)", (void*)bc->last, bc->last->size, bc->last->realsize); return 0; } /* Append a new buffer and copy content to it. */ -static int bc_add(struct bufferchain *bc, const unsigned char *data, ssize_t size) +static int bc_add(struct bufferchain *bc, const unsigned char *data, ptrdiff_t size) { int ret = 0; - ssize_t part = 0; - debug2("bc_add: adding %"SSIZE_P" bytes at %"OFF_P, (ssize_p)size, (off_p)(bc->fileoff+bc->size)); + ptrdiff_t part = 0; + if((size_t)(PTRDIFF_MAX - bc->size) < size) + return -1; + debug2("bc_add: adding %zu bytes at %"PRIi64, size, (int64_t)(bc->fileoff+bc->size)); if(size >=4) debug4("first bytes: %02x %02x %02x %02x", data[0], data[1], data[2], data[3]); while(size > 0) @@ -657,7 +634,7 @@ static int bc_add(struct bufferchain *bc, const unsigned char *data, ssize_t siz part = bc->last->realsize - bc->last->size; if(part > size) part = size; - debug2("bc_add: adding %"SSIZE_P" B to existing block %p", (ssize_p)part, (void*)bc->last); + debug2("bc_add: adding %td B to existing block %p", part, (void*)bc->last); memcpy(bc->last->data+bc->last->size, data, part); bc->last->size += part; size -= part; @@ -674,21 +651,21 @@ static int bc_add(struct bufferchain *bc, const unsigned char *data, ssize_t siz } /* Common handler for "You want more than I can give." situation. */ -static ssize_t bc_need_more(struct bufferchain *bc) +static ptrdiff_t bc_need_more(struct bufferchain *bc, ptrdiff_t size) { - debug3("hit end, back to beginning (%li - %li < %li)", (long)bc->size, (long)bc->pos, (long)bc->size); + debug3("hit end, back to beginning (%td - %td < %td)", bc->size, bc->pos, size); /* go back to firstpos, undo the previous reads */ bc->pos = bc->firstpos; return READER_MORE; } /* Give some data, advancing position but not forgetting yet. */ -static ssize_t bc_give(struct bufferchain *bc, unsigned char *out, ssize_t size) +static ptrdiff_t bc_give(struct bufferchain *bc, unsigned char *out, ptrdiff_t size) { struct buffy *b = bc->first; - ssize_t gotcount = 0; - ssize_t offset = 0; - if(bc->size - bc->pos < size) return bc_need_more(bc); + ptrdiff_t gotcount = 0; + ptrdiff_t offset = 0; + if(bc->size - bc->pos < size) return bc_need_more(bc, size); /* find the current buffer */ while(b != NULL && (offset + b->size) <= bc->pos) @@ -699,8 +676,8 @@ static ssize_t bc_give(struct bufferchain *bc, unsigned char *out, ssize_t size) /* now start copying from there */ while(gotcount < size && (b != NULL)) { - ssize_t loff = bc->pos - offset; - ssize_t chunk = size - gotcount; /* amount of bytes to get from here... */ + ptrdiff_t loff = bc->pos - offset; + ptrdiff_t chunk = size - gotcount; /* amount of bytes to get from here... */ if(chunk > b->size - loff) chunk = b->size - loff; #ifdef EXTRA_DEBUG @@ -722,17 +699,17 @@ static ssize_t bc_give(struct bufferchain *bc, unsigned char *out, ssize_t size) /* Skip some bytes and return the new position. The buffers are still there, just the read pointer is moved! */ -static ssize_t bc_skip(struct bufferchain *bc, ssize_t count) +static ptrdiff_t bc_skip(struct bufferchain *bc, ptrdiff_t count) { if(count >= 0) { - if(bc->size - bc->pos < count) return bc_need_more(bc); + if(bc->size - bc->pos < count) return bc_need_more(bc, count); else return bc->pos += count; } else return READER_ERROR; } -static ssize_t bc_seekback(struct bufferchain *bc, ssize_t count) +static ptrdiff_t bc_seekback(struct bufferchain *bc, ptrdiff_t count) { if(count >= 0 && count <= bc->pos) return bc->pos -= count; else return READER_ERROR; @@ -744,7 +721,7 @@ static void bc_forget(struct bufferchain *bc) struct buffy *b = bc->first; /* free all buffers that are def'n'tly outdated */ /* we have buffers until filepos... delete all buffers fully below it */ - if(b) debug2("bc_forget: block %lu pos %lu", (unsigned long)b->size, (unsigned long)bc->pos); + if(b) debug2("bc_forget: block %td pos %td", b->size, bc->pos); else debug("forget with nothing there!"); while(b != NULL && bc->pos >= b->size) @@ -755,7 +732,8 @@ static void bc_forget(struct bufferchain *bc) bc->pos -= b->size; bc->size -= b->size; - debug5("bc_forget: forgot %p with %lu, pos=%li, size=%li, fileoff=%li", (void*)b->data, (long)b->size, (long)bc->pos, (long)bc->size, (long)bc->fileoff); + debug5("bc_forget: forgot %p with %td, pos=%td, size=%td, fileoff=%td" + , (void*)b->data, b->size, bc->pos, bc->size, bc->fileoff); bc_free(bc, b); b = n; @@ -777,98 +755,104 @@ static int feed_init(mpg123_handle *fr) } /* externally called function, returns 0 on success, -1 on error */ -int feed_more(mpg123_handle *fr, const unsigned char *in, long count) +// External API uses size_t, we use signed ptrdiff_t internally. Overflow +// is a theoretical possibility. +int INT123_feed_more(mpg123_handle *fr, const unsigned char *in, size_t count) { int ret = 0; - if(VERBOSE3) debug("feed_more"); - if((ret = bc_add(&fr->rdat.buffer, in, count)) != 0) + if(VERBOSE3) debug("INT123_feed_more"); + if(count > PTRDIFF_MAX) + return READER_ERROR; + if((ret = bc_add(&fr->rdat.buffer, in, (ptrdiff_t)count)) != 0) { ret = READER_ERROR; if(NOQUIET) error1("Failed to add buffer, return: %i", ret); } else /* Not talking about filelen... that stays at 0. */ - if(VERBOSE3) debug3("feed_more: %p %luB bufsize=%lu", fr->rdat.buffer.last->data, + if(VERBOSE3) debug3("INT123_feed_more: %p %luB bufsize=%lu", fr->rdat.buffer.last->data, (unsigned long)fr->rdat.buffer.last->size, (unsigned long)fr->rdat.buffer.size); return ret; } -static ssize_t feed_read(mpg123_handle *fr, unsigned char *out, ssize_t count) +static ptrdiff_t feed_read(mpg123_handle *fr, unsigned char *out, ptrdiff_t count) { - ssize_t gotcount = bc_give(&fr->rdat.buffer, out, count); + ptrdiff_t gotcount = bc_give(&fr->rdat.buffer, out, count); if(gotcount >= 0 && gotcount != count) return READER_ERROR; else return gotcount; } /* returns reached position... negative ones are bad... */ -static off_t feed_skip_bytes(mpg123_handle *fr,off_t len) +static int64_t feed_skip_bytes(mpg123_handle *fr, int64_t len) { /* This is either the new buffer offset or some negative error value. */ - off_t res = bc_skip(&fr->rdat.buffer, (ssize_t)len); + int64_t res = bc_skip(&fr->rdat.buffer, (ptrdiff_t)len); if(res < 0) return res; return fr->rdat.buffer.fileoff+res; } -static int feed_back_bytes(mpg123_handle *fr, off_t bytes) +static int feed_back_bytes(mpg123_handle *fr, int64_t bytes) { if(bytes >=0) - return bc_seekback(&fr->rdat.buffer, (ssize_t)bytes) >= 0 ? 0 : READER_ERROR; + return bc_seekback(&fr->rdat.buffer, (ptrdiff_t)bytes) >= 0 ? 0 : READER_ERROR; else return feed_skip_bytes(fr, -bytes) >= 0 ? 0 : READER_ERROR; } -static int feed_seek_frame(mpg123_handle *fr, off_t num){ return READER_ERROR; } +static int feed_seek_frame(mpg123_handle *fr, int64_t num){ return READER_ERROR; } /* Not just for feed reader, also for self-feeding buffered reader. */ static void buffered_forget(mpg123_handle *fr) { bc_forget(&fr->rdat.buffer); fr->rdat.filepos = fr->rdat.buffer.fileoff; - SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, OFF_MAX); + SATURATE_ADD(fr->rdat.filepos, fr->rdat.buffer.pos, INT64_MAX); } -off_t feed_set_pos(mpg123_handle *fr, off_t pos) +int64_t INT123_feed_set_pos(mpg123_handle *fr, int64_t pos) { struct bufferchain *bc = &fr->rdat.buffer; if(pos >= bc->fileoff && pos-bc->fileoff < bc->size) { /* We have the position! */ - bc->pos = (ssize_t)(pos - bc->fileoff); - debug1("feed_set_pos inside, next feed from %"OFF_P, (off_p)(bc->fileoff+bc->size)); + bc->pos = (ptrdiff_t)(pos - bc->fileoff); + debug1("INT123_feed_set_pos inside, next feed from %"PRIi64, (int64_t)(bc->fileoff+bc->size)); return bc->fileoff+bc->size; /* Next input after end of buffer... */ } else { /* I expect to get the specific position on next feed. Forget what I have now. */ bc_reset(bc); bc->fileoff = pos; - debug1("feed_set_pos outside, buffer reset, next feed from %"OFF_P, (off_p)pos); + debug1("INT123_feed_set_pos outside, buffer reset, next feed from %"PRIi64, pos); return pos; /* Next input from exactly that position. */ } } /* The specific stuff for buffered stream reader. */ -static ssize_t buffered_fullread(mpg123_handle *fr, unsigned char *out, ssize_t count) +static ptrdiff_t buffered_fullread(mpg123_handle *fr, unsigned char *out, ptrdiff_t count +, ptrdiff_t (*fullread)(mpg123_handle *, unsigned char *, ptrdiff_t)) { struct bufferchain *bc = &fr->rdat.buffer; - ssize_t gotcount; + ptrdiff_t gotcount; if(VERBOSE3) mdebug("buffered_fullread: want %zd", count); if(bc->size - bc->pos < count) { /* Add more stuff to buffer. If hitting end of file, adjust count. */ unsigned char readbuf[4096]; - ssize_t need = count - (bc->size-bc->pos); + ptrdiff_t need = count - (bc->size-bc->pos); while(need>0) { int ret; - ssize_t got = fr->rdat.fullread(fr, readbuf, sizeof(readbuf)); + ptrdiff_t got = fullread(fr, readbuf, sizeof(readbuf)); if(got < 0) { if(NOQUIET) error("buffer reading"); return READER_ERROR; } - if(VERBOSE3) debug1("buffered_fullread: buffering %li bytes from stream (if > 0)", (long)got); + if(VERBOSE3) + debug1("buffered_fullread: buffering %td bytes from stream (if > 0)", got); if(got > 0 && (ret=bc_add(bc, readbuf, got)) != 0) { if(NOQUIET) error1("unable to add to chain, return: %i", ret); @@ -887,17 +871,28 @@ static ssize_t buffered_fullread(mpg123_handle *fr, unsigned char *out, ssize_t } gotcount = bc_give(bc, out, count); if(VERBOSE3) - mdebug("buffered_fullread: got %zd", gotcount); + mdebug("buffered_fullread: got %td", gotcount); if(gotcount != count){ if(NOQUIET) error("gotcount != count"); return READER_ERROR; } else return gotcount; } + +static ptrdiff_t buffered_plain_fullread(mpg123_handle *fr, unsigned char *out, ptrdiff_t count) +{ + return buffered_fullread(fr, out, count, plain_fullread); +} + +static ptrdiff_t buffered_icy_fullread(mpg123_handle *fr, unsigned char *out, ptrdiff_t count) +{ + return buffered_fullread(fr, out, count, icy_fullread); +} + #else -int feed_more(mpg123_handle *fr, const unsigned char *in, long count) +int INT123_feed_more(mpg123_handle *fr, const unsigned char *in, size_t count) { fr->err = MPG123_MISSING_FEATURE; return -1; } -off_t feed_set_pos(mpg123_handle *fr, off_t pos) +int64_t INT123_feed_set_pos(mpg123_handle *fr, int64_t pos) { fr->err = MPG123_MISSING_FEATURE; return -1; @@ -911,14 +906,14 @@ off_t feed_set_pos(mpg123_handle *fr, off_t pos) #define bugger_off { mh->err = MPG123_NO_READER; return MPG123_ERR; } static int bad_init(mpg123_handle *mh) bugger_off static void bad_close(mpg123_handle *mh){} -static ssize_t bad_fullread(mpg123_handle *mh, unsigned char *data, ssize_t count) bugger_off +static ptrdiff_t bad_fullread(mpg123_handle *mh, unsigned char *data, ptrdiff_t count) bugger_off static int bad_head_read(mpg123_handle *mh, unsigned long *newhead) bugger_off static int bad_head_shift(mpg123_handle *mh, unsigned long *head) bugger_off -static off_t bad_skip_bytes(mpg123_handle *mh, off_t len) bugger_off +static int64_t bad_skip_bytes(mpg123_handle *mh, int64_t len) bugger_off static int bad_read_frame_body(mpg123_handle *mh, unsigned char *data, int size) bugger_off -static int bad_back_bytes(mpg123_handle *mh, off_t bytes) bugger_off -static int bad_seek_frame(mpg123_handle *mh, off_t num) bugger_off -static off_t bad_tell(mpg123_handle *mh) bugger_off +static int bad_back_bytes(mpg123_handle *mh, int64_t bytes) bugger_off +static int bad_seek_frame(mpg123_handle *mh, int64_t num) bugger_off +static int64_t bad_tell(mpg123_handle *mh) bugger_off static void bad_rewind(mpg123_handle *mh){} #undef bugger_off @@ -930,7 +925,7 @@ static void bad_rewind(mpg123_handle *mh){} static struct reader readers[] = { { /* READER_STREAM */ - default_init, + stream_init, stream_close, plain_fullread, generic_head_read, @@ -944,7 +939,7 @@ static struct reader readers[] = NULL } , { /* READER_ICY_STREAM */ - default_init, + stream_init, stream_close, icy_fullread, generic_head_read, @@ -961,6 +956,8 @@ static struct reader readers[] = #define feed_init NULL #define feed_read NULL #define buffered_fullread NULL +#define buffered_plain_fullread NULL +#define buffered_icy_fullread NULL #define feed_seek_frame NULL #define feed_back_bytes NULL #define feed_skip_bytes NULL @@ -981,9 +978,9 @@ static struct reader readers[] = buffered_forget }, { /* READER_BUF_STREAM */ - default_init, + stream_init, stream_close, - buffered_fullread, + buffered_plain_fullread, generic_head_read, generic_head_shift, stream_skip_bytes, @@ -995,9 +992,9 @@ static struct reader readers[] = buffered_forget } , { /* READER_BUF_ICY_STREAM */ - default_init, + stream_init, stream_close, - buffered_fullread, + buffered_icy_fullread, generic_head_read, generic_head_shift, stream_skip_bytes, @@ -1008,22 +1005,6 @@ static struct reader readers[] = stream_rewind, buffered_forget }, -#ifdef READ_SYSTEM - ,{ - system_init, - NULL, /* filled in by system_init() */ - fullread, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - } -#endif }; static struct reader bad_reader = @@ -1042,41 +1023,20 @@ static struct reader bad_reader = NULL }; -static int default_init(mpg123_handle *fr) +static int stream_init(mpg123_handle *fr) { -#ifdef TIMEOUT_READ - if(fr->p.timeout > 0) - { - int flags; - if(fr->rdat.r_read != NULL) - { - if(NOQUIET) - error( "Timeout reading does not work with user-provided" - " read function. Implement it yourself!" ); - return -1; - } - flags = fcntl(fr->rdat.filept, F_GETFL); - flags |= O_NONBLOCK; - fcntl(fr->rdat.filept, F_SETFL, flags); - fr->rdat.fdread = timeout_read; - fr->rdat.timeout_sec = fr->p.timeout; - fr->rdat.flags |= READER_NONBLOCK; - } - else -#endif - fr->rdat.fdread = plain_read; - - fr->rdat.read = fr->rdat.r_read != NULL ? fr->rdat.r_read : posix_read; - fr->rdat.lseek = fr->rdat.r_lseek != NULL ? fr->rdat.r_lseek : posix_lseek; #ifndef NO_ICY /* ICY streams of any sort shall not be seekable. */ - if(fr->p.icy_interval > 0) fr->rdat.lseek = nix_lseek; + if(fr->p.icy_interval > 0) fr->rdat.flags |= READER_NOSEEK; #endif fr->rdat.filepos = 0; fr->rdat.filelen = fr->p.flags & MPG123_NO_PEEK_END ? -1 : get_fileinfo(fr); if(fr->p.flags & MPG123_FORCE_SEEKABLE) + { fr->rdat.flags |= READER_SEEKABLE; + fr->rdat.flags &= ~READER_NOSEEK; + } /* Don't enable seeking on ICY streams, just plain normal files. This check is necessary since the client can enforce ICY parsing on files that would otherwise be seekable. @@ -1105,14 +1065,12 @@ static int default_init(mpg123_handle *fr) { debug("switching to buffered stream reader"); fr->rd = &readers[READER_BUF_STREAM]; - fr->rdat.fullread = plain_fullread; } #ifndef NO_ICY else if(fr->rd == &readers[READER_ICY_STREAM]) { debug("switching to buffered ICY stream reader"); fr->rd = &readers[READER_BUF_ICY_STREAM]; - fr->rdat.fullread = icy_fullread; } #endif else @@ -1129,11 +1087,11 @@ static int default_init(mpg123_handle *fr) } -void open_bad(mpg123_handle *mh) +void INT123_open_bad(mpg123_handle *mh) { - debug("open_bad"); + debug("INT123_open_bad"); #ifndef NO_ICY - clear_icy(&mh->icy); + INT123_clear_icy(&mh->icy); #endif mh->rd = &bad_reader; mh->rdat.flags = 0; @@ -1143,7 +1101,7 @@ void open_bad(mpg123_handle *mh) mh->rdat.filelen = -1; } -int open_feed(mpg123_handle *fr) +int INT123_open_feed(mpg123_handle *fr) { debug("feed reader"); #ifdef NO_FEEDER @@ -1159,7 +1117,7 @@ int open_feed(mpg123_handle *fr) return -1; } - clear_icy(&fr->icy); + INT123_clear_icy(&fr->icy); #endif fr->rd = &readers[READER_FEED]; fr->rdat.flags = 0; @@ -1170,9 +1128,15 @@ int open_feed(mpg123_handle *fr) #endif /* NO_FEEDER */ } -/* Final code common to open_stream and open_stream_handle. */ -static int open_finish(mpg123_handle *fr) +/* Final code common to open_stream and INT123_open_stream_handle. */ +int INT123_open_stream_handle(mpg123_handle *fr, void *iohandle) { + INT123_clear_icy(&fr->icy); /* can be done inside frame_clear ...? */ + fr->rdat.filelen = -1; + fr->rdat.iohandle = iohandle; + fr->rdat.flags = 0; + fr->rdat.flags |= READER_HANDLEIO; + #ifndef NO_ICY if(fr->p.icy_interval > 0) { @@ -1192,75 +1156,3 @@ static int open_finish(mpg123_handle *fr) return MPG123_OK; } - -int open_stream(mpg123_handle *fr, const char *bs_filenam, int fd) -{ - int filept_opened = 1; - int filept; /* descriptor of opened file/stream */ - - clear_icy(&fr->icy); /* can be done inside frame_clear ...? */ - - if(!bs_filenam) /* no file to open, got a descriptor (stdin) */ - { - filept = fd; - filept_opened = 0; /* and don't try to close it... */ - } - #ifndef O_BINARY - #define O_BINARY (0) - #endif - else if((filept = compat_open(bs_filenam, O_RDONLY|O_BINARY)) < 0) /* a plain old file to open... */ - { - if(NOQUIET) error2("Cannot open file %s: %s", bs_filenam, strerror(errno)); - fr->err = MPG123_BAD_FILE; - return MPG123_ERR; /* error... */ - } - - /* now we have something behind filept and can init the reader */ - fr->rdat.filelen = -1; - fr->rdat.filept = filept; - fr->rdat.flags = 0; - if(filept_opened) fr->rdat.flags |= READER_FD_OPENED; - - return open_finish(fr); -} - -int open_stream_handle(mpg123_handle *fr, void *iohandle) -{ - clear_icy(&fr->icy); /* can be done inside frame_clear ...? */ - fr->rdat.filelen = -1; - fr->rdat.filept = -1; - fr->rdat.iohandle = iohandle; - fr->rdat.flags = 0; - fr->rdat.flags |= READER_HANDLEIO; - - return open_finish(fr); -} - -/* Wrappers for actual reading/seeking... I'm full of wrappers here. */ -static off_t io_seek(struct reader_data *rdat, off_t offset, int whence) -{ - if(rdat->flags & READER_HANDLEIO) - { - if(rdat->r_lseek_handle != NULL) - { - return rdat->r_lseek_handle(rdat->iohandle, offset, whence); - } - else return -1; - } - else - return rdat->lseek(rdat->filept, offset, whence); -} - -static ssize_t io_read(struct reader_data *rdat, void *buf, size_t count) -{ - if(rdat->flags & READER_HANDLEIO) - { - if(rdat->r_read_handle != NULL) - { - return rdat->r_read_handle(rdat->iohandle, buf, count); - } - else return -1; - } - else - return rdat->read(rdat->filept, buf, count); -} diff --git a/src/libmpg123/stringbuf.c b/src/libmpg123/stringbuf.c index fb3b830..cc00878 100644 --- a/src/libmpg123/stringbuf.c +++ b/src/libmpg123/stringbuf.c @@ -71,8 +71,8 @@ int attribute_align_arg mpg123_resize_string(mpg123_string* sb, size_t new) { char* t; debug("really!"); - t = (char*) safe_realloc(sb->p, new*sizeof(char)); - debug1("safe_realloc returned %p", (void*) t); + t = (char*) INT123_safe_realloc(sb->p, new*sizeof(char)); + debug1("INT123_safe_realloc returned %p", (void*) t); if(t != NULL) { sb->p = t; @@ -217,23 +217,19 @@ size_t attribute_align_arg mpg123_strlen(mpg123_string *sb, int utf8) int attribute_align_arg mpg123_chomp_string(mpg123_string *sb) { - ssize_t i; if(!sb || !sb->fill) return 0; /* Ensure that it is zero-terminated. */ - sb->p[sb->fill-1] = 0; - for(i=sb->fill-2; i>=0; --i) + char *c = sb->p+sb->fill-1; + *c = 0; + for(; c >= sb->p; --c) { - char *c = sb->p+i; /* Stop at the first proper character. */ if(*c && *c != '\r' && *c != '\n') break; else *c = 0; } - /* initial fill at least 1, so i at least -1, - +2 means nothing happened for fill=1 . - With i=0, we got one non-null character, fill shall be 2 - to accomodate the trailing zero. */ - sb->fill = (size_t)i+2; + // We at least got a trailing zero. + sb->fill = (size_t)(c - sb->p + 1) + 1; return 1; } diff --git a/src/libmpg123/synth.c b/src/libmpg123/synth.c index ed927d9..e681700 100644 --- a/src/libmpg123/synth.c +++ b/src/libmpg123/synth.c @@ -16,9 +16,9 @@ /* Part 1: All synth functions that produce signed short. That is: - - synth_1to1 with cpu-specific variants (synth_1to1_i386, synth_1to1_i586 ...) - - synth_1to1_mono and synth_1to1_m2s; which use fr->synths.plain[r_1to1][f_16]. - Nearly every decoder variant has it's own synth_1to1, while the mono conversion is shared. + - INT123_synth_1to1 with cpu-specific variants (INT123_synth_1to1_i386, INT123_synth_1to1_i586 ...) + - INT123_synth_1to1_mono and INT123_synth_1to1_m2s; which use fr->synths.plain[r_1to1][f_16]. + Nearly every decoder variant has it's own INT123_synth_1to1, while the mono conversion is shared. */ #define SAMPLE_T short @@ -27,24 +27,24 @@ /* Part 1a: All straight 1to1 decoding functions */ #define BLOCK 0x40 /* One decoding block is 64 samples. */ -#define SYNTH_NAME synth_1to1 +#define SYNTH_NAME INT123_synth_1to1 #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_1to1. */ +/* Mono-related synths; they wrap over _some_ INT123_synth_1to1. */ #define SYNTH_NAME fr->synths.plain[r_1to1][f_16] -#define MONO_NAME synth_1to1_mono -#define MONO2STEREO_NAME synth_1to1_m2s +#define MONO_NAME INT123_synth_1to1_mono +#define MONO2STEREO_NAME INT123_synth_1to1_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME #undef MONO2STEREO_NAME -/* Now we have possibly some special synth_1to1 ... +/* Now we have possibly some special INT123_synth_1to1 ... ... they produce signed short; the mono functions defined above work on the special synths, too. */ #ifdef OPT_GENERIC_DITHER -#define SYNTH_NAME synth_1to1_dither +#define SYNTH_NAME INT123_synth_1to1_dither /* We need the accurate sample writing... */ #undef WRITE_SAMPLE #define WRITE_SAMPLE(samples,sum,clip) WRITE_SHORT_SAMPLE_ACCURATE(samples,sum,clip) @@ -62,7 +62,7 @@ #ifdef OPT_X86 /* The i386-specific C code, here as short variant, later 8bit and float. */ #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_1to1_i386 +#define SYNTH_NAME INT123_synth_1to1_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -73,15 +73,15 @@ #ifdef OPT_I586 /* This is defined in assembler. */ -int synth_1to1_i586_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); +int INT123_synth_1to1_i586_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_i586(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_i586(real *bandPtr, int channel, mpg123_handle *fr, int final) { int ret; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif - ret = synth_1to1_i586_asm(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, &fr->bo, fr->decwin); + ret = INT123_synth_1to1_i586_asm(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, &fr->bo, fr->decwin); if(final) fr->buffer.fill += 128; return ret; } @@ -89,19 +89,19 @@ int synth_1to1_i586(real *bandPtr, int channel, mpg123_handle *fr, int final) #ifdef OPT_I586_DITHER /* This is defined in assembler. */ -int synth_1to1_i586_asm_dither(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin, float *dithernoise); +int INT123_synth_1to1_i586_asm_dither(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin, float *dithernoise); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_i586_dither(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_i586_dither(real *bandPtr, int channel, mpg123_handle *fr, int final) { int ret; int bo_dither[2]; /* Temporary workaround? Could expand the asm code. */ #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif /* Applying this hack, to change the asm only bit by bit (adding dithernoise pointer). */ bo_dither[0] = fr->bo; bo_dither[1] = fr->ditherindex; - ret = synth_1to1_i586_asm_dither(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, bo_dither, fr->decwin, fr->dithernoise); + ret = INT123_synth_1to1_i586_asm_dither(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, bo_dither, fr->decwin, fr->dithernoise); fr->bo = bo_dither[0]; fr->ditherindex = bo_dither[1]; @@ -112,18 +112,18 @@ int synth_1to1_i586_dither(real *bandPtr, int channel, mpg123_handle *fr, int fi #if defined(OPT_3DNOW) || defined(OPT_3DNOW_VINTAGE) /* Those are defined in assembler. */ -void do_equalizer_3dnow(real *bandPtr,int channel, real equalizer[2][32]); -int synth_1to1_3dnow_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); +void INT123_do_equalizer_3dnow(real *bandPtr,int channel, real equalizer[2][32]); +int INT123_synth_1to1_3dnow_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_3dnow(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_3dnow(real *bandPtr, int channel, mpg123_handle *fr, int final) { int ret; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer_3dnow(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer_3dnow(bandPtr,channel,fr->equalizer); #endif /* this is in asm, can be dither or not */ /* uh, is this return from pointer correct? */ - ret = (int) synth_1to1_3dnow_asm(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, &fr->bo, fr->decwin); + ret = (int) INT123_synth_1to1_3dnow_asm(bandPtr, channel, fr->buffer.data+fr->buffer.fill, fr->rawbuffs, &fr->bo, fr->decwin); if(final) fr->buffer.fill += 128; return ret; } @@ -131,15 +131,15 @@ int synth_1to1_3dnow(real *bandPtr, int channel, mpg123_handle *fr, int final) #ifdef OPT_MMX /* This is defined in assembler. */ -int synth_1to1_MMX(real *bandPtr, int channel, short *out, short *buffs, int *bo, float *decwins); +int INT123_synth_1to1_MMX(real *bandPtr, int channel, short *out, short *buffs, int *bo, float *decwins); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_mmx(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_mmx(real *bandPtr, int channel, mpg123_handle *fr, int final) { #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif /* in asm */ - synth_1to1_MMX(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); + INT123_synth_1to1_MMX(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); if(final) fr->buffer.fill += 128; return 0; } @@ -148,18 +148,18 @@ int synth_1to1_mmx(real *bandPtr, int channel, mpg123_handle *fr, int final) #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) #ifdef ACCURATE_ROUNDING /* This is defined in assembler. */ -int synth_1to1_sse_accurate_asm(real *window, real *b0, short *samples, int bo1); -int synth_1to1_s_sse_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); -void dct64_real_sse(real *out0, real *out1, real *samples); +int INT123_synth_1to1_sse_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_s_sse_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); +void INT123_dct64_real_sse(real *out0, real *out1, real *samples); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -177,23 +177,23 @@ int synth_1to1_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_sse_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_sse_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -203,8 +203,8 @@ int synth_1to1_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -217,19 +217,19 @@ int synth_1to1_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_sse_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_sse_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -237,14 +237,14 @@ int synth_1to1_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) } #else /* This is defined in assembler. */ -void synth_1to1_sse_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin); +void INT123_synth_1to1_sse_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_sse(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_sse(real *bandPtr, int channel, mpg123_handle *fr, int final) { #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif - synth_1to1_sse_asm(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); + INT123_synth_1to1_sse_asm(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); if(final) fr->buffer.fill += 128; return 0; } @@ -253,14 +253,14 @@ int synth_1to1_sse(real *bandPtr, int channel, mpg123_handle *fr, int final) #if defined(OPT_3DNOWEXT) || defined(OPT_3DNOWEXT_VINTAGE) /* This is defined in assembler. */ -void synth_1to1_3dnowext_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin); +void INT123_synth_1to1_3dnowext_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_3dnowext(real *bandPtr, int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_3dnowext(real *bandPtr, int channel, mpg123_handle *fr, int final) { #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif - synth_1to1_3dnowext_asm(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); + INT123_synth_1to1_3dnowext_asm(bandPtr, channel, (short*) (fr->buffer.data+fr->buffer.fill), (short *) fr->rawbuffs, &fr->bo, fr->decwins); if(final) fr->buffer.fill += 128; return 0; } @@ -269,11 +269,11 @@ int synth_1to1_3dnowext(real *bandPtr, int channel, mpg123_handle *fr, int final #ifdef OPT_X86_64 #ifdef ACCURATE_ROUNDING /* Assembler routines. */ -int synth_1to1_x86_64_accurate_asm(real *window, real *b0, short *samples, int bo1); -int synth_1to1_s_x86_64_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); -void dct64_real_x86_64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_x86_64_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_s_x86_64_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); +void INT123_dct64_real_x86_64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -281,7 +281,7 @@ int synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -299,23 +299,23 @@ int synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_x86_64_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_x86_64_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -325,8 +325,8 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -339,19 +339,19 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_x86_64_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_x86_64_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -359,18 +359,18 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr } #else /* This is defined in assembler. */ -int synth_1to1_x86_64_asm(short *window, short *b0, short *samples, int bo1); -int synth_1to1_s_x86_64_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); -void dct64_x86_64(short *out0, short *out1, real *samples); +int INT123_synth_1to1_x86_64_asm(short *window, short *b0, short *samples, int bo1); +int INT123_synth_1to1_s_x86_64_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); +void INT123_dct64_x86_64(short *out0, short *out1, real *samples); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0, **buf; int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -388,23 +388,23 @@ int synth_1to1_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_x86_64_asm((short *)fr->decwins, b0, samples, bo1); + clip = INT123_synth_1to1_x86_64_asm((short *)fr->decwins, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_x86_64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_x86_64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0l, *b0r, **bufl, **bufr; @@ -413,8 +413,8 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -427,19 +427,19 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_x86_64_asm((short *)fr->decwins, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_x86_64_asm((short *)fr->decwins, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -452,12 +452,12 @@ int synth_1to1_stereo_x86_64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifdef ACCURATE_ROUNDING /* Assembler routines. */ #ifndef OPT_X86_64 -int synth_1to1_x86_64_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_x86_64_accurate_asm(real *window, real *b0, short *samples, int bo1); #endif -int synth_1to1_s_avx_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); -void dct64_real_avx(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s_avx_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); +void INT123_dct64_real_avx(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -465,7 +465,7 @@ int synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -483,23 +483,23 @@ int synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_x86_64_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_x86_64_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -509,8 +509,8 @@ int synth_1to1_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -523,19 +523,19 @@ int synth_1to1_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_avx_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_avx_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -544,19 +544,19 @@ int synth_1to1_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #else /* This is defined in assembler. */ #ifndef OPT_X86_64 -int synth_1to1_x86_64_asm(short *window, short *b0, short *samples, int bo1); +int INT123_synth_1to1_x86_64_asm(short *window, short *b0, short *samples, int bo1); #endif -int synth_1to1_s_avx_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); -void dct64_avx(short *out0, short *out1, real *samples); +int INT123_synth_1to1_s_avx_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); +void INT123_dct64_avx(short *out0, short *out1, real *samples); /* This is just a hull to use the mpg123 handle. */ -int synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0, **buf; int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -574,23 +574,23 @@ int synth_1to1_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_x86_64_asm((short *)fr->decwins, b0, samples, bo1); + clip = INT123_synth_1to1_x86_64_asm((short *)fr->decwins, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_avx(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_avx(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0l, *b0r, **bufl, **bufr; @@ -599,8 +599,8 @@ int synth_1to1_stereo_avx(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -613,19 +613,19 @@ int synth_1to1_stereo_avx(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_avx_asm((short *)fr->decwins, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_avx_asm((short *)fr->decwins, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -637,9 +637,9 @@ int synth_1to1_stereo_avx(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_ARM #ifdef ACCURATE_ROUNDING /* Assembler routines. */ -int synth_1to1_arm_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_arm_accurate_asm(real *window, real *b0, short *samples, int bo1); /* Hull for C mpg123 API */ -int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -647,7 +647,7 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -665,16 +665,16 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_arm_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_arm_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; @@ -682,9 +682,9 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) } #else /* Assembler routines. */ -int synth_1to1_arm_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_arm_asm(real *window, real *b0, short *samples, int bo1); /* Hull for C mpg123 API */ -int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -692,7 +692,7 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -710,16 +710,16 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_arm_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_arm_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; @@ -731,11 +731,11 @@ int synth_1to1_arm(real *bandPtr,int channel, mpg123_handle *fr, int final) #ifdef OPT_NEON #ifdef ACCURATE_ROUNDING /* This is defined in assembler. */ -int synth_1to1_neon_accurate_asm(real *window, real *b0, short *samples, int bo1); -int synth_1to1_s_neon_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); -void dct64_real_neon(real *out0, real *out1, real *samples); +int INT123_synth_1to1_neon_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_s_neon_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); +void INT123_dct64_real_neon(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -743,7 +743,7 @@ int synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -761,23 +761,23 @@ int synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_neon_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_neon_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -787,8 +787,8 @@ int synth_1to1_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -801,19 +801,19 @@ int synth_1to1_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_neon_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_neon_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -821,18 +821,18 @@ int synth_1to1_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) } #else /* This is defined in assembler. */ -int synth_1to1_neon_asm(short *window, short *b0, short *samples, int bo1); -int synth_1to1_s_neon_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); -void dct64_neon(short *out0, short *out1, real *samples); +int INT123_synth_1to1_neon_asm(short *window, short *b0, short *samples, int bo1); +int INT123_synth_1to1_s_neon_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); +void INT123_dct64_neon(short *out0, short *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0, **buf; int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -850,23 +850,23 @@ int synth_1to1_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_neon_asm((short *)fr->decwins, b0, samples, bo1); + clip = INT123_synth_1to1_neon_asm((short *)fr->decwins, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_neon(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_neon(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0l, *b0r, **bufl, **bufr; @@ -875,8 +875,8 @@ int synth_1to1_stereo_neon(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -889,19 +889,19 @@ int synth_1to1_stereo_neon(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_neon_asm((short *)fr->decwins, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_neon_asm((short *)fr->decwins, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -913,11 +913,11 @@ int synth_1to1_stereo_neon(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_NEON64 #ifdef ACCURATE_ROUNDING /* This is defined in assembler. */ -int synth_1to1_neon64_accurate_asm(real *window, real *b0, short *samples, int bo1); -int synth_1to1_s_neon64_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); -void dct64_real_neon64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_neon64_accurate_asm(real *window, real *b0, short *samples, int bo1); +int INT123_synth_1to1_s_neon64_accurate_asm(real *window, real *b0l, real *b0r, short *samples, int bo1); +void INT123_dct64_real_neon64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -925,7 +925,7 @@ int synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -943,23 +943,23 @@ int synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_neon64_accurate_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_neon64_accurate_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -969,8 +969,8 @@ int synth_1to1_stereo_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -983,19 +983,19 @@ int synth_1to1_stereo_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_neon64_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_neon64_accurate_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -1003,18 +1003,18 @@ int synth_1to1_stereo_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr } #else /* This is defined in assembler. */ -int synth_1to1_neon64_asm(short *window, short *b0, short *samples, int bo1); -int synth_1to1_s_neon64_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); -void dct64_neon64(short *out0, short *out1, real *samples); +int INT123_synth_1to1_neon64_asm(short *window, short *b0, short *samples, int bo1); +int INT123_synth_1to1_s_neon64_asm(short *window, short *b0l, short *b0r, short *samples, int bo1); +void INT123_dct64_neon64(short *out0, short *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0, **buf; int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -1032,23 +1032,23 @@ int synth_1to1_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_neon64_asm((short *)fr->decwins, b0, samples, bo1); + clip = INT123_synth_1to1_neon64_asm((short *)fr->decwins, b0, samples, bo1); if(final) fr->buffer.fill += 128; return clip; } -int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); short *b0l, *b0r, **bufl, **bufr; @@ -1057,8 +1057,8 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -1071,19 +1071,19 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s_neon64_asm((short *)fr->decwins, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s_neon64_asm((short *)fr->decwins, b0l, b0r, samples, bo1); fr->buffer.fill += 128; @@ -1100,12 +1100,12 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x20 /* One decoding block is 32 samples. */ -#define SYNTH_NAME synth_2to1 +#define SYNTH_NAME INT123_synth_2to1 #include "synth.h" #undef SYNTH_NAME #ifdef OPT_DITHER /* Used for generic_dither and as fallback for i586_dither. */ -#define SYNTH_NAME synth_2to1_dither +#define SYNTH_NAME INT123_synth_2to1_dither #define USE_DITHER #include "synth.h" #undef USE_DITHER @@ -1113,8 +1113,8 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #endif #define SYNTH_NAME fr->synths.plain[r_2to1][f_16] -#define MONO_NAME synth_2to1_mono -#define MONO2STEREO_NAME synth_2to1_m2s +#define MONO_NAME INT123_synth_2to1_mono +#define MONO2STEREO_NAME INT123_synth_2to1_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -1122,7 +1122,7 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_2to1_i386 +#define SYNTH_NAME INT123_synth_2to1_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -1137,12 +1137,12 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x10 /* One decoding block is 16 samples. */ -#define SYNTH_NAME synth_4to1 +#define SYNTH_NAME INT123_synth_4to1 #include "synth.h" #undef SYNTH_NAME #ifdef OPT_DITHER -#define SYNTH_NAME synth_4to1_dither +#define SYNTH_NAME INT123_synth_4to1_dither #define USE_DITHER #include "synth.h" #undef USE_DITHER @@ -1150,8 +1150,8 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #endif #define SYNTH_NAME fr->synths.plain[r_4to1][f_16] /* This is just for the _i386 one... gotta check if it is really useful... */ -#define MONO_NAME synth_4to1_mono -#define MONO2STEREO_NAME synth_4to1_m2s +#define MONO_NAME INT123_synth_4to1_mono +#define MONO2STEREO_NAME INT123_synth_4to1_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -1159,7 +1159,7 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_4to1_i386 +#define SYNTH_NAME INT123_synth_4to1_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -1173,13 +1173,13 @@ int synth_1to1_stereo_neon64(real *bandPtr_l,real *bandPtr_r, mpg123_handle *fr) #ifndef NO_NTOM /* Part 1d: ntom synth. - Same procedure as above... Just no extra play anymore, straight synth that uses the plain dct64. + Same procedure as above... Just no extra play anymore, straight synth that uses the plain INT123_dct64. */ /* These are all in one header, there's no flexibility to gain. */ -#define SYNTH_NAME synth_ntom -#define MONO_NAME synth_ntom_mono -#define MONO2STEREO_NAME synth_ntom_m2s +#define SYNTH_NAME INT123_synth_ntom +#define MONO_NAME INT123_synth_ntom_mono +#define MONO2STEREO_NAME INT123_synth_ntom_m2s #include "synth_ntom.h" #undef SYNTH_NAME #undef MONO_NAME diff --git a/src/libmpg123/synth.h b/src/libmpg123/synth.h index 87dd007..ead63df 100644 --- a/src/libmpg123/synth.h +++ b/src/libmpg123/synth.h @@ -20,15 +20,15 @@ */ -/* Main synth function, uses the plain dct64 or dct64_i386. */ +/* Main synth function, uses the plain INT123_dct64 or INT123_dct64_i386. */ int SYNTH_NAME(real *bandPtr, int channel, mpg123_handle *fr, int final) { #ifndef NO_AUTOINCREMENT #define BACKPEDAL 0x10 /* We use autoincrement and thus need this re-adjustment for window/b0. */ -#define MY_DCT64 dct64 +#define MY_DCT64 INT123_dct64 #else #define BACKPEDAL 0x00 /* i386 code does not need that. */ -#define MY_DCT64 dct64_i386 +#define MY_DCT64 INT123_dct64_i386 #endif static const int step = 2; SAMPLE_T *samples = (SAMPLE_T *) (fr->buffer.data + fr->buffer.fill); @@ -37,7 +37,7 @@ int SYNTH_NAME(real *bandPtr, int channel, mpg123_handle *fr, int final) int clip = 0; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { diff --git a/src/libmpg123/synth_3dnow.S b/src/libmpg123/synth_3dnow.S index 8e306ae..3af7553 100644 --- a/src/libmpg123/synth_3dnow.S +++ b/src/libmpg123/synth_3dnow.S @@ -52,9 +52,9 @@ ftoi_magic: #endif .text ALIGN16 -.globl ASM_NAME(synth_1to1_3dnow_asm) +.globl ASM_NAME(INT123_synth_1to1_3dnow_asm) /* int synth_1to1_3dnow_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); */ -ASM_NAME(synth_1to1_3dnow_asm): +ASM_NAME(INT123_synth_1to1_3dnow_asm): subl $24,%esp pushl %ebp pushl %edi @@ -122,7 +122,7 @@ ASM_NAME(synth_1to1_3dnow_asm): leal 1088(,%eax,4),%eax addl %ebx,%eax pushl %eax - call FUNC(dct64_3dnow) + call FUNC(INT123_dct64_3dnow) addl $12,%esp jmp .L29 .L28: @@ -136,7 +136,7 @@ ASM_NAME(synth_1to1_3dnow_asm): sall $2,%esi leal (%ecx,%edx,4),%eax pushl %eax - call FUNC(dct64_3dnow) + call FUNC(INT123_dct64_3dnow) addl $12,%esp movl %esi,LOCAL1 .L29: @@ -337,8 +337,8 @@ ASM_NAME(synth_1to1_3dnow_asm): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_3dnow: - .indirect_symbol ASM_NAME(dct64_3dnow) +FUNC(INT123_dct64_3dnow): + .indirect_symbol ASM_NAME(INT123_dct64_3dnow) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_3dnowext.S b/src/libmpg123/synth_3dnowext.S index 77eff75..f2dd8ef 100644 --- a/src/libmpg123/synth_3dnowext.S +++ b/src/libmpg123/synth_3dnowext.S @@ -1,12 +1,12 @@ #include "mangle.h" -#define MPL_DCT64 FUNC(dct64_3dnowext) -#define SYNTH_NAME ASM_NAME(synth_1to1_3dnowext_asm) +#define MPL_DCT64 FUNC(INT123_dct64_3dnowext) +#define SYNTH_NAME ASM_NAME(INT123_synth_1to1_3dnowext_asm) #include "synth_sse3d.h" #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_3dnowext: - .indirect_symbol ASM_NAME(dct64_3dnowext) +FUNC(INT123_dct64_3dnowext): + .indirect_symbol ASM_NAME(INT123_dct64_3dnowext) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_8bit.c b/src/libmpg123/synth_8bit.c index 8a9a55f..966aa17 100644 --- a/src/libmpg123/synth_8bit.c +++ b/src/libmpg123/synth_8bit.c @@ -13,7 +13,7 @@ /* Part 2: All synth functions that produce 8bit output. What we need is just a special WRITE_SAMPLE. For the generic and i386 functions, that is. - For the rather optimized synth_1to1, we will need the postprocessing 8bit converters from synth_8bit.h . + For the rather optimized INT123_synth_1to1, we will need the postprocessing 8bit converters from synth_8bit.h . */ #define SAMPLE_T unsigned char @@ -22,14 +22,14 @@ /* Part 2a: All straight 1to1 decoding functions */ #define BLOCK 0x40 /* One decoding block is 64 samples. */ -#define SYNTH_NAME synth_1to1_8bit +#define SYNTH_NAME INT123_synth_1to1_8bit #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_1to1_8bit (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_1to1_8bit (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_1to1][f_8] -#define MONO_NAME synth_1to1_8bit_mono -#define MONO2STEREO_NAME synth_1to1_8bit_m2s +#define MONO_NAME INT123_synth_1to1_8bit_mono +#define MONO2STEREO_NAME INT123_synth_1to1_8bit_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -37,20 +37,20 @@ #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_1to1_8bit_i386 +#define SYNTH_NAME INT123_synth_1to1_8bit_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ #undef NO_AUTOINCREMENT #endif -/* But now, we need functions that take the 16bit output of optimized synth_1to1 and convert it. +/* But now, we need functions that take the 16bit output of optimized INT123_synth_1to1 and convert it. I suppose that is still faster than dropping the optimization altogether! */ #define BASE_SYNTH_NAME fr->synths.plain[r_1to1][f_16] -#define SYNTH_NAME synth_1to1_8bit_wrap -#define MONO_NAME synth_1to1_8bit_wrap_mono -#define MONO2STEREO_NAME synth_1to1_8bit_wrap_m2s +#define SYNTH_NAME INT123_synth_1to1_8bit_wrap +#define MONO_NAME INT123_synth_1to1_8bit_wrap_mono +#define MONO2STEREO_NAME INT123_synth_1to1_8bit_wrap_m2s #include "synth_8bit.h" #undef BASE_SYNTH_NAME #undef SYNTH_NAME @@ -66,14 +66,14 @@ */ #define BLOCK 0x20 /* One decoding block is 32 samples. */ -#define SYNTH_NAME synth_2to1_8bit +#define SYNTH_NAME INT123_synth_2to1_8bit #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_2to1_8bit (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_2to1_8bit (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_2to1][f_8] -#define MONO_NAME synth_2to1_8bit_mono -#define MONO2STEREO_NAME synth_2to1_8bit_m2s +#define MONO_NAME INT123_synth_2to1_8bit_mono +#define MONO2STEREO_NAME INT123_synth_2to1_8bit_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -81,7 +81,7 @@ #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_2to1_8bit_i386 +#define SYNTH_NAME INT123_synth_2to1_8bit_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -95,14 +95,14 @@ */ #define BLOCK 0x10 /* One decoding block is 16 samples. */ -#define SYNTH_NAME synth_4to1_8bit +#define SYNTH_NAME INT123_synth_4to1_8bit #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_4to1_8bit (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_4to1_8bit (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_4to1][f_8] -#define MONO_NAME synth_4to1_8bit_mono -#define MONO2STEREO_NAME synth_4to1_8bit_m2s +#define MONO_NAME INT123_synth_4to1_8bit_mono +#define MONO2STEREO_NAME INT123_synth_4to1_8bit_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -110,7 +110,7 @@ #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_4to1_8bit_i386 +#define SYNTH_NAME INT123_synth_4to1_8bit_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -124,13 +124,13 @@ #ifndef NO_NTOM /* Part 2d: ntom synth. - Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64. + Same procedure as above... Just no extra play anymore, straight synth that may use an optimized INT123_dct64. */ /* These are all in one header, there's no flexibility to gain. */ -#define SYNTH_NAME synth_ntom_8bit -#define MONO_NAME synth_ntom_8bit_mono -#define MONO2STEREO_NAME synth_ntom_8bit_m2s +#define SYNTH_NAME INT123_synth_ntom_8bit +#define MONO_NAME INT123_synth_ntom_8bit_mono +#define MONO2STEREO_NAME INT123_synth_ntom_8bit_m2s #include "synth_ntom.h" #undef SYNTH_NAME #undef MONO_NAME diff --git a/src/libmpg123/synth_8bit.h b/src/libmpg123/synth_8bit.h index e518d4f..c49773d 100644 --- a/src/libmpg123/synth_8bit.h +++ b/src/libmpg123/synth_8bit.h @@ -7,7 +7,7 @@ Only variable is the BLOCK size to choose 1to1, 2to1 or 4to1. Oh, and the names: BASE_SYNTH_NAME, SYNTH_NAME, MONO_NAME, MONO2STEREO_NAME - (p.ex. opt_synth_1to1(fr), synth_1to1_8bit, synth_1to1_8bit_mono, ...). + (p.ex. opt_synth_1to1(fr), INT123_synth_1to1_8bit, INT123_synth_1to1_8bit_mono, ...). */ int SYNTH_NAME(real *bandPtr, int channel, mpg123_handle *fr, int final) diff --git a/src/libmpg123/synth_altivec.c b/src/libmpg123/synth_altivec.c index e1f3ea1..dc73cd0 100644 --- a/src/libmpg123/synth_altivec.c +++ b/src/libmpg123/synth_altivec.c @@ -255,7 +255,7 @@ vsum4 = vec_mergel(v3,v4); \ vsum8 = vec_mergel(v7,v8); -int synth_1to1_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) +int INT123_synth_1to1_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -263,7 +263,7 @@ int synth_1to1_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -281,13 +281,13 @@ int synth_1to1_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } @@ -386,7 +386,7 @@ int synth_1to1_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) return clip; } -int synth_1to1_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); @@ -396,8 +396,8 @@ int synth_1to1_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -410,16 +410,16 @@ int synth_1to1_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } @@ -537,14 +537,14 @@ int synth_1to1_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f return clip; } -int synth_1to1_real_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) +int INT123_synth_1to1_real_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -562,13 +562,13 @@ int synth_1to1_real_altivec(real *bandPtr,int channel,mpg123_handle *fr, int fin { b0 = buf[0]; bo1 = fr->bo; - dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } @@ -653,7 +653,7 @@ int synth_1to1_real_altivec(real *bandPtr,int channel,mpg123_handle *fr, int fin return 0; } -int synth_1to1_fltst_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_fltst_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -662,8 +662,8 @@ int synth_1to1_fltst_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -676,16 +676,16 @@ int synth_1to1_fltst_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } @@ -765,7 +765,7 @@ int synth_1to1_fltst_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr return 0; } -int synth_1to1_s32_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_altivec(real *bandPtr,int channel,mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -773,7 +773,7 @@ int synth_1to1_s32_altivec(real *bandPtr,int channel,mpg123_handle *fr, int fina int clip; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -791,13 +791,13 @@ int synth_1to1_s32_altivec(real *bandPtr,int channel,mpg123_handle *fr, int fina { b0 = buf[0]; bo1 = fr->bo; - dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } @@ -907,7 +907,7 @@ int synth_1to1_s32_altivec(real *bandPtr,int channel,mpg123_handle *fr, int fina } -int synth_1to1_s32_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -917,8 +917,8 @@ int synth_1to1_s32_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handl #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -931,16 +931,16 @@ int synth_1to1_s32_stereo_altivec(real *bandPtr_l, real *bandPtr_r, mpg123_handl b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } diff --git a/src/libmpg123/synth_arm.S b/src/libmpg123/synth_arm.S index c5ea88c..5724656 100644 --- a/src/libmpg123/synth_arm.S +++ b/src/libmpg123/synth_arm.S @@ -23,11 +23,11 @@ .text ALIGN4 - .globl ASM_NAME(synth_1to1_arm_asm) + .globl ASM_NAME(INT123_synth_1to1_arm_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_arm_asm), %function + .type ASM_NAME(INT123_synth_1to1_arm_asm), %function #endif -ASM_NAME(synth_1to1_arm_asm): +ASM_NAME(INT123_synth_1to1_arm_asm): stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} add WINDOW, WINDOW, #64 diff --git a/src/libmpg123/synth_arm_accurate.S b/src/libmpg123/synth_arm_accurate.S index 481aa1b..d0d21e3 100644 --- a/src/libmpg123/synth_arm_accurate.S +++ b/src/libmpg123/synth_arm_accurate.S @@ -23,11 +23,11 @@ .text ALIGN4 - .globl ASM_NAME(synth_1to1_arm_accurate_asm) + .globl ASM_NAME(INT123_synth_1to1_arm_accurate_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_arm_accurate_asm), %function + .type ASM_NAME(INT123_synth_1to1_arm_accurate_asm), %function #endif -ASM_NAME(synth_1to1_arm_accurate_asm): +ASM_NAME(INT123_synth_1to1_arm_accurate_asm): stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr} add WINDOW, WINDOW, #64 diff --git a/src/libmpg123/synth_i486.c b/src/libmpg123/synth_i486.c index 01b0119..338e17e 100644 --- a/src/libmpg123/synth_i486.c +++ b/src/libmpg123/synth_i486.c @@ -105,7 +105,7 @@ b0+=FIR_BUFFER_SIZE;\ } -int absynth_1to1_i486(real *bandPtr, int channel, mpg123_handle *fr, int nb_blocks) +int INT123_absynth_1to1_i486(real *bandPtr, int channel, mpg123_handle *fr, int nb_blocks) { short *samples = (short *) (fr->buffer.data+fr->buffer.fill); int *b0,**buf; @@ -142,9 +142,9 @@ int absynth_1to1_i486(real *bandPtr, int channel, mpg123_handle *fr, int nb_bloc } if(b & 1) { - dct64_i486(buf[1]+b,buf[0]+b,bandPtr); + INT123_dct64_i486(buf[1]+b,buf[0]+b,bandPtr); } else { - dct64_i486(buf[0]+b,buf[1]+b,bandPtr); + INT123_dct64_i486(buf[0]+b,buf[1]+b,bandPtr); } bandPtr+=32; } diff --git a/src/libmpg123/synth_i586.S b/src/libmpg123/synth_i586.S index 37f0dbf..48ae755 100644 --- a/src/libmpg123/synth_i586.S +++ b/src/libmpg123/synth_i586.S @@ -45,8 +45,8 @@ ALIGN8 .text /* int synth_1to1_i586_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin); */ -.globl ASM_NAME(synth_1to1_i586_asm) -ASM_NAME(synth_1to1_i586_asm): +.globl ASM_NAME(INT123_synth_1to1_i586_asm) +ASM_NAME(INT123_synth_1to1_i586_asm): subl $12,%esp pushl %ebp pushl %edi @@ -96,7 +96,7 @@ ASM_NAME(synth_1to1_i586_asm): leal (%ecx,%ebp,4),%eax .L74: pushl %eax - call FUNC(dct64_i386) + call FUNC(INT123_dct64_i386) addl $12,%esp /* stack now back on track */ movl 16(%esp),%edx @@ -335,8 +335,8 @@ ASM_NAME(synth_1to1_i586_asm): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_i386: - .indirect_symbol ASM_NAME(dct64_i386) +FUNC(INT123_dct64_i386): + .indirect_symbol ASM_NAME(INT123_dct64_i386) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_i586_dither.S b/src/libmpg123/synth_i586_dither.S index 7cbc35f..aae2020 100644 --- a/src/libmpg123/synth_i586_dither.S +++ b/src/libmpg123/synth_i586_dither.S @@ -26,8 +26,8 @@ ALIGN8 .text /* int synth_1to1_i586_asm_dither(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int bo_and_ditherindex[2], real *decwin, real* dithernoise); */ -.globl ASM_NAME(synth_1to1_i586_asm_dither) -ASM_NAME(synth_1to1_i586_asm_dither): +.globl ASM_NAME(INT123_synth_1to1_i586_asm_dither) +ASM_NAME(INT123_synth_1to1_i586_asm_dither): subl $16,%esp pushl %ebp pushl %edi @@ -41,7 +41,7 @@ ASM_NAME(synth_1to1_i586_asm_dither): #define BO 52(%esp) #define DECWIN 56(%esp) #define DITHERNOISE 60(%esp) -/*#define DITHERNOISE $(ASM_NAME(dithernoise))*/ +/*#define DITHERNOISE $(ASM_NAME(INT123_dithernoise))*/ #define LOC0 16(%esp) #define LOC1 20(%esp) #define LOC2 24(%esp) @@ -98,7 +98,7 @@ ASM_NAME(synth_1to1_i586_asm_dither): leal (%ecx,%ebp,4),%eax .L74: pushl %eax - call FUNC(dct64_i386) + call FUNC(INT123_dct64_i386) addl $12,%esp /* Now removed the parameters. stack: 0(%esp)=%ebx 4=esi 8=edi 12=ebp 16,20,24,28=local 32=back 36=bandptr 40=channel 44=out 48=buffs 52=bo 56=decwin 60=dithernoise */ @@ -374,8 +374,8 @@ ASM_NAME(synth_1to1_i586_asm_dither): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_i386: - .indirect_symbol ASM_NAME(dct64_i386) +FUNC(INT123_dct64_i386): + .indirect_symbol ASM_NAME(INT123_dct64_i386) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_mmx.S b/src/libmpg123/synth_mmx.S index e57e4f0..f19477c 100644 --- a/src/libmpg123/synth_mmx.S +++ b/src/libmpg123/synth_mmx.S @@ -24,9 +24,9 @@ .text -.globl ASM_NAME(synth_1to1_MMX) +.globl ASM_NAME(INT123_synth_1to1_MMX) /* int synth_1to1_MMX(real *bandPtr, int channel, short *out, short *buffs, int *bo, float *decwins); */ -ASM_NAME(synth_1to1_MMX): +ASM_NAME(INT123_synth_1to1_MMX): pushl %ebp pushl %edi pushl %esi @@ -61,7 +61,7 @@ ASM_NAME(synth_1to1_MMX): 2: pushl %edx pushl %ecx - call FUNC(dct64_MMX) + call FUNC(INT123_dct64_MMX) addl $12,%esp /* stack like before, pushed 3, incremented again */ leal 1(%ebx), %ecx @@ -133,8 +133,8 @@ ASM_NAME(synth_1to1_MMX): #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_MMX: - .indirect_symbol ASM_NAME(dct64_MMX) +FUNC(INT123_dct64_MMX): + .indirect_symbol ASM_NAME(INT123_dct64_MMX) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_mono.h b/src/libmpg123/synth_mono.h index 907aa25..ddb07d6 100644 --- a/src/libmpg123/synth_mono.h +++ b/src/libmpg123/synth_mono.h @@ -13,7 +13,7 @@ This is what resulted... Reason to separate this from synth.h: - There are decoders that have a special synth_1to1 but still can use these generic derivations for the mono stuff. + There are decoders that have a special INT123_synth_1to1 but still can use these generic derivations for the mono stuff. It generally makes a good deal of sense to set SYNTH_NAME to opt_synth_1to1(fr) (or opt_synth_2to1(fr), etc.). */ diff --git a/src/libmpg123/synth_neon.S b/src/libmpg123/synth_neon.S index eace315..a019154 100644 --- a/src/libmpg123/synth_neon.S +++ b/src/libmpg123/synth_neon.S @@ -25,12 +25,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_neon_asm): +ASM_NAME(INT123_synth_1to1_neon_asm): push {r4-r5, lr} vpush {q4-q7} diff --git a/src/libmpg123/synth_neon64.S b/src/libmpg123/synth_neon64.S index 68d43a5..2ef6a1f 100644 --- a/src/libmpg123/synth_neon64.S +++ b/src/libmpg123/synth_neon64.S @@ -19,11 +19,11 @@ maxmin_s16: .word -32768 .text ALIGN4 - .globl ASM_NAME(synth_1to1_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_neon64_asm), %function #endif -ASM_NAME(synth_1to1_neon64_asm): +ASM_NAME(INT123_synth_1to1_neon64_asm): add x0, x0, #32 sub x0, x0, x3, lsl #1 eor v31.16b, v31.16b, v31.16b diff --git a/src/libmpg123/synth_neon64_accurate.S b/src/libmpg123/synth_neon64_accurate.S index 3cbb317..dda77f1 100644 --- a/src/libmpg123/synth_neon64_accurate.S +++ b/src/libmpg123/synth_neon64_accurate.S @@ -19,11 +19,11 @@ maxmin_s16: .word -956301312 .text ALIGN4 - .globl ASM_NAME(synth_1to1_neon64_accurate_asm) + .globl ASM_NAME(INT123_synth_1to1_neon64_accurate_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_neon64_accurate_asm), %function + .type ASM_NAME(INT123_synth_1to1_neon64_accurate_asm), %function #endif -ASM_NAME(synth_1to1_neon64_accurate_asm): +ASM_NAME(INT123_synth_1to1_neon64_accurate_asm): add x0, x0, #64 sub x0, x0, x3, lsl #2 eor v31.16b, v31.16b, v31.16b diff --git a/src/libmpg123/synth_neon64_float.S b/src/libmpg123/synth_neon64_float.S index 0cedae3..af1695f 100644 --- a/src/libmpg123/synth_neon64_float.S +++ b/src/libmpg123/synth_neon64_float.S @@ -18,11 +18,11 @@ scale: .word 939524096 .text ALIGN4 - .globl ASM_NAME(synth_1to1_real_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_real_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_real_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_real_neon64_asm), %function #endif -ASM_NAME(synth_1to1_real_neon64_asm): +ASM_NAME(INT123_synth_1to1_real_neon64_asm): add x0, x0, #64 sub x0, x0, x3, lsl #2 adrp x5, AARCH64_PCREL_HI(scale) diff --git a/src/libmpg123/synth_neon64_s32.S b/src/libmpg123/synth_neon64_s32.S index 917c946..f017415 100644 --- a/src/libmpg123/synth_neon64_s32.S +++ b/src/libmpg123/synth_neon64_s32.S @@ -20,11 +20,11 @@ maxmin_s32: .word 1199570944 .text ALIGN4 - .globl ASM_NAME(synth_1to1_s32_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_s32_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s32_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_s32_neon64_asm), %function #endif -ASM_NAME(synth_1to1_s32_neon64_asm): +ASM_NAME(INT123_synth_1to1_s32_neon64_asm): add x0, x0, #64 sub x0, x0, x3, lsl #2 eor v31.16b, v31.16b, v31.16b diff --git a/src/libmpg123/synth_neon_accurate.S b/src/libmpg123/synth_neon_accurate.S index 501223f..df60685 100644 --- a/src/libmpg123/synth_neon_accurate.S +++ b/src/libmpg123/synth_neon_accurate.S @@ -23,11 +23,11 @@ #endif .text - .globl ASM_NAME(synth_1to1_neon_accurate_asm) + .globl ASM_NAME(INT123_synth_1to1_neon_accurate_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_neon_accurate_asm), %function + .type ASM_NAME(INT123_synth_1to1_neon_accurate_asm), %function #endif -ASM_NAME(synth_1to1_neon_accurate_asm): +ASM_NAME(INT123_synth_1to1_neon_accurate_asm): push {r4-r6, lr} vpush {q4-q7} mov r6, sp diff --git a/src/libmpg123/synth_neon_float.S b/src/libmpg123/synth_neon_float.S index 15ead4e..99a5d21 100644 --- a/src/libmpg123/synth_neon_float.S +++ b/src/libmpg123/synth_neon_float.S @@ -25,12 +25,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_real_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_real_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_real_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_real_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_real_neon_asm): +ASM_NAME(INT123_synth_1to1_real_neon_asm): push {r4-r5, lr} vpush {q4-q7} diff --git a/src/libmpg123/synth_neon_s32.S b/src/libmpg123/synth_neon_s32.S index 7068baf..334a137 100644 --- a/src/libmpg123/synth_neon_s32.S +++ b/src/libmpg123/synth_neon_s32.S @@ -25,12 +25,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_s32_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_s32_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s32_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_s32_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_s32_neon_asm): +ASM_NAME(INT123_synth_1to1_s32_neon_asm): push {r4-r6, lr} vpush {q4-q7} mov r6, sp diff --git a/src/libmpg123/synth_ntom.h b/src/libmpg123/synth_ntom.h index 4554d21..6796dbe 100644 --- a/src/libmpg123/synth_ntom.h +++ b/src/libmpg123/synth_ntom.h @@ -1,5 +1,5 @@ /* - synth_ntom.h: ntom-resampling synth functions + This header is used multiple times to create different variants of this function. Hint: MONO_NAME, MONO2STEREO_NAME, SYNTH_NAME and SAMPLE_T as well as WRITE_SAMPLE do vary. @@ -73,33 +73,33 @@ int SYNTH_NAME(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int ntom; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { fr->bo--; fr->bo &= 0xf; buf = fr->real_buffs[0]; - ntom = fr->ntom_val[1] = fr->ntom_val[0]; + ntom = fr->INT123_ntom_val[1] = fr->INT123_ntom_val[0]; } else { samples++; buf = fr->real_buffs[1]; - ntom = fr->ntom_val[1]; + ntom = fr->INT123_ntom_val[1]; } if(fr->bo & 0x1) { b0 = buf[0]; bo1 = fr->bo; - dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } { @@ -205,7 +205,7 @@ int SYNTH_NAME(real *bandPtr,int channel, mpg123_handle *fr, int final) } } - fr->ntom_val[channel] = ntom; + fr->INT123_ntom_val[channel] = ntom; if(final) fr->buffer.fill = ((unsigned char *) samples - fr->buffer.data - (channel ? sizeof(SAMPLE_T) : 0)); return clip; diff --git a/src/libmpg123/synth_real.c b/src/libmpg123/synth_real.c index fe8cf86..703e4fa 100644 --- a/src/libmpg123/synth_real.c +++ b/src/libmpg123/synth_real.c @@ -25,14 +25,14 @@ /* Part 3a: All straight 1to1 decoding functions */ #define BLOCK 0x40 /* One decoding block is 64 samples. */ -#define SYNTH_NAME synth_1to1_real +#define SYNTH_NAME INT123_synth_1to1_real #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_1to1_real (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_1to1_real (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_1to1][f_real] -#define MONO_NAME synth_1to1_real_mono -#define MONO2STEREO_NAME synth_1to1_real_m2s +#define MONO_NAME INT123_synth_1to1_real_mono +#define MONO2STEREO_NAME INT123_synth_1to1_real_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -40,7 +40,7 @@ #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_1to1_real_i386 +#define SYNTH_NAME INT123_synth_1to1_real_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -52,18 +52,18 @@ /* At least one optimized real decoder... */ #ifdef OPT_X86_64 /* Assembler routines. */ -int synth_1to1_real_x86_64_asm(real *window, real *b0, real *samples, int bo1); -int synth_1to1_real_s_x86_64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); -void dct64_real_x86_64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_real_x86_64_asm(real *window, real *b0, real *samples, int bo1); +int INT123_synth_1to1_real_s_x86_64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); +void INT123_dct64_real_x86_64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_real_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_real_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -81,23 +81,23 @@ int synth_1to1_real_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int fin { b0 = buf[0]; bo1 = fr->bo; - dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1); + INT123_synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return 0; } -int synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -106,8 +106,8 @@ int synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handl #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -120,19 +120,19 @@ int synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handl b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - synth_1to1_real_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1); + INT123_synth_1to1_real_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -143,19 +143,19 @@ int synth_1to1_real_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handl #ifdef OPT_AVX /* Assembler routines. */ #ifndef OPT_X86_64 -int synth_1to1_real_x86_64_asm(real *window, real *b0, real *samples, int bo1); +int INT123_synth_1to1_real_x86_64_asm(real *window, real *b0, real *samples, int bo1); #endif -int synth_1to1_real_s_avx_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); -void dct64_real_avx(real *out0, real *out1, real *samples); +int INT123_synth_1to1_real_s_avx_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); +void INT123_dct64_real_avx(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_real_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_real_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -173,23 +173,23 @@ int synth_1to1_real_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1); + INT123_synth_1to1_real_x86_64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return 0; } -int synth_1to1_fltst_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_fltst_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -198,8 +198,8 @@ int synth_1to1_fltst_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -212,19 +212,19 @@ int synth_1to1_fltst_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - synth_1to1_real_s_avx_asm(fr->decwin, b0l, b0r, samples, bo1); + INT123_synth_1to1_real_s_avx_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -234,18 +234,18 @@ int synth_1to1_fltst_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) /* Assembler routines. */ -int synth_1to1_real_sse_asm(real *window, real *b0, real *samples, int bo1); -int synth_1to1_real_s_sse_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); -void dct64_real_sse(real *out0, real *out1, real *samples); +int INT123_synth_1to1_real_sse_asm(real *window, real *b0, real *samples, int bo1); +int INT123_synth_1to1_real_s_sse_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); +void INT123_dct64_real_sse(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_real_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_real_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -263,23 +263,23 @@ int synth_1to1_real_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - synth_1to1_real_sse_asm(fr->decwin, b0, samples, bo1); + INT123_synth_1to1_real_sse_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return 0; } -int synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -288,8 +288,8 @@ int synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle * #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -302,19 +302,19 @@ int synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle * b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - synth_1to1_real_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1); + INT123_synth_1to1_real_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -324,18 +324,18 @@ int synth_1to1_real_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle * #ifdef OPT_NEON /* Assembler routines. */ -int synth_1to1_real_neon_asm(real *window, real *b0, real *samples, int bo1); -int synth_1to1_real_s_neon_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); -void dct64_real_neon(real *out0, real *out1, real *samples); +int INT123_synth_1to1_real_neon_asm(real *window, real *b0, real *samples, int bo1); +int INT123_synth_1to1_real_s_neon_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); +void INT123_dct64_real_neon(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_real_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_real_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -353,22 +353,22 @@ int synth_1to1_real_neon(real *bandPtr,int channel, mpg123_handle *fr, int final { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - synth_1to1_real_neon_asm(fr->decwin, b0, samples, bo1); + INT123_synth_1to1_real_neon_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return 0; } -int synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -377,8 +377,8 @@ int synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -391,19 +391,19 @@ int synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - synth_1to1_real_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1); + INT123_synth_1to1_real_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -413,18 +413,18 @@ int synth_1to1_real_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle #ifdef OPT_NEON64 /* Assembler routines. */ -int synth_1to1_real_neon64_asm(real *window, real *b0, real *samples, int bo1); -int synth_1to1_real_s_neon64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); -void dct64_real_neon64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_real_neon64_asm(real *window, real *b0, real *samples, int bo1); +int INT123_synth_1to1_real_s_neon64_asm(real *window, real *b0l, real *b0r, real *samples, int bo1); +void INT123_dct64_real_neon64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_real_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_real_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); real *b0, **buf; int bo1; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -442,22 +442,22 @@ int synth_1to1_real_neon64(real *bandPtr,int channel, mpg123_handle *fr, int fin { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - synth_1to1_real_neon64_asm(fr->decwin, b0, samples, bo1); + INT123_synth_1to1_real_neon64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return 0; } -int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { real *samples = (real *) (fr->buffer.data+fr->buffer.fill); @@ -466,8 +466,8 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -480,19 +480,19 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - synth_1to1_real_s_neon64_asm(fr->decwin, b0l, b0r, samples, bo1); + INT123_synth_1to1_real_s_neon64_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -507,14 +507,14 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x20 /* One decoding block is 32 samples. */ -#define SYNTH_NAME synth_2to1_real +#define SYNTH_NAME INT123_synth_2to1_real #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_2to1_real (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_2to1_real (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_2to1][f_real] -#define MONO_NAME synth_2to1_real_mono -#define MONO2STEREO_NAME synth_2to1_real_m2s +#define MONO_NAME INT123_synth_2to1_real_mono +#define MONO2STEREO_NAME INT123_synth_2to1_real_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -522,7 +522,7 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_2to1_real_i386 +#define SYNTH_NAME INT123_synth_2to1_real_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -536,14 +536,14 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x10 /* One decoding block is 16 samples. */ -#define SYNTH_NAME synth_4to1_real +#define SYNTH_NAME INT123_synth_4to1_real #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_4to1_real (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_4to1_real (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_4to1][f_real] -#define MONO_NAME synth_4to1_real_mono -#define MONO2STEREO_NAME synth_4to1_real_m2s +#define MONO_NAME INT123_synth_4to1_real_mono +#define MONO2STEREO_NAME INT123_synth_4to1_real_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -551,7 +551,7 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_4to1_real_i386 +#define SYNTH_NAME INT123_synth_4to1_real_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -565,13 +565,13 @@ int synth_1to1_fltst_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_NTOM /* Part 3d: ntom synth. - Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64. + Same procedure as above... Just no extra play anymore, straight synth that may use an optimized INT123_dct64. */ /* These are all in one header, there's no flexibility to gain. */ -#define SYNTH_NAME synth_ntom_real -#define MONO_NAME synth_ntom_real_mono -#define MONO2STEREO_NAME synth_ntom_real_m2s +#define SYNTH_NAME INT123_synth_ntom_real +#define MONO_NAME INT123_synth_ntom_real_mono +#define MONO2STEREO_NAME INT123_synth_ntom_real_m2s #include "synth_ntom.h" #undef SYNTH_NAME #undef MONO_NAME diff --git a/src/libmpg123/synth_s32.c b/src/libmpg123/synth_s32.c index b44d8e1..4c99847 100644 --- a/src/libmpg123/synth_s32.c +++ b/src/libmpg123/synth_s32.c @@ -24,14 +24,14 @@ /* Part 4a: All straight 1to1 decoding functions */ #define BLOCK 0x40 /* One decoding block is 64 samples. */ -#define SYNTH_NAME synth_1to1_s32 +#define SYNTH_NAME INT123_synth_1to1_s32 #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_1to1_s32 (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_1to1_s32 (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_1to1][f_32] -#define MONO_NAME synth_1to1_s32_mono -#define MONO2STEREO_NAME synth_1to1_s32_m2s +#define MONO_NAME INT123_synth_1to1_s32_mono +#define MONO2STEREO_NAME INT123_synth_1to1_s32_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -39,7 +39,7 @@ #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_1to1_s32_i386 +#define SYNTH_NAME INT123_synth_1to1_s32_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -48,11 +48,11 @@ #ifdef OPT_X86_64 /* Assembler routines. */ -int synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1); -int synth_1to1_s32_s_x86_64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); -void dct64_real_x86_64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1); +int INT123_synth_1to1_s32_s_x86_64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); +void INT123_dct64_real_x86_64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -60,7 +60,7 @@ int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int fina int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -78,16 +78,16 @@ int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int fina { b0 = buf[0]; bo1 = fr->bo; - dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_x86_64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_x86_64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; @@ -95,7 +95,7 @@ int synth_1to1_s32_x86_64(real *bandPtr,int channel, mpg123_handle *fr, int fina } -int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -105,8 +105,8 @@ int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -119,19 +119,19 @@ int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_x86_64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_x86_64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_x86_64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_x86_64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s32_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s32_s_x86_64_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -142,12 +142,12 @@ int synth_1to1_s32_stereo_x86_64(real *bandPtr_l, real *bandPtr_r, mpg123_handle #ifdef OPT_AVX /* Assembler routines. */ #ifndef OPT_x86_64 -int synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1); +int INT123_synth_1to1_s32_x86_64_asm(real *window, real *b0, int32_t *samples, int bo1); #endif -int synth_1to1_s32_s_avx_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); -void dct64_real_avx(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s32_s_avx_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); +void INT123_dct64_real_avx(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_s32_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -155,7 +155,7 @@ int synth_1to1_s32_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -173,16 +173,16 @@ int synth_1to1_s32_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_avx(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_avx(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_s32_x86_64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; @@ -190,7 +190,7 @@ int synth_1to1_s32_avx(real *bandPtr,int channel, mpg123_handle *fr, int final) } -int synth_1to1_s32_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -200,8 +200,8 @@ int synth_1to1_s32_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -214,19 +214,19 @@ int synth_1to1_s32_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_avx(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_avx(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_avx(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_avx(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s32_s_avx_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s32_s_avx_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -236,11 +236,11 @@ int synth_1to1_s32_stereo_avx(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f #if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) /* Assembler routines. */ -int synth_1to1_s32_sse_asm(real *window, real *b0, int32_t *samples, int bo1); -int synth_1to1_s32_s_sse_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); -void dct64_real_sse(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s32_sse_asm(real *window, real *b0, int32_t *samples, int bo1); +int INT123_synth_1to1_s32_s_sse_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); +void INT123_dct64_real_sse(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -248,7 +248,7 @@ int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -266,16 +266,16 @@ int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_sse(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_sse(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_s32_sse_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_s32_sse_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; @@ -283,7 +283,7 @@ int synth_1to1_s32_sse(real *bandPtr,int channel, mpg123_handle *fr, int final) } -int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -293,8 +293,8 @@ int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -307,19 +307,19 @@ int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_sse(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_sse(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_sse(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_sse(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s32_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s32_s_sse_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -329,11 +329,11 @@ int synth_1to1_s32_stereo_sse(real *bandPtr_l, real *bandPtr_r, mpg123_handle *f #ifdef OPT_NEON /* Assembler routines. */ -int synth_1to1_s32_neon_asm(real *window, real *b0, int32_t *samples, int bo1); -int synth_1to1_s32_s_neon_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); -void dct64_real_neon(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s32_neon_asm(real *window, real *b0, int32_t *samples, int bo1); +int INT123_synth_1to1_s32_s_neon_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); +void INT123_dct64_real_neon(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -341,7 +341,7 @@ int synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -359,23 +359,23 @@ int synth_1to1_s32_neon(real *bandPtr,int channel, mpg123_handle *fr, int final) { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_s32_neon_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_s32_neon_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return clip; } -int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -385,8 +385,8 @@ int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle * #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -399,19 +399,19 @@ int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle * b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s32_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s32_s_neon_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -421,11 +421,11 @@ int synth_1to1_s32_stereo_neon(real *bandPtr_l, real *bandPtr_r, mpg123_handle * #ifdef OPT_NEON64 /* Assembler routines. */ -int synth_1to1_s32_neon64_asm(real *window, real *b0, int32_t *samples, int bo1); -int synth_1to1_s32_s_neon64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); -void dct64_real_neon64(real *out0, real *out1, real *samples); +int INT123_synth_1to1_s32_neon64_asm(real *window, real *b0, int32_t *samples, int bo1); +int INT123_synth_1to1_s32_s_neon64_asm(real *window, real *b0l, real *b0r, int32_t *samples, int bo1); +void INT123_dct64_real_neon64(real *out0, real *out1, real *samples); /* Hull for C mpg123 API */ -int synth_1to1_s32_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) +int INT123_synth_1to1_s32_neon64(real *bandPtr,int channel, mpg123_handle *fr, int final) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -433,7 +433,7 @@ int synth_1to1_s32_neon64(real *bandPtr,int channel, mpg123_handle *fr, int fina int bo1; int clip; #ifndef NO_EQUALIZER - if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer); + if(fr->have_eq_settings) INT123_do_equalizer(bandPtr,channel,fr->equalizer); #endif if(!channel) { @@ -451,23 +451,23 @@ int synth_1to1_s32_neon64(real *bandPtr,int channel, mpg123_handle *fr, int fina { b0 = buf[0]; bo1 = fr->bo; - dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); + INT123_dct64_real_neon64(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr); } else { b0 = buf[1]; bo1 = fr->bo+1; - dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); + INT123_dct64_real_neon64(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr); } - clip = synth_1to1_s32_neon64_asm(fr->decwin, b0, samples, bo1); + clip = INT123_synth_1to1_s32_neon64_asm(fr->decwin, b0, samples, bo1); if(final) fr->buffer.fill += 256; return clip; } -int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) +int INT123_synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) { int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill); @@ -477,8 +477,8 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_EQUALIZER if(fr->have_eq_settings) { - do_equalizer(bandPtr_l,0,fr->equalizer); - do_equalizer(bandPtr_r,1,fr->equalizer); + INT123_do_equalizer(bandPtr_l,0,fr->equalizer); + INT123_do_equalizer(bandPtr_r,1,fr->equalizer); } #endif fr->bo--; @@ -491,19 +491,19 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) b0l = bufl[0]; b0r = bufr[0]; bo1 = fr->bo; - dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); - dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); + INT123_dct64_real_neon64(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l); + INT123_dct64_real_neon64(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r); } else { b0l = bufl[1]; b0r = bufr[1]; bo1 = fr->bo+1; - dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); - dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); + INT123_dct64_real_neon64(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l); + INT123_dct64_real_neon64(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r); } - clip = synth_1to1_s32_s_neon64_asm(fr->decwin, b0l, b0r, samples, bo1); + clip = INT123_synth_1to1_s32_s_neon64_asm(fr->decwin, b0l, b0r, samples, bo1); fr->buffer.fill += 256; @@ -520,14 +520,14 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x20 /* One decoding block is 32 samples. */ -#define SYNTH_NAME synth_2to1_s32 +#define SYNTH_NAME INT123_synth_2to1_s32 #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_2to1_s32 (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_2to1_s32 (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_2to1][f_32] -#define MONO_NAME synth_2to1_s32_mono -#define MONO2STEREO_NAME synth_2to1_s32_m2s +#define MONO_NAME INT123_synth_2to1_s32_mono +#define MONO2STEREO_NAME INT123_synth_2to1_s32_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -535,7 +535,7 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_2to1_s32_i386 +#define SYNTH_NAME INT123_synth_2to1_s32_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -549,14 +549,14 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) */ #define BLOCK 0x10 /* One decoding block is 16 samples. */ -#define SYNTH_NAME synth_4to1_s32 +#define SYNTH_NAME INT123_synth_4to1_s32 #include "synth.h" #undef SYNTH_NAME -/* Mono-related synths; they wrap over _some_ synth_4to1_s32 (could be generic, could be i386). */ +/* Mono-related synths; they wrap over _some_ INT123_synth_4to1_s32 (could be generic, could be i386). */ #define SYNTH_NAME fr->synths.plain[r_4to1][f_32] -#define MONO_NAME synth_4to1_s32_mono -#define MONO2STEREO_NAME synth_4to1_s32_m2s +#define MONO_NAME INT123_synth_4to1_s32_mono +#define MONO2STEREO_NAME INT123_synth_4to1_s32_m2s #include "synth_mono.h" #undef SYNTH_NAME #undef MONO_NAME @@ -564,7 +564,7 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifdef OPT_X86 #define NO_AUTOINCREMENT -#define SYNTH_NAME synth_4to1_s32_i386 +#define SYNTH_NAME INT123_synth_4to1_s32_i386 #include "synth.h" #undef SYNTH_NAME /* i386 uses the normal mono functions. */ @@ -578,13 +578,13 @@ int synth_1to1_s32st_neon64(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr) #ifndef NO_NTOM /* Part 4d: ntom synth. - Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64. + Same procedure as above... Just no extra play anymore, straight synth that may use an optimized INT123_dct64. */ /* These are all in one header, there's no flexibility to gain. */ -#define SYNTH_NAME synth_ntom_s32 -#define MONO_NAME synth_ntom_s32_mono -#define MONO2STEREO_NAME synth_ntom_s32_m2s +#define SYNTH_NAME INT123_synth_ntom_s32 +#define MONO_NAME INT123_synth_ntom_s32_mono +#define MONO2STEREO_NAME INT123_synth_ntom_s32_m2s #include "synth_ntom.h" #undef SYNTH_NAME #undef MONO_NAME diff --git a/src/libmpg123/synth_sse.S b/src/libmpg123/synth_sse.S index d01178b..497e6a7 100644 --- a/src/libmpg123/synth_sse.S +++ b/src/libmpg123/synth_sse.S @@ -1,12 +1,12 @@ #include "mangle.h" -#define MPL_DCT64 FUNC(dct64_sse) -#define SYNTH_NAME ASM_NAME(synth_1to1_sse_asm) +#define MPL_DCT64 FUNC(INT123_dct64_sse) +#define SYNTH_NAME ASM_NAME(INT123_synth_1to1_sse_asm) #include "synth_sse3d.h" #if defined(PIC) && defined(__APPLE__) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_dct64_sse: - .indirect_symbol ASM_NAME(dct64_sse) +FUNC(INT123_dct64_sse): + .indirect_symbol ASM_NAME(INT123_dct64_sse) hlt ; hlt ; hlt ; hlt ; hlt #endif diff --git a/src/libmpg123/synth_sse3d.h b/src/libmpg123/synth_sse3d.h index 5ebbd94..15064d3 100644 --- a/src/libmpg123/synth_sse3d.h +++ b/src/libmpg123/synth_sse3d.h @@ -10,7 +10,7 @@ Transformed back into standalone asm, with help of gcc -S -DHAVE_CONFIG_H -I. -march=pentium -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o decode_mmxsse.{S,c} - The difference between SSE and 3DNowExt is the dct64 function and the synth function name. + The difference between SSE and 3DNowExt is the INT123_dct64 function and the synth function name. This template here uses the SYNTH_NAME and MPL_DCT64 macros for this - see decode_sse.S and decode_3dnowext.S... That's not memory efficient since there's doubled code, but it's easier than giving another function pointer. Maybe I'll change it in future, but now I need something that works. diff --git a/src/libmpg123/synth_sse_accurate.S b/src/libmpg123/synth_sse_accurate.S index 57bcbd6..755d025 100644 --- a/src/libmpg123/synth_sse_accurate.S +++ b/src/libmpg123/synth_sse_accurate.S @@ -39,8 +39,8 @@ maxmin_s16: .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_sse_accurate_asm) -ASM_NAME(synth_1to1_sse_accurate_asm): +.globl ASM_NAME(INT123_synth_1to1_sse_accurate_asm) +ASM_NAME(INT123_synth_1to1_sse_accurate_asm): pushl %ebp movl %esp, %ebp pushl %ebx diff --git a/src/libmpg123/synth_sse_float.S b/src/libmpg123/synth_sse_float.S index ddf6e24..e04cc0b 100644 --- a/src/libmpg123/synth_sse_float.S +++ b/src/libmpg123/synth_sse_float.S @@ -33,8 +33,8 @@ scale_sse: .long 939524096 .text ALIGN16 -.globl ASM_NAME(synth_1to1_real_sse_asm) -ASM_NAME(synth_1to1_real_sse_asm): +.globl ASM_NAME(INT123_synth_1to1_real_sse_asm) +ASM_NAME(INT123_synth_1to1_real_sse_asm): pushl %ebp movl %esp, %ebp pushl %ebx diff --git a/src/libmpg123/synth_sse_s32.S b/src/libmpg123/synth_sse_s32.S index 7aba4a1..4a70c9b 100644 --- a/src/libmpg123/synth_sse_s32.S +++ b/src/libmpg123/synth_sse_s32.S @@ -45,8 +45,8 @@ maxmin_s32: .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s32_sse_asm) -ASM_NAME(synth_1to1_s32_sse_asm): +.globl ASM_NAME(INT123_synth_1to1_s32_sse_asm) +ASM_NAME(INT123_synth_1to1_s32_sse_asm): pushl %ebp movl %esp, %ebp pushl %ebx diff --git a/src/libmpg123/synth_stereo_avx.S b/src/libmpg123/synth_stereo_avx.S index 79fb670..dd867df 100644 --- a/src/libmpg123/synth_stereo_avx.S +++ b/src/libmpg123/synth_stereo_avx.S @@ -34,8 +34,8 @@ */ ALIGN16 -.globl ASM_NAME(synth_1to1_s_avx_asm) -ASM_NAME(synth_1to1_s_avx_asm): +.globl ASM_NAME(INT123_synth_1to1_s_avx_asm) +ASM_NAME(INT123_synth_1to1_s_avx_asm): #ifdef IS_MSABI /* should save xmm6-15 */ push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/synth_stereo_avx_accurate.S b/src/libmpg123/synth_stereo_avx_accurate.S index 6ba0251..dd52883 100644 --- a/src/libmpg123/synth_stereo_avx_accurate.S +++ b/src/libmpg123/synth_stereo_avx_accurate.S @@ -58,8 +58,8 @@ maxmin_avx: .long -956301312 .text ALIGN16 - .globl ASM_NAME(synth_1to1_s_avx_accurate_asm) -ASM_NAME(synth_1to1_s_avx_accurate_asm): + .globl ASM_NAME(INT123_synth_1to1_s_avx_accurate_asm) +ASM_NAME(INT123_synth_1to1_s_avx_accurate_asm): #ifdef IS_MSABI /* should save xmm6-15 */ push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/synth_stereo_avx_float.S b/src/libmpg123/synth_stereo_avx_float.S index 955ec71..b619f80 100644 --- a/src/libmpg123/synth_stereo_avx_float.S +++ b/src/libmpg123/synth_stereo_avx_float.S @@ -43,8 +43,8 @@ scale_avx: .long 939524096 .text ALIGN16 - .globl ASM_NAME(synth_1to1_real_s_avx_asm) -ASM_NAME(synth_1to1_real_s_avx_asm): + .globl ASM_NAME(INT123_synth_1to1_real_s_avx_asm) +ASM_NAME(INT123_synth_1to1_real_s_avx_asm): #ifdef IS_MSABI /* should save xmm6-15 */ push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/synth_stereo_avx_s32.S b/src/libmpg123/synth_stereo_avx_s32.S index 8f1e9a6..01b313a 100644 --- a/src/libmpg123/synth_stereo_avx_s32.S +++ b/src/libmpg123/synth_stereo_avx_s32.S @@ -60,8 +60,8 @@ scale_avx: .long 1199570944 .text ALIGN16 - .globl ASM_NAME(synth_1to1_s32_s_avx_asm) -ASM_NAME(synth_1to1_s32_s_avx_asm): + .globl ASM_NAME(INT123_synth_1to1_s32_s_avx_asm) +ASM_NAME(INT123_synth_1to1_s32_s_avx_asm): #ifdef IS_MSABI /* should save xmm6-15 */ push %rbp mov %rsp, %rbp diff --git a/src/libmpg123/synth_stereo_neon.S b/src/libmpg123/synth_stereo_neon.S index abb2747..5abc8b7 100644 --- a/src/libmpg123/synth_stereo_neon.S +++ b/src/libmpg123/synth_stereo_neon.S @@ -26,12 +26,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_s_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_s_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_s_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_s_neon_asm): +ASM_NAME(INT123_synth_1to1_s_neon_asm): push {r4-r6, lr} vpush {q4-q7} diff --git a/src/libmpg123/synth_stereo_neon64.S b/src/libmpg123/synth_stereo_neon64.S index aeffa6c..84b99d8 100644 --- a/src/libmpg123/synth_stereo_neon64.S +++ b/src/libmpg123/synth_stereo_neon64.S @@ -19,11 +19,11 @@ maxmin_s16: .word -32768 .text ALIGN4 - .globl ASM_NAME(synth_1to1_s_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_s_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_s_neon64_asm), %function #endif -ASM_NAME(synth_1to1_s_neon64_asm): +ASM_NAME(INT123_synth_1to1_s_neon64_asm): add x0, x0, #32 sub x0, x0, x4, lsl #1 eor v30.16b, v30.16b, v30.16b diff --git a/src/libmpg123/synth_stereo_neon64_accurate.S b/src/libmpg123/synth_stereo_neon64_accurate.S index 2e79fc6..6cf05e5 100644 --- a/src/libmpg123/synth_stereo_neon64_accurate.S +++ b/src/libmpg123/synth_stereo_neon64_accurate.S @@ -19,11 +19,11 @@ maxmin_s16: .word -956301312 .text ALIGN4 - .globl ASM_NAME(synth_1to1_s_neon64_accurate_asm) + .globl ASM_NAME(INT123_synth_1to1_s_neon64_accurate_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s_neon64_accurate_asm), %function + .type ASM_NAME(INT123_synth_1to1_s_neon64_accurate_asm), %function #endif -ASM_NAME(synth_1to1_s_neon64_accurate_asm): +ASM_NAME(INT123_synth_1to1_s_neon64_accurate_asm): add x0, x0, #64 sub x0, x0, x4, lsl #2 eor v30.16b, v30.16b, v30.16b diff --git a/src/libmpg123/synth_stereo_neon64_float.S b/src/libmpg123/synth_stereo_neon64_float.S index aec656c..3429596 100644 --- a/src/libmpg123/synth_stereo_neon64_float.S +++ b/src/libmpg123/synth_stereo_neon64_float.S @@ -18,11 +18,11 @@ scale: .word 939524096 .text ALIGN4 - .globl ASM_NAME(synth_1to1_real_s_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_real_s_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_real_s_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_real_s_neon64_asm), %function #endif -ASM_NAME(synth_1to1_real_s_neon64_asm): +ASM_NAME(INT123_synth_1to1_real_s_neon64_asm): add x0, x0, #64 sub x0, x0, x4, lsl #2 adrp x5, AARCH64_PCREL_HI(scale) diff --git a/src/libmpg123/synth_stereo_neon64_s32.S b/src/libmpg123/synth_stereo_neon64_s32.S index 52e1d66..2d61664 100644 --- a/src/libmpg123/synth_stereo_neon64_s32.S +++ b/src/libmpg123/synth_stereo_neon64_s32.S @@ -20,11 +20,11 @@ maxmin_s32: .word 1199570944 .text ALIGN4 - .globl ASM_NAME(synth_1to1_s32_s_neon64_asm) + .globl ASM_NAME(INT123_synth_1to1_s32_s_neon64_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s32_s_neon64_asm), %function + .type ASM_NAME(INT123_synth_1to1_s32_s_neon64_asm), %function #endif -ASM_NAME(synth_1to1_s32_s_neon64_asm): +ASM_NAME(INT123_synth_1to1_s32_s_neon64_asm): add x0, x0, #64 sub x0, x0, x4, lsl #2 eor v31.16b, v31.16b, v31.16b diff --git a/src/libmpg123/synth_stereo_neon_accurate.S b/src/libmpg123/synth_stereo_neon_accurate.S index 37a051c..3107a74 100644 --- a/src/libmpg123/synth_stereo_neon_accurate.S +++ b/src/libmpg123/synth_stereo_neon_accurate.S @@ -24,11 +24,11 @@ #endif .text - .globl ASM_NAME(synth_1to1_s_neon_accurate_asm) + .globl ASM_NAME(INT123_synth_1to1_s_neon_accurate_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s_neon_accurate_asm), %function + .type ASM_NAME(INT123_synth_1to1_s_neon_accurate_asm), %function #endif -ASM_NAME(synth_1to1_s_neon_accurate_asm): +ASM_NAME(INT123_synth_1to1_s_neon_accurate_asm): push {r4-r7, lr} vpush {q4-q7} ldr r4, [sp, #84] diff --git a/src/libmpg123/synth_stereo_neon_float.S b/src/libmpg123/synth_stereo_neon_float.S index 405fa28..e626f2e 100644 --- a/src/libmpg123/synth_stereo_neon_float.S +++ b/src/libmpg123/synth_stereo_neon_float.S @@ -26,12 +26,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_real_s_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_real_s_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_real_s_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_real_s_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_real_s_neon_asm): +ASM_NAME(INT123_synth_1to1_real_s_neon_asm): push {r4-r6, lr} vpush {q4-q7} diff --git a/src/libmpg123/synth_stereo_neon_s32.S b/src/libmpg123/synth_stereo_neon_s32.S index dfb4114..505e76b 100644 --- a/src/libmpg123/synth_stereo_neon_s32.S +++ b/src/libmpg123/synth_stereo_neon_s32.S @@ -26,12 +26,12 @@ #endif .text - GLOBAL_SYMBOL ASM_NAME(synth_1to1_s32_s_neon_asm) + GLOBAL_SYMBOL ASM_NAME(INT123_synth_1to1_s32_s_neon_asm) #ifdef __ELF__ - .type ASM_NAME(synth_1to1_s32_s_neon_asm), %function + .type ASM_NAME(INT123_synth_1to1_s32_s_neon_asm), %function #endif ALIGN4 -ASM_NAME(synth_1to1_s32_s_neon_asm): +ASM_NAME(INT123_synth_1to1_s32_s_neon_asm): push {r4-r7, lr} vpush {q4-q7} ldr r4, [sp, #84] diff --git a/src/libmpg123/synth_stereo_sse_accurate.S b/src/libmpg123/synth_stereo_sse_accurate.S index c7b36b2..442b9dd 100644 --- a/src/libmpg123/synth_stereo_sse_accurate.S +++ b/src/libmpg123/synth_stereo_sse_accurate.S @@ -42,8 +42,8 @@ maxmin_s16: .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s_sse_accurate_asm) -ASM_NAME(synth_1to1_s_sse_accurate_asm): +.globl ASM_NAME(INT123_synth_1to1_s_sse_accurate_asm) +ASM_NAME(INT123_synth_1to1_s_sse_accurate_asm): pushl %ebp movl %esp, %ebp andl $-16, %esp diff --git a/src/libmpg123/synth_stereo_sse_float.S b/src/libmpg123/synth_stereo_sse_float.S index 113b354..085b0b8 100644 --- a/src/libmpg123/synth_stereo_sse_float.S +++ b/src/libmpg123/synth_stereo_sse_float.S @@ -37,8 +37,8 @@ scale_sse: .long 939524096 .text ALIGN16 -.globl ASM_NAME(synth_1to1_real_s_sse_asm) -ASM_NAME(synth_1to1_real_s_sse_asm): +.globl ASM_NAME(INT123_synth_1to1_real_s_sse_asm) +ASM_NAME(INT123_synth_1to1_real_s_sse_asm): pushl %ebp movl %esp, %ebp andl $-16, %esp diff --git a/src/libmpg123/synth_stereo_sse_s32.S b/src/libmpg123/synth_stereo_sse_s32.S index 248cf9d..5c0f224 100644 --- a/src/libmpg123/synth_stereo_sse_s32.S +++ b/src/libmpg123/synth_stereo_sse_s32.S @@ -48,8 +48,8 @@ maxmin_s32: .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s32_s_sse_asm) -ASM_NAME(synth_1to1_s32_s_sse_asm): +.globl ASM_NAME(INT123_synth_1to1_s32_s_sse_asm) +ASM_NAME(INT123_synth_1to1_s32_s_sse_asm): pushl %ebp movl %esp, %ebp andl $-16, %esp diff --git a/src/libmpg123/synth_stereo_x86_64.S b/src/libmpg123/synth_stereo_x86_64.S index 3aa4dfe..b56fdbe 100644 --- a/src/libmpg123/synth_stereo_x86_64.S +++ b/src/libmpg123/synth_stereo_x86_64.S @@ -44,7 +44,7 @@ .data #endif ALIGN32 -ASM_NAME(maxmin_x86_64): +ASM_NAME(INT123_maxmin_x86_64): .long 32767 .long 32767 .long 32767 @@ -55,8 +55,8 @@ ASM_NAME(maxmin_x86_64): .long -32769 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s_x86_64_asm) -ASM_NAME(synth_1to1_s_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_s_x86_64_asm) +ASM_NAME(INT123_synth_1to1_s_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */ subq $168, %rsp /* stack alignment + 10 xmm registers */ @@ -85,7 +85,7 @@ ASM_NAME(synth_1to1_s_x86_64_asm): leaq 32(WINDOW), WINDOW subq %rax, WINDOW - leaq ASM_NAME(maxmin_x86_64)(%rip), %rax + leaq ASM_NAME(INT123_maxmin_x86_64)(%rip), %rax movaps (%rax), XMMREG_MAX movaps 16(%rax), XMMREG_MIN pxor XMMREG_CLIP, XMMREG_CLIP diff --git a/src/libmpg123/synth_stereo_x86_64_accurate.S b/src/libmpg123/synth_stereo_x86_64_accurate.S index e9a9911..a062dde 100644 --- a/src/libmpg123/synth_stereo_x86_64_accurate.S +++ b/src/libmpg123/synth_stereo_x86_64_accurate.S @@ -43,7 +43,7 @@ .data #endif ALIGN32 -ASM_NAME(maxmin_s16): +ASM_NAME(INT123_maxmin_s16): .long 1191181824 .long 1191181824 .long 1191181824 @@ -54,8 +54,8 @@ ASM_NAME(maxmin_s16): .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s_x86_64_accurate_asm) -ASM_NAME(synth_1to1_s_x86_64_accurate_asm): +.globl ASM_NAME(INT123_synth_1to1_s_x86_64_accurate_asm) +ASM_NAME(INT123_synth_1to1_s_x86_64_accurate_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */ pushq %rsi @@ -74,7 +74,7 @@ ASM_NAME(synth_1to1_s_x86_64_accurate_asm): subq $24, %rsp /* stack alignment + temp */ #endif - leaq ASM_NAME(maxmin_s16)(%rip), %r10 + leaq ASM_NAME(INT123_maxmin_s16)(%rip), %r10 leaq 16(%r10), %r11 xorps %xmm0, %xmm0 movaps %xmm0, TEMP_CLIP diff --git a/src/libmpg123/synth_stereo_x86_64_float.S b/src/libmpg123/synth_stereo_x86_64_float.S index a1b381a..59ae188 100644 --- a/src/libmpg123/synth_stereo_x86_64_float.S +++ b/src/libmpg123/synth_stereo_x86_64_float.S @@ -41,15 +41,15 @@ .data #endif ALIGN32 -ASM_NAME(scale_x86_64): +ASM_NAME(INT123_scale_x86_64): .long 939524096 .long 939524096 .long 939524096 .long 939524096 .text ALIGN16 -.globl ASM_NAME(synth_1to1_real_s_x86_64_asm) -ASM_NAME(synth_1to1_real_s_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_real_s_x86_64_asm) +ASM_NAME(INT123_synth_1to1_real_s_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */ subq $168, %rsp /* stack alignment + 10 xmm registers */ @@ -65,7 +65,7 @@ ASM_NAME(synth_1to1_real_s_x86_64_asm): movaps %xmm15, 144(%rsp) #endif - leaq ASM_NAME(scale_x86_64)(%rip), %r11 + leaq ASM_NAME(INT123_scale_x86_64)(%rip), %r11 #ifdef IS_MSABI shlq $32, %rax diff --git a/src/libmpg123/synth_stereo_x86_64_s32.S b/src/libmpg123/synth_stereo_x86_64_s32.S index a05c896..80f76ec 100644 --- a/src/libmpg123/synth_stereo_x86_64_s32.S +++ b/src/libmpg123/synth_stereo_x86_64_s32.S @@ -44,13 +44,13 @@ .data #endif ALIGN32 -ASM_NAME(scale_s32): +ASM_NAME(INT123_scale_s32): .long 1199570944 .long 1199570944 .long 1199570944 .long 1199570944 ALIGN16 -ASM_NAME(maxmin_s32): +ASM_NAME(INT123_maxmin_s32): .long 1191182335 .long 1191182335 .long 1191182335 @@ -61,8 +61,8 @@ ASM_NAME(maxmin_s32): .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s32_s_x86_64_asm) -ASM_NAME(synth_1to1_s32_s_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_s32_s_x86_64_asm) +ASM_NAME(INT123_synth_1to1_s32_s_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movl 40(%rsp), %eax /* 5th argument; placed after 32-byte shadow space */ pushq %rsi @@ -96,8 +96,8 @@ ASM_NAME(synth_1to1_s32_s_x86_64_asm): leaq 64(WINDOW), WINDOW subq %rax, WINDOW - leaq ASM_NAME(scale_s32)(%rip), %r9 - leaq ASM_NAME(maxmin_s32)(%rip), %r10 + leaq ASM_NAME(INT123_scale_s32)(%rip), %r9 + leaq ASM_NAME(INT123_maxmin_s32)(%rip), %r10 leaq 16(%r10), %r11 xorps %xmm0, %xmm0 movaps %xmm0, TEMP_CLIP diff --git a/src/libmpg123/synth_x86_64.S b/src/libmpg123/synth_x86_64.S index eac7237..56896a3 100644 --- a/src/libmpg123/synth_x86_64.S +++ b/src/libmpg123/synth_x86_64.S @@ -44,7 +44,7 @@ .data #endif ALIGN32 -ASM_NAME(maxmin_x86_64): +ASM_NAME(INT123_maxmin_x86_64): .long 32767 .long 32767 .long 32767 @@ -55,8 +55,8 @@ ASM_NAME(maxmin_x86_64): .long -32769 .text ALIGN16 -.globl ASM_NAME(synth_1to1_x86_64_asm) -ASM_NAME(synth_1to1_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_x86_64_asm) +ASM_NAME(INT123_synth_1to1_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $104, %rsp /* stack alignment + 6 xmm registers */ @@ -68,7 +68,7 @@ ASM_NAME(synth_1to1_x86_64_asm): movaps %xmm15, 80(%rsp) #endif - leaq ASM_NAME(maxmin_x86_64)(%rip), %rax + leaq ASM_NAME(INT123_maxmin_x86_64)(%rip), %rax movaps (%rax), XMMREG_MAX movaps 16(%rax), XMMREG_MIN pxor XMMREG_CLIP, XMMREG_CLIP diff --git a/src/libmpg123/synth_x86_64_accurate.S b/src/libmpg123/synth_x86_64_accurate.S index d841e8e..c2e8370 100644 --- a/src/libmpg123/synth_x86_64_accurate.S +++ b/src/libmpg123/synth_x86_64_accurate.S @@ -43,7 +43,7 @@ .data #endif ALIGN32 -ASM_NAME(maxmin_s16): +ASM_NAME(INT123_maxmin_s16): .long 1191181824 .long 1191181824 .long 1191181824 @@ -54,8 +54,8 @@ ASM_NAME(maxmin_s16): .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_x86_64_accurate_asm) -ASM_NAME(synth_1to1_x86_64_accurate_asm): +.globl ASM_NAME(INT123_synth_1to1_x86_64_accurate_asm) +ASM_NAME(INT123_synth_1to1_x86_64_accurate_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $152, %rsp /* stack alignment + 9 xmm registers */ @@ -70,7 +70,7 @@ ASM_NAME(synth_1to1_x86_64_accurate_asm): movaps %xmm15, 128(%rsp) #endif - leaq ASM_NAME(maxmin_s16)(%rip), %rax + leaq ASM_NAME(INT123_maxmin_s16)(%rip), %rax movaps (%rax), XMMREG_MAX movaps 16(%rax), XMMREG_MIN diff --git a/src/libmpg123/synth_x86_64_float.S b/src/libmpg123/synth_x86_64_float.S index a26ee6b..8072419 100644 --- a/src/libmpg123/synth_x86_64_float.S +++ b/src/libmpg123/synth_x86_64_float.S @@ -41,15 +41,15 @@ .data #endif ALIGN32 -ASM_NAME(scale_x86_64): +ASM_NAME(INT123_scale_x86_64): .long 939524096 .long 939524096 .long 939524096 .long 939524096 .text ALIGN16 -.globl ASM_NAME(synth_1to1_real_x86_64_asm) -ASM_NAME(synth_1to1_real_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_real_x86_64_asm) +ASM_NAME(INT123_synth_1to1_real_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $120, %rsp /* stack alignment + 7 xmm registers */ @@ -62,7 +62,7 @@ ASM_NAME(synth_1to1_real_x86_64_asm): movaps %xmm15, 96(%rsp) #endif - leaq ASM_NAME(scale_x86_64)(%rip), %rax + leaq ASM_NAME(INT123_scale_x86_64)(%rip), %rax movaps (%rax), XMMREG_SCALE andq $0xf, ARG3 diff --git a/src/libmpg123/synth_x86_64_s32.S b/src/libmpg123/synth_x86_64_s32.S index 7f964a8..b538520 100644 --- a/src/libmpg123/synth_x86_64_s32.S +++ b/src/libmpg123/synth_x86_64_s32.S @@ -44,13 +44,13 @@ .data #endif ALIGN32 -ASM_NAME(scale_s32): +ASM_NAME(INT123_scale_s32): .long 1199570944 .long 1199570944 .long 1199570944 .long 1199570944 ALIGN16 -ASM_NAME(maxmin_s32): +ASM_NAME(INT123_maxmin_s32): .long 1191182335 .long 1191182335 .long 1191182335 @@ -61,8 +61,8 @@ ASM_NAME(maxmin_s32): .long -956301312 .text ALIGN16 -.globl ASM_NAME(synth_1to1_s32_x86_64_asm) -ASM_NAME(synth_1to1_s32_x86_64_asm): +.globl ASM_NAME(INT123_synth_1to1_s32_x86_64_asm) +ASM_NAME(INT123_synth_1to1_s32_x86_64_asm): #ifdef IS_MSABI /* should save xmm6-15 */ movq %rcx, ARG0 subq $168, %rsp /* stack alignment + 10 xmm registers */ @@ -78,9 +78,9 @@ ASM_NAME(synth_1to1_s32_x86_64_asm): movaps %xmm15, 144(%rsp) #endif - leaq ASM_NAME(scale_s32)(%rip), %rax + leaq ASM_NAME(INT123_scale_s32)(%rip), %rax movaps (%rax), XMMREG_SCALE - leaq ASM_NAME(maxmin_s32)(%rip), %rax + leaq ASM_NAME(INT123_maxmin_s32)(%rip), %rax movaps (%rax), XMMREG_MAX movaps 16(%rax), XMMREG_MIN diff --git a/src/libmpg123/tabinit.c b/src/libmpg123/tabinit.c index ae7fac3..00da7c1 100644 --- a/src/libmpg123/tabinit.c +++ b/src/libmpg123/tabinit.c @@ -16,7 +16,7 @@ #else const #endif -real *pnts[] = { cos64,cos32,cos16,cos8,cos4 }; +real *INT123_pnts[] = { cos64,cos32,cos16,cos8,cos4 }; static const long intwinbase[] = { 0, -1, -1, -1, -1, -1, -1, -2, -2, -2, @@ -48,12 +48,12 @@ static const long intwinbase[] = { #ifdef OPT_MMXORSSE #if !defined(OPT_X86_64) && !defined(OPT_NEON) && !defined(OPT_NEON64) && !defined(OPT_AVX) -void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); -void make_decode_tables_mmx(mpg123_handle *fr) +void INT123_make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); +void INT123_make_decode_tables_mmx(mpg123_handle *fr) { debug("MMX decode tables"); /* Take care: The scale should be like before, when we didn't have float output all around. */ - make_decode_tables_mmx_asm((long)((fr->lastscale < 0 ? fr->p.outscale : fr->lastscale)*SHORT_SCALE), fr->decwin_mmx, fr->decwins); + INT123_make_decode_tables_mmx_asm((long)((fr->lastscale < 0 ? fr->p.outscale : fr->lastscale)*SHORT_SCALE), fr->decwin_mmx, fr->decwins); debug("MMX decode tables done"); } #else @@ -65,7 +65,7 @@ static int rounded(double f) } /* x86-64 doesn't use asm version */ -void make_decode_tables_mmx(mpg123_handle *fr) +void INT123_make_decode_tables_mmx(mpg123_handle *fr) { int i,j,val; int idx = 0; @@ -135,7 +135,7 @@ static int32_t sat_mul32(int32_t a, int32_t b) } #endif -void make_decode_tables(mpg123_handle *fr) +void INT123_make_decode_tables(mpg123_handle *fr) { int i,j; int idx = 0; @@ -231,7 +231,7 @@ void make_decode_tables(mpg123_handle *fr) } #ifndef NO_8BIT -int make_conv16to8_table(mpg123_handle *fr) +int INT123_make_conv16to8_table(mpg123_handle *fr) { int i; int mode = fr->af.dec_enc; diff --git a/src/libmpg123/tabinit_mmx.S b/src/libmpg123/tabinit_mmx.S index 63586a7..077e19e 100644 --- a/src/libmpg123/tabinit_mmx.S +++ b/src/libmpg123/tabinit_mmx.S @@ -12,8 +12,8 @@ .data ALIGN32 -.globl ASM_NAME(costab_mmxsse) -ASM_NAME(costab_mmxsse): +.globl ASM_NAME(INT123_costab_mmxsse) +ASM_NAME(INT123_costab_mmxsse): .long 1056974725 .long 1057056395 .long 1057223771 @@ -86,8 +86,8 @@ intwindiv: .text ALIGN32 /* void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); */ -.globl ASM_NAME(make_decode_tables_mmx_asm) -ASM_NAME(make_decode_tables_mmx_asm): +.globl ASM_NAME(INT123_make_decode_tables_mmx_asm) +ASM_NAME(INT123_make_decode_tables_mmx_asm): pushl %ebp mov %esp,%ebp sub $12,%esp diff --git a/src/libmpg123/testcpu.c b/src/libmpg123/testcpu.c index bacd6c1..050f0be 100644 --- a/src/libmpg123/testcpu.c +++ b/src/libmpg123/testcpu.c @@ -13,7 +13,7 @@ int main() { int family; struct cpuflags flags; - if(!getcpuflags(&flags)){ printf("CPU won't do cpuid (some old i386 or i486)\n"); return 0; } + if(!INT123_getcpuflags(&flags)){ printf("CPU won't do cpuid (some old i386 or i486)\n"); return 0; } family = (flags.id & 0xf00)>>8; printf("family: %i\n", family); printf("stdcpuflags: 0x%08x\n", flags.std); diff --git a/src/libout123/Makemodule.am b/src/libout123/Makemodule.am index 2385189..09a0901 100644 --- a/src/libout123/Makemodule.am +++ b/src/libout123/Makemodule.am @@ -1,13 +1,36 @@ # Module for non-recursive mpg123 build system. -include src/libout123/modules/Makemodule.am +# Component selection: +# If HAVE_MODULES, the library can be built fully independently. +# If not, the library depends on the one builtin module from +# the subdirectory. + +# For dynamic modules. +if HAVE_MODULES +if BUILD_LIBOUT123_MODULES +include src/libout123/modules/Makemodule.am +endif +endif + +if NEED_MAINLIB +if BUILD_LIBOUT123 + +# Just for libdefaultmodule.la. +if !HAVE_MODULES +include src/libout123/modules/Makemodule.am +endif + +include_HEADERS += src/libout123/out123.h -# Precursor to the proper libout123. -# For now only wrapping the module loader or the legacy module. noinst_LTLIBRARIES += src/libout123/libmodule.la lib_LTLIBRARIES += src/libout123/libout123.la + +endif +endif + src_libout123_libout123_la_SOURCES = \ + src/libout123/out123.h \ src/libout123/libout123.c \ src/libout123/stringlists.h \ src/libout123/stringlists.c \ @@ -63,9 +86,6 @@ endif # The sfifo code is directly used in some modules. EXTRA_DIST += \ - src/libout123/out123.h.in \ src/libout123/sfifo.c \ src/libout123/sfifo.h -nodist_include_HEADERS += \ - src/libout123/out123.h diff --git a/src/libout123/buffer.c b/src/libout123/buffer.c index 42a1d31..925562b 100644 --- a/src/libout123/buffer.c +++ b/src/libout123/buffer.c @@ -18,7 +18,7 @@ */ /* - Communication to the buffer is normally via xfermem_putcmd() and blocking + Communication to the buffer is normally via INT123_xfermem_putcmd() and blocking on a response, relying on the buffer process periodically checking for pending commands. @@ -78,7 +78,7 @@ static int buffer_loop(out123_handle *ao); static void catch_child(void) { /* Disabled for now. We do not really need that. - Rather get return status in a controlled way in buffer_exit(). */ + Rather get return status in a controlled way in INT123_buffer_exit(). */ /* while (waitpid(-1, NULL, WNOHANG) > 0); */ } @@ -87,19 +87,19 @@ static void catch_child(void) */ /* Start a buffer process. */ -int buffer_init(out123_handle *ao, size_t bytes) +int INT123_buffer_init(out123_handle *ao, size_t bytes) { - buffer_exit(ao); + INT123_buffer_exit(ao); if(bytes < outburst) bytes = 2*outburst; #ifdef DONT_CATCH_SIGNALS #error I really need to catch signals here! #endif - xfermem_init(&ao->buffermem, bytes, 0, 0); - /* Is catch_child() really useful? buffer_exit() does waitpid(). - And if buffer_exit() is not called, the main process might be + INT123_xfermem_init(&ao->buffermem, bytes, 0, 0); + /* Is catch_child() really useful? INT123_buffer_exit() does waitpid(). + And if INT123_buffer_exit() is not called, the main process might be killed off and not be able to run a signal handler anyway. */ - catchsignal(SIGCHLD, catch_child); + INT123_catchsignal(SIGCHLD, catch_child); switch((ao->buffer_pid = fork())) { case -1: /* error */ @@ -118,10 +118,10 @@ int buffer_init(out123_handle *ao, size_t bytes) */ ao->buffer_pid = -1; /* Not preparing audio output anymore, that comes later. */ - xfermem_init_reader(ao->buffermem); + INT123_xfermem_init_reader(ao->buffermem); ret = buffer_loop(ao); /* Here the work happens. */ xfermem_done_reader(ao->buffermem); - xfermem_done(ao->buffermem); + INT123_xfermem_done(ao->buffermem); /* Proper cleanup of output handle, including out123_close(). */ out123_del(ao); exit(ret); @@ -129,16 +129,16 @@ int buffer_init(out123_handle *ao, size_t bytes) default: /* parent */ { int cmd; - xfermem_init_writer(ao->buffermem); + INT123_xfermem_init_writer(ao->buffermem); debug("waiting for inital pong from buffer process"); - if( (cmd=xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE)) + if( (cmd=INT123_xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE)) != XF_CMD_PONG ) { if(!AOQUIET) error2("Got %i instead of expected initial response %i. Killing rogue buffer process." , cmd, XF_CMD_PONG); kill(ao->buffer_pid, SIGKILL); - buffer_exit(ao); + INT123_buffer_exit(ao); return -1; } } @@ -148,24 +148,24 @@ int buffer_init(out123_handle *ao, size_t bytes) buffer_init_bad: if(ao->buffermem) { - xfermem_done(ao->buffermem); + INT123_xfermem_done(ao->buffermem); ao->buffermem = NULL; } return -1; } /* End a buffer process. */ -void buffer_exit(out123_handle *ao) +void INT123_buffer_exit(out123_handle *ao) { int status = 0; if(ao->buffer_pid == -1) return; debug("ending buffer"); - buffer_stop(ao); /* Puts buffer into waiting-for-command mode. */ - buffer_end(ao); /* Gives command to end operation. */ + INT123_buffer_stop(ao); /* Puts buffer into waiting-for-command mode. */ + INT123_buffer_end(ao); /* Gives command to end operation. */ xfermem_done_writer(ao->buffermem); waitpid(ao->buffer_pid, &status, 0); - xfermem_done(ao->buffermem); + INT123_xfermem_done(ao->buffermem); ao->buffermem = NULL; ao->buffer_pid = -1; if(WIFEXITED(status)) @@ -187,7 +187,7 @@ static int buffer_cmd_finish(out123_handle *ao) { /* Only if buffer returns XF_CMD_OK we got lucky. Otherwise, we expect the buffer to deliver a reason right after XF_CMD_ERROR. */ - switch(xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE)) + switch(INT123_xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE)) { case XF_CMD_OK: return 0; case XF_CMD_ERROR: @@ -242,10 +242,10 @@ static int read_parameters(out123_handle *ao #undef GOOD_READVAL_BUF } -int buffer_sync_param(out123_handle *ao) +int INT123_buffer_sync_param(out123_handle *ao) { int writerfd = ao->buffermem->fd[XF_WRITER]; - if(xfermem_putcmd(writerfd, BUF_CMD_PARAM) != 1) + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_PARAM) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return -1; @@ -260,11 +260,11 @@ int buffer_sync_param(out123_handle *ao) return buffer_cmd_finish(ao); } -int buffer_open(out123_handle *ao, const char* driver, const char* device) +int INT123_buffer_open(out123_handle *ao, const char* driver, const char* device) { int writerfd = ao->buffermem->fd[XF_WRITER]; - if(xfermem_putcmd(writerfd, BUF_CMD_OPEN) != 1) + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_OPEN) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return -1; @@ -287,11 +287,11 @@ int buffer_open(out123_handle *ao, const char* driver, const char* device) return -1; } -int buffer_encodings(out123_handle *ao) +int INT123_buffer_encodings(out123_handle *ao) { int writerfd = ao->buffermem->fd[XF_WRITER]; - if(xfermem_putcmd(writerfd, BUF_CMD_AUDIOCAP) != 1) + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_AUDIOCAP) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return -1; @@ -320,16 +320,16 @@ int buffer_encodings(out123_handle *ao) else return -1; } -int buffer_formats( out123_handle *ao, const long *rates, int ratecount +int INT123_buffer_formats( out123_handle *ao, const long *rates, int ratecount , int minchannels, int maxchannels , struct mpg123_fmt **fmtlist ) { int writerfd = ao->buffermem->fd[XF_WRITER]; size_t ratesize; - debug("buffer_formats"); + debug("INT123_buffer_formats"); - if(xfermem_putcmd(writerfd, BUF_CMD_AUDIOFMT) != 1) + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_AUDIOFMT) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return -1; @@ -362,10 +362,10 @@ int buffer_formats( out123_handle *ao, const long *rates, int ratecount else return -1; } -int buffer_start(out123_handle *ao) +int INT123_buffer_start(out123_handle *ao) { int writerfd = ao->buffermem->fd[XF_WRITER]; - if(xfermem_putcmd(writerfd, BUF_CMD_START) != 1) + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_START) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return -1; @@ -387,40 +387,40 @@ int buffer_start(out123_handle *ao) #define BUFFER_SIMPLE_CONTROL(name, cmd) \ void name(out123_handle *ao) \ { \ - xfermem_putcmd(ao->buffermem->fd[XF_WRITER], cmd); \ - xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE); \ + INT123_xfermem_putcmd(ao->buffermem->fd[XF_WRITER], cmd); \ + INT123_xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE); \ } -BUFFER_SIMPLE_CONTROL(buffer_stop, BUF_CMD_STOP) -BUFFER_SIMPLE_CONTROL(buffer_continue, XF_CMD_CONTINUE) -BUFFER_SIMPLE_CONTROL(buffer_ignore_lowmem, XF_CMD_IGNLOW) -BUFFER_SIMPLE_CONTROL(buffer_drain, XF_CMD_DRAIN) -BUFFER_SIMPLE_CONTROL(buffer_end, XF_CMD_TERMINATE) -BUFFER_SIMPLE_CONTROL(buffer_close, BUF_CMD_CLOSE) +BUFFER_SIMPLE_CONTROL(INT123_buffer_stop, BUF_CMD_STOP) +BUFFER_SIMPLE_CONTROL(INT123_buffer_continue, XF_CMD_CONTINUE) +BUFFER_SIMPLE_CONTROL(INT123_buffer_ignore_lowmem, XF_CMD_IGNLOW) +BUFFER_SIMPLE_CONTROL(INT123_buffer_drain, XF_CMD_DRAIN) +BUFFER_SIMPLE_CONTROL(INT123_buffer_end, XF_CMD_TERMINATE) +BUFFER_SIMPLE_CONTROL(INT123_buffer_close, BUF_CMD_CLOSE) #define BUFFER_SIGNAL_CONTROL(name, cmd) \ void name(out123_handle *ao) \ { \ kill(ao->buffer_pid, SIGINT); \ - xfermem_putcmd(ao->buffermem->fd[XF_WRITER], cmd); \ - xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE); \ + INT123_xfermem_putcmd(ao->buffermem->fd[XF_WRITER], cmd); \ + INT123_xfermem_getcmd(ao->buffermem->fd[XF_WRITER], TRUE); \ } -BUFFER_SIGNAL_CONTROL(buffer_pause, XF_CMD_PAUSE) -BUFFER_SIGNAL_CONTROL(buffer_drop, XF_CMD_DROP) +BUFFER_SIGNAL_CONTROL(INT123_buffer_pause, XF_CMD_PAUSE) +BUFFER_SIGNAL_CONTROL(INT123_buffer_drop, XF_CMD_DROP) -size_t buffer_fill(out123_handle *ao) +size_t INT123_buffer_fill(out123_handle *ao) { - return xfermem_get_usedspace(ao->buffermem); + return INT123_xfermem_get_usedspace(ao->buffermem); } -void buffer_ndrain(out123_handle *ao, size_t bytes) +void INT123_buffer_ndrain(out123_handle *ao, size_t bytes) { size_t oldfill; int writerfd = ao->buffermem->fd[XF_WRITER]; - oldfill = buffer_fill(ao); - if(xfermem_putcmd(writerfd, BUF_CMD_NDRAIN) != 1) + oldfill = INT123_buffer_fill(ao); + if(INT123_xfermem_putcmd(writerfd, BUF_CMD_NDRAIN) != 1) { ao->errcode = OUT123_BUFFER_ERROR; return; @@ -438,7 +438,7 @@ void buffer_ndrain(out123_handle *ao, size_t bytes) /* The workhorse: Send data to the buffer with some synchronization and even error checking. */ -size_t buffer_write(out123_handle *ao, void *buffer, size_t bytes) +size_t INT123_buffer_write(out123_handle *ao, void *buffer, size_t bytes) { /* Writing the whole buffer in one piece is no good as that means @@ -452,7 +452,7 @@ size_t buffer_write(out123_handle *ao, void *buffer, size_t bytes) size_t count_piece = bytes > max_piece ? max_piece : bytes; - int ret = xfermem_write(ao->buffermem + int ret = INT123_xfermem_write(ao->buffermem , (char*)buffer+written, count_piece); if(ret) { @@ -543,7 +543,7 @@ static void skip_bytes(int fd, size_t count) while(count) { char buf[1024]; - if(!unintr_read(fd, buf, (count < sizeof(buf) ? count : sizeof(buf)))) + if(!INT123_unintr_read(fd, buf, (count < sizeof(buf) ? count : sizeof(buf)))) return; } } @@ -655,10 +655,10 @@ int buffer_loop(out123_handle *ao) ao->flags &= ~OUT123_KEEP_PLAYING; /* No need for that here. */ /* Be prepared to use SIGINT for communication. */ - catchsignal (SIGINT, catch_interrupt); + INT123_catchsignal (SIGINT, catch_interrupt); /* sigprocmask (SIG_SETMASK, oldsigset, NULL); */ /* Say hello to the writer. */ - xfermem_putcmd(my_fd, XF_CMD_PONG); + INT123_xfermem_putcmd(my_fd, XF_CMD_PONG); debug1("buffer with preload %g", ao->preload); while(1) @@ -666,7 +666,7 @@ int buffer_loop(out123_handle *ao) /* If a device is opened and playing, it is our first duty to keep it playing. */ if(mystate == play_live) { - size_t bytes = xfermem_get_usedspace(xf); + size_t bytes = INT123_xfermem_get_usedspace(xf); debug4( "Play or preload? Got %"SIZE_P" B / %"SIZE_P" B (%i,%i)." , (size_p)bytes, (size_p)preload_size(ao), preloading, draining ); if(preloading) @@ -704,7 +704,7 @@ int buffer_loop(out123_handle *ao) int cmdcount; int i; - cmdcount = xfermem_getcmds( my_fd + cmdcount = INT123_xfermem_getcmds( my_fd , (preloading || intflag || (mystate != play_live)) , cmd , sizeof(cmd) ); @@ -740,10 +740,10 @@ int buffer_loop(out123_handle *ao) /* Expecting ping-pong only while playing! Otherwise, the writer could get stuck waiting for free space forever. */ if(mystate == play_live) - xfermem_putcmd(my_fd, XF_CMD_PONG); + INT123_xfermem_putcmd(my_fd, XF_CMD_PONG); else { - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); if(ao->errcode == OUT123_OK) ao->errcode = OUT123_NOT_LIVE; if(!GOOD_WRITEVAL(my_fd, ao->errcode)) @@ -756,7 +756,7 @@ int buffer_loop(out123_handle *ao) writer will notice soon enough. */ read_parameters(ao, XF_READER, cmd, &i, cmdcount); ao->flags &= ~OUT123_KEEP_PLAYING; /* No need for that here. */ - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case BUF_CMD_OPEN: { @@ -778,7 +778,7 @@ int buffer_loop(out123_handle *ao) mystate = ao->state; if(success) { - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); if( xfer_write_string(ao, XF_READER, ao->driver) || xfer_write_string(ao, XF_READER, ao->device) || xfer_write_string(ao, XF_READER, ao->realname ) @@ -787,7 +787,7 @@ int buffer_loop(out123_handle *ao) } else { - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); /* Again, no sense to bitch around about communication errors, just quit. */ if(!GOOD_WRITEVAL(my_fd, ao->errcode)) @@ -800,7 +800,7 @@ int buffer_loop(out123_handle *ao) out123_close(ao); draining = FALSE; mystate = ao->state; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case BUF_CMD_AUDIOCAP: { @@ -816,13 +816,13 @@ int buffer_loop(out123_handle *ao) mystate = ao->state; if(encodings >= 0) { - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); if(!GOOD_WRITEVAL(my_fd, encodings)) return 2; } else { - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); if(!GOOD_WRITEVAL(my_fd, ao->errcode)) return 2; } @@ -846,7 +846,7 @@ int buffer_loop(out123_handle *ao) read_record( ao, XF_READER, (void**)&rates , cmd, &i, cmdcount, &blocksize ) ){ - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); if(!GOOD_WRITEVAL(my_fd, ao->errcode)) return 2; } @@ -862,7 +862,7 @@ int buffer_loop(out123_handle *ao) blocksize = sizeof(*fmtlist)*fmtcount; debug2("responding with %i formats (block: %"SIZE_P")" , fmtcount, (size_p)blocksize); - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); success = GOOD_WRITEVAL(my_fd, fmtcount) && GOOD_WRITEVAL(my_fd, blocksize) @@ -872,7 +872,7 @@ int buffer_loop(out123_handle *ao) return 2; } else { - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); if(!GOOD_WRITEVAL(my_fd, ao->errcode)) return 2; } @@ -892,12 +892,12 @@ int buffer_loop(out123_handle *ao) out123_pause(ao); /* Be nice, start only on buffer_play(). */ mystate = play_live; preloading = TRUE; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); } else { mystate = ao->state; - xfermem_putcmd(my_fd, XF_CMD_ERROR); + INT123_xfermem_putcmd(my_fd, XF_CMD_ERROR); if(!GOOD_WRITEVAL(my_fd, ao->errcode)) return 2; } @@ -907,13 +907,13 @@ int buffer_loop(out123_handle *ao) if(mystate == play_live) { /* Drain is implied! */ size_t bytes; - while((bytes = xfermem_get_usedspace(xf))) + while((bytes = INT123_xfermem_get_usedspace(xf))) buffer_play(ao, bytes); } out123_stop(ao); draining = FALSE; mystate = ao->state; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case XF_CMD_CONTINUE: intflag = FALSE; @@ -921,12 +921,12 @@ int buffer_loop(out123_handle *ao) mystate = play_live; /* We'll get errors reported later if that is not right. */ preloading = FALSE; /* It should continue without delay. */ draining = FALSE; /* But outburst should be cared for. */ - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case XF_CMD_IGNLOW: intflag = FALSE; preloading = FALSE; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case XF_CMD_DRAIN: debug("buffer drain"); @@ -935,7 +935,7 @@ int buffer_loop(out123_handle *ao) { size_t bytes; while( - (bytes = xfermem_get_usedspace(xf)) + (bytes = INT123_xfermem_get_usedspace(xf)) && bytes > ao->framesize ) buffer_play(ao, bytes); @@ -943,7 +943,7 @@ int buffer_loop(out123_handle *ao) mystate = ao->state; } draining = FALSE; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case BUF_CMD_NDRAIN: { @@ -964,14 +964,14 @@ int buffer_loop(out123_handle *ao) { size_t bytes; while( - (bytes = xfermem_get_usedspace(xf)) + (bytes = INT123_xfermem_get_usedspace(xf)) && bytes > ao->framesize && oldfill >= bytes /* paranoia, overflow would handle it anyway */ && (oldfill-bytes) < limit ) buffer_play(ao, bytes > limit ? limit : bytes); /* Only drain hardware if the end was reached. */ - if(!xfermem_get_usedspace(xf)) + if(!INT123_xfermem_get_usedspace(xf)) { out123_drain(ao); mystate = ao->state; @@ -982,28 +982,28 @@ int buffer_loop(out123_handle *ao) } else debug("drain without playback ... not good"); - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); } break; case XF_CMD_TERMINATE: intflag = FALSE; /* Will that response always reach the writer? Well, at worst, - it's an ignored error on xfermem_getcmd(). */ - xfermem_putcmd(my_fd, XF_CMD_OK); + it's an ignored error on INT123_xfermem_getcmd(). */ + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); return 0; case XF_CMD_PAUSE: intflag = FALSE; draining = FALSE; out123_pause(ao); mystate = ao->state; - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; case XF_CMD_DROP: intflag = FALSE; draining = FALSE; xf->readindex = xf->freeindex; out123_drop(ao); - xfermem_putcmd(my_fd, XF_CMD_OK); + INT123_xfermem_putcmd(my_fd, XF_CMD_OK); break; default: if(!AOQUIET) diff --git a/src/libout123/buffer.h b/src/libout123/buffer.h index d0780a1..4421593 100644 --- a/src/libout123/buffer.h +++ b/src/libout123/buffer.h @@ -19,39 +19,39 @@ #include "out123_int.h" #include "compat.h" -int buffer_init(out123_handle *ao, size_t bytes); -void buffer_exit(out123_handle *ao); +int INT123_buffer_init(out123_handle *ao, size_t bytes); +void INT123_buffer_exit(out123_handle *ao); /* Messages with payload. */ -int buffer_sync_param(out123_handle *ao); -int buffer_open(out123_handle *ao, const char* driver, const char* device); -int buffer_encodings(out123_handle *ao); -int buffer_formats( out123_handle *ao, const long *rates, int ratecount +int INT123_buffer_sync_param(out123_handle *ao); +int INT123_buffer_open(out123_handle *ao, const char* driver, const char* device); +int INT123_buffer_encodings(out123_handle *ao); +int INT123_buffer_formats( out123_handle *ao, const long *rates, int ratecount , int minchannels, int maxchannels , struct mpg123_fmt **fmtlist ); -int buffer_start(out123_handle *ao); -void buffer_ndrain(out123_handle *ao, size_t bytes); +int INT123_buffer_start(out123_handle *ao); +void INT123_buffer_ndrain(out123_handle *ao, size_t bytes); /* Simple messages to be deal with after playback. */ -void buffer_stop(out123_handle *ao); -void buffer_close(out123_handle *ao); -void buffer_continue(out123_handle *ao); +void INT123_buffer_stop(out123_handle *ao); +void INT123_buffer_close(out123_handle *ao); +void INT123_buffer_continue(out123_handle *ao); /* Still undecided if that one is to be used anywhere. */ -void buffer_ignore_lowmem(out123_handle *ao); -void buffer_drain(out123_handle *ao); -void buffer_end(out123_handle *ao); +void INT123_buffer_ignore_lowmem(out123_handle *ao); +void INT123_buffer_drain(out123_handle *ao); +void INT123_buffer_end(out123_handle *ao); /* Simple messages with interruption of playback. */ -void buffer_pause(out123_handle *ao); -void buffer_drop(out123_handle *ao); +void INT123_buffer_pause(out123_handle *ao); +void INT123_buffer_drop(out123_handle *ao); /* The actual work: Hand over audio data. */ -size_t buffer_write(out123_handle *ao, void *buffer, size_t bytes); +size_t INT123_buffer_write(out123_handle *ao, void *buffer, size_t bytes); /* Thin wrapper over xfermem giving the current buffer fill. */ -size_t buffer_fill(out123_handle *ao); +size_t INT123_buffer_fill(out123_handle *ao); #endif diff --git a/src/libout123/hextxt.c b/src/libout123/hextxt.c index 9e9010e..74f59e3 100644 --- a/src/libout123/hextxt.c +++ b/src/libout123/hextxt.c @@ -1,8 +1,8 @@ /* hextxt: hex or printf text output (ASCII/UTF-8) - copyright 2017 by the mpg123 project - - free software under the terms of the LGPL 2.1 + copyright 2017-2023 by the mpg123 project + free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis @@ -52,7 +52,7 @@ static FILE* open_file(const char *path) if(!path || !strcmp("-",path) || !strcmp("",path)) return stdout; else - return compat_fopen(path, "w"); + return INT123_compat_fopen(path, "w"); } /* Hex output defaults to what FhG compliance files used. */ @@ -93,10 +93,10 @@ int hextxt_close(out123_handle *ao) { FILE *fp = ao->userptr; ao->userptr = NULL; - if(fp != stdout && compat_fclose(fp)) + if(fp != stdout && INT123_compat_fclose(fp)) { if(!AOQUIET) - error1("problem closing the output: %s\n", strerror(errno)); + error1("problem closing the output: %s\n", INT123_strerror(errno)); return -1; } } @@ -262,5 +262,5 @@ void hextxt_drain(out123_handle *ao) if(!ao || !ao->userptr) return; if(fflush(ao->userptr) && !AOQUIET) - error1("flushing failed: %s\n", strerror(errno)); + error1("flushing failed: %s\n", INT123_strerror(errno)); } diff --git a/src/libout123/legacy_module.c b/src/libout123/legacy_module.c index a77f2a5..03354b4 100644 --- a/src/libout123/legacy_module.c +++ b/src/libout123/legacy_module.c @@ -16,7 +16,7 @@ extern mpg123_module_t mpg123_output_module_info; /* Open a module */ mpg123_module_t* -open_module(const char* type, const char* name, int verbose, const char *bindir) +INT123_open_module(const char* type, const char* name, int verbose, const char *bindir) { mpg123_module_t *mod = NULL; @@ -56,18 +56,18 @@ open_module(const char* type, const char* name, int verbose, const char *bindir) } -void close_module(mpg123_module_t* module, int verbose) +void INT123_close_module(mpg123_module_t* module, int verbose) { - debug("close_module()"); + debug("INT123_close_module()"); /* Module was never really 'loaded', so nothing to do here. */ } -int list_modules(const char *type, char ***names, char ***descr, int verbose +int INT123_list_modules(const char *type, char ***names, char ***descr, int verbose , const char *bindir) { - debug("list_modules()" ); + debug("INT123_list_modules()" ); *names = NULL; *descr = NULL; @@ -75,10 +75,10 @@ int list_modules(const char *type, char ***names, char ***descr, int verbose if( (*names=malloc(sizeof(char*))) && !((*names)[0]=NULL) /* for safe cleanup */ - && ((*names)[0]=compat_strdup(mpg123_output_module_info.name)) + && ((*names)[0]=INT123_compat_strdup(mpg123_output_module_info.name)) && (*descr=malloc(sizeof(char*))) && !((*descr)[0]=NULL) /* for safe cleanup */ - && ((*descr)[0]=compat_strdup(mpg123_output_module_info.description)) + && ((*descr)[0]=INT123_compat_strdup(mpg123_output_module_info.description)) ) return 1; else diff --git a/src/libout123/libout123.c b/src/libout123/libout123.c index 178548f..f8e9b19 100644 --- a/src/libout123/libout123.c +++ b/src/libout123/libout123.c @@ -1,12 +1,38 @@ /* audio: audio output interface - copyright ?-2020 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ +#define _XOPEN_SOURCE 600 +#define _POSIX_C_SOURCE 200112L + #include "out123_int.h" + +#ifdef HAVE_SYS_TIME_H +#include +#endif + +#ifdef _WIN32 +// for Sleep() +#include +#endif + +// unistd.h sets those +#ifdef HAVE_CLOCK_GETTIME +#if _POSIX_TIMERS > 0 +#include +#ifdef _POSIX_MONSLEEP_CLOCKOTONIC_CLOCK +#define SLEEP_CLOCK CLOCK_MONOTONIC +#else +#define SLEEP_CLOCK CLOCK_REALTIME +#endif +#endif +#endif + +#include "version.h" #include "wav.h" #include "hextxt.h" #ifndef NOXFERMEM @@ -20,6 +46,24 @@ static int have_buffer(out123_handle *ao) #include "debug.h" +const char * attribute_align_arg out123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch) +{ + if(major) + *major = MPG123_MAJOR; + if(minor) + *minor = MPG123_MINOR; + if(patch) + *patch = MPG123_PATCH; + return MPG123_VERSION; +} + +unsigned int attribute_align_arg out123_libversion(unsigned int *patch) +{ + if(patch) + *patch = OUT123_PATCHLEVEL; + return OUT123_API_VERSION; +} + /* An output that is live and does not deal with pausing itself. The device needs to be closed if we stop feeding. */ #define SENSITIVE_OUTPUT(ao) \ @@ -84,7 +128,7 @@ out123_handle* attribute_align_arg out123_new(void) #endif out123_clear_module(ao); - ao->name = compat_strdup(default_name); + ao->name = INT123_compat_strdup(default_name); ao->realname = NULL; ao->driver = NULL; ao->device = NULL; @@ -113,7 +157,7 @@ void attribute_align_arg out123_del(out123_handle *ao) out123_close(ao); /* TODO: That talks to the buffer if present. */ out123_set_buffer(ao, 0); #ifndef NOXFERMEM - if(have_buffer(ao)) buffer_exit(ao); + if(have_buffer(ao)) INT123_buffer_exit(ao); #endif if(ao->name) free(ao->name); @@ -200,9 +244,9 @@ out123_set_buffer(out123_handle *ao, size_t buffer_bytes) out123_close(ao); #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_exit(ao); + INT123_buffer_exit(ao); if(buffer_bytes) - return buffer_init(ao, buffer_bytes); + return INT123_buffer_init(ao, buffer_bytes); #endif return 0; } @@ -255,12 +299,12 @@ out123_param( out123_handle *ao, enum out123_parms code case OUT123_NAME: if(ao->name) free(ao->name); - ao->name = compat_strdup(svalue ? svalue : default_name); + ao->name = INT123_compat_strdup(svalue ? svalue : default_name); break; case OUT123_BINDIR: if(ao->bindir) free(ao->bindir); - ao->bindir = compat_strdup(svalue); + ao->bindir = INT123_compat_strdup(svalue); break; default: ao->errcode = OUT123_BAD_PARAM; @@ -272,7 +316,7 @@ out123_param( out123_handle *ao, enum out123_parms code if(have_buffer(ao)) /* No error check; if that fails, buffer is dead and we will notice soon enough. */ - buffer_sync_param(ao); + INT123_buffer_sync_param(ao); #endif return ret; } @@ -353,10 +397,10 @@ out123_param_from(out123_handle *ao, out123_handle* from_ao) ao->verbose = from_ao->verbose; if(ao->name) free(ao->name); - ao->name = compat_strdup(from_ao->name); + ao->name = INT123_compat_strdup(from_ao->name); if(ao->bindir) free(ao->bindir); - ao->bindir = compat_strdup(from_ao->bindir); + ao->bindir = INT123_compat_strdup(from_ao->bindir); return 0; } @@ -382,7 +426,7 @@ out123_open(out123_handle *ao, const char* driver, const char* device) #ifndef NOXFERMEM if(have_buffer(ao)) { - if(buffer_open(ao, driver, device)) + if(INT123_buffer_open(ao, driver, device)) return OUT123_ERR; } else @@ -397,13 +441,13 @@ out123_open(out123_handle *ao, const char* driver, const char* device) /* It is ridiculous how these error messages are larger than the pieces of memory they are about! */ - if(device && !(ao->device = compat_strdup(device))) + if(device && !(ao->device = INT123_compat_strdup(device))) { if(!AOQUIET) error("OOM device name copy"); return out123_seterr(ao, OUT123_DOOM); } - if(!(modnames = compat_strdup(names))) + if(!(modnames = INT123_compat_strdup(names))) { out123_close(ao); /* Frees ao->device, too. */ if(!AOQUIET) error("OOM driver names"); @@ -422,7 +466,7 @@ out123_open(out123_handle *ao, const char* driver, const char* device) if(AOVERBOSE(2)) fprintf(stderr, "Chosen output module: %s\n", curname); /* A bit redundant, but useful when it's a fake module. */ - if(!(ao->driver = compat_strdup(curname))) + if(!(ao->driver = INT123_compat_strdup(curname))) { out123_close(ao); if(!AOQUIET) error("OOM driver name"); @@ -462,14 +506,14 @@ void attribute_align_arg out123_close(out123_handle *ao) #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_close(ao); + INT123_buffer_close(ao); else #endif { if(ao->deinit) ao->deinit(ao); if(ao->module) - close_module(ao->module, modverbose(ao, 0)); + INT123_close_module(ao->module, modverbose(ao, 0)); /* Null module methods and pointer. */ out123_clear_module(ao); } @@ -521,7 +565,7 @@ out123_start(out123_handle *ao, long rate, int channels, int encoding) #ifndef NOXFERMEM if(have_buffer(ao)) { - if(!buffer_start(ao)) + if(!INT123_buffer_start(ao)) { ao->state = play_live; return OUT123_OK; @@ -546,7 +590,7 @@ void attribute_align_arg out123_pause(out123_handle *ao) if(ao && ao->state == play_live) { #ifndef NOXFERMEM - if(have_buffer(ao)){ debug("pause with buffer"); buffer_pause(ao); } + if(have_buffer(ao)){ debug("pause with buffer"); INT123_buffer_pause(ao); } else #endif { @@ -567,7 +611,7 @@ void attribute_align_arg out123_continue(out123_handle *ao) if(ao && ao->state == play_paused) { #ifndef NOXFERMEM - if(have_buffer(ao)) buffer_continue(ao); + if(have_buffer(ao)) INT123_buffer_continue(ao); else #endif /* Re-open live devices to avoid underruns. */ @@ -593,7 +637,7 @@ void attribute_align_arg out123_stop(out123_handle *ao) return; #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_stop(ao); + INT123_buffer_stop(ao); else #endif if( ao->state == play_live @@ -658,7 +702,7 @@ out123_play(out123_handle *ao, void *bytes, size_t count) #ifndef NOXFERMEM if(have_buffer(ao)) - return buffer_write(ao, bytes, count); + return INT123_buffer_write(ao, bytes, count); else #endif { @@ -674,10 +718,10 @@ out123_play(out123_handle *ao, void *bytes, size_t count) do /* Playback in a loop to be able to continue after interruptions. */ { errno = 0; - int block = count > maxcount ? maxcount : count; + int block = count > (size_t)maxcount ? maxcount : (int)count; written = ao->write(ao, bytes, block); debug4( "written: %d errno: %i (%s), keep_on=%d" - , written, errno, strerror(errno) + , written, errno, INT123_strerror(errno) , ao->flags & OUT123_KEEP_PLAYING ); if(written > 0) { @@ -698,7 +742,7 @@ out123_play(out123_handle *ao, void *bytes, size_t count) ao->errcode = OUT123_DEV_PLAY; if(!AOQUIET) merror( "Error in writing audio, wrote only %d of %d (%s?)!" - , written, block, strerror(errno) ); + , written, block, INT123_strerror(errno) ); /* This is a serious issue ending this playback round. */ break; } @@ -718,7 +762,7 @@ void attribute_align_arg out123_drop(out123_handle *ao) ao->errcode = 0; #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_drop(ao); + INT123_buffer_drop(ao); else #endif if(ao->state == play_live) @@ -744,7 +788,7 @@ void attribute_align_arg out123_drain(out123_handle *ao) } #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_drain(ao); + INT123_buffer_drain(ao); else #endif { @@ -770,7 +814,7 @@ void attribute_align_arg out123_ndrain(out123_handle *ao, size_t bytes) } #ifndef NOXFERMEM if(have_buffer(ao)) - buffer_ndrain(ao, bytes); + INT123_buffer_ndrain(ao, bytes); else #endif { @@ -812,6 +856,166 @@ static int test_close(out123_handle *ao) return 0; } +#ifdef SLEEP_CLOCK +// Sleep output sleeps for the proper time, but +// in a way that still allows overlap with actual +// computation, keeping this amount of milliseconds +// in a pretend buffer and returning. This has to be less +// than 1000(less than a second). +static long sleep_buf = 500; +// Otherwise, coarse sleep()ing is used. +static const long billion = 1000000000; + +// zero-saturating subtraction of time, paranoid about time_t being signed +static void ts_sub_zero(struct timespec *a, const struct timespec *b) +{ + long long nsec = a->tv_nsec - b->tv_nsec; + long long sec = a->tv_sec - b->tv_sec; + sec += nsec/billion; + nsec = nsec%billion; + if(nsec < 0) + { + sec -= 1; + nsec = billion+nsec; + } + if(sec < 0) + { + sec = 0; + nsec = 0; + } + a->tv_sec = (time_t)sec; + a->tv_nsec = (long)nsec; +} + +static void ts_update(struct timespec *mytime) +{ + struct timespec now, passed; + if(clock_gettime(SLEEP_CLOCK, &now)) + { + mytime[1].tv_sec = 0; + mytime[1].tv_nsec = 0; + return; + } + passed = now; + ts_sub_zero(&passed, mytime); + mytime[0] = now; + ts_sub_zero(mytime+1, &passed); +} +#else +// Sleep coarslely. Proper operation only with clock. +static void sleep_seconds(unsigned long s) +{ +#ifdef _WIN32 + Sleep(s*1000); +#else + sleep(s); +#endif +} +#endif + + +static int sleep_open(out123_handle *ao) +{ + if(!ao) + return OUT123_ERR; + if(ao->format < 0) + { + ao->rate = 44100; + ao->channels = 2; + ao->format = MPG123_ENC_SIGNED_16; + return 0; + } + if(ao->rate < 1) + return OUT123_ERR; +#ifdef SLEEP_CLOCK + // Two time counters: + // 0: last time we played something + // 1: remaining time in buffer + struct timespec *mytime = malloc(2*sizeof(struct timespec)); + ao->userptr = mytime; + if(mytime) + { + mytime[0].tv_sec = 0; + mytime[0].tv_nsec = 0; + mytime[1].tv_sec = 0; + mytime[1].tv_nsec = 0; + // Check once if clock_gettime() actually works. + if(clock_gettime(SLEEP_CLOCK, mytime)) + { + free(mytime); + ao->userptr = NULL; + } + } +#else + unsigned long *buffer_ms = malloc(sizeof(unsigned long)); + ao->userptr = buffer_ms; + if(buffer_ms) + *buffer_ms = 0; +#endif + return (ao->userptr ? OUT123_OK : OUT123_ERR); +} + +static int sleep_close(out123_handle *ao) +{ + if(!ao) + return -1; + if(ao->userptr) + free(ao->userptr); + ao->userptr = NULL; + return 0; +} + +static int sleep_write(out123_handle *ao, unsigned char *buf, int len) +{ + if(!ao) + return -1; + double duration = (double)len/((double)ao->framesize*ao->rate); +#ifdef SLEEP_CLOCK + struct timespec *mytime = ao->userptr; + mytime[1].tv_sec += (time_t)duration; + mytime[1].tv_nsec += (long)((duration-(time_t)duration)*billion); + ts_update(mytime); + while(mytime[1].tv_sec > 0 || mytime[1].tv_nsec > sleep_buf*1000000) + { + useconds_t sleep_ms; + if(mytime[1].tv_sec > 0) + sleep_ms = 1000 - sleep_buf; + else + sleep_ms = mytime[1].tv_nsec/1000000 - sleep_buf; + usleep(sleep_ms); + ts_update(mytime); + } +#else + // Just sleep off the whole seconds; + unsigned long *ms = ao->userptr; + *ms += (unsigned long)(duration*1000); + sleep_seconds(*ms/1000); + *ms %= 1000; +#endif + return len; +} + +static void sleep_drain(out123_handle *ao) +{ + if(!ao || !ao->userptr) + return; +#ifdef SLEEP_CLOCK + struct timespec *mytime = ao->userptr; + ts_update(mytime); + while(mytime[1].tv_sec || mytime[1].tv_nsec) + { + usleep(mytime[1].tv_sec ? 1000000 : mytime[1].tv_nsec/1000000); + ts_update(mytime); + } +#else + unsigned long *ms = ao->userptr; + sleep_seconds(*ms/1000); + if(*ms%1000 > 500) + sleep_seconds(1); + *ms = 0; +#endif +} + /* Open one of our builtin driver modules. */ static int open_fake_module(out123_handle *ao, const char *driver) { @@ -826,48 +1030,60 @@ static int open_fake_module(out123_handle *ao, const char *driver) ao->close = test_close; } else + if(!strcmp("sleep", driver)) + { + ao->propflags |= OUT123_PROP_LIVE|OUT123_PROP_PERSISTENT; + ao->open = sleep_open; + ao->close = sleep_close; + ao->get_formats = test_get_formats; + ao->write = sleep_write; + ao->flush = builtin_nothing; + ao->drain = sleep_drain; + ao->close = sleep_close; + } + else if(!strcmp("raw", driver)) { ao->propflags &= ~OUT123_PROP_LIVE; - ao->open = raw_open; - ao->get_formats = raw_formats; - ao->write = wav_write; + ao->open = INT123_raw_open; + ao->get_formats = INT123_raw_formats; + ao->write = INT123_wav_write; ao->flush = builtin_nothing; - ao->drain = wav_drain; - ao->close = raw_close; + ao->drain = INT123_wav_drain; + ao->close = INT123_raw_close; } else if(!strcmp("wav", driver)) { ao->propflags &= ~OUT123_PROP_LIVE; - ao->open = wav_open; - ao->get_formats = wav_formats; - ao->write = wav_write; + ao->open = INT123_wav_open; + ao->get_formats = INT123_wav_formats; + ao->write = INT123_wav_write; ao->flush = builtin_nothing; - ao->drain = wav_drain; - ao->close = wav_close; + ao->drain = INT123_wav_drain; + ao->close = INT123_wav_close; } else if(!strcmp("cdr", driver)) { ao->propflags &= ~OUT123_PROP_LIVE; - ao->open = cdr_open; - ao->get_formats = cdr_formats; - ao->write = wav_write; + ao->open = INT123_cdr_open; + ao->get_formats = INT123_cdr_formats; + ao->write = INT123_wav_write; ao->flush = builtin_nothing; - ao->drain = wav_drain; - ao->close = raw_close; + ao->drain = INT123_wav_drain; + ao->close = INT123_raw_close; } else if(!strcmp("au", driver)) { ao->propflags &= ~OUT123_PROP_LIVE; - ao->open = au_open; - ao->get_formats = au_formats; - ao->write = wav_write; + ao->open = INT123_au_open; + ao->get_formats = INT123_au_formats; + ao->write = INT123_wav_write; ao->flush = builtin_nothing; - ao->drain = wav_drain; - ao->close = au_close; + ao->drain = INT123_wav_drain; + ao->close = INT123_au_close; } else if(!strcmp("hex", driver)) @@ -913,7 +1129,7 @@ static void check_output_module( out123_handle *ao return; /* Open the module, initial check for availability+libraries. */ - ao->module = open_module( "output", name, modverbose(ao, final), ao->bindir); + ao->module = INT123_open_module( "output", name, modverbose(ao, final), ao->bindir); if(!ao->module) return; /* Check if module supports output */ @@ -959,7 +1175,7 @@ static void check_output_module( out123_handle *ao check_output_module_cleanup: /* Only if module did not check out we get to clean up here. */ - close_module(ao->module, modverbose(ao, final)); + INT123_close_module(ao->module, modverbose(ao, final)); out123_clear_module(ao); return; } @@ -991,8 +1207,8 @@ out123_drivers(out123_handle *ao, char ***names, char ***descr) /* Wrap the call to isolate the lower levels from the user not being interested in both lists. it's a bit wasteful, but the code looks ugly enough already down there. */ - count = list_modules("output", &tmpnames, &tmpdescr, modverbose(ao, 0), ao->bindir); - debug1("list_modules()=%i", count); + count = INT123_list_modules("output", &tmpnames, &tmpdescr, modverbose(ao, 0), ao->bindir); + debug1("INT123_list_modules()=%i", count); if(count < 0) { if(!AOQUIET) @@ -1001,19 +1217,21 @@ out123_drivers(out123_handle *ao, char ***names, char ***descr) } if( - stringlists_add( &tmpnames, &tmpdescr + INT123_stringlists_add( &tmpnames, &tmpdescr , "raw", "raw headerless stream (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr , "cdr", "compact disc digital audio stream (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr , "wav", "RIFF WAVE file (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr , "au", "Sun AU file (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr , "test", "output into the void (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr + , "sleep", "output into the void that takes its time (builtin)", &count ) + || INT123_stringlists_add( &tmpnames, &tmpdescr , "hex", "interleaved hex printout (builtin)", &count ) - || stringlists_add( &tmpnames, &tmpdescr + || INT123_stringlists_add( &tmpnames, &tmpdescr , "txt", "plain text printout, a column per channel (builtin)", &count ) ) if(!AOQUIET) @@ -1045,7 +1263,7 @@ static int devlist_add(void *dll, const char *name, const char *descr) { struct devlist *dl = (struct devlist*)dll; return dl - ? stringlists_add(&(dl->names), &(dl->descr), name, descr, &(dl->count)) + ? INT123_stringlists_add(&(dl->names), &(dl->descr), name, descr, &(dl->count)) : -1; } @@ -1067,14 +1285,14 @@ int out123_devices( out123_handle *ao, const char *driver, char ***names, char * // If the driver is a single word, not a list with commas. // Then don't try to open drivers just to know which we are talking about. if(driver && strchr(driver, ',') == NULL) - realdrv = compat_strdup(driver); + realdrv = INT123_compat_strdup(driver); else { mdebug("need to find a driver from: %s", driver ? driver : DEFAULT_OUTPUT_MODULE); if(out123_open(ao, driver, NULL) != OUT123_OK) return out123_seterr(ao, OUT123_BAD_DRIVER); mdebug("deduced driver: %s", ao->driver); - realdrv = compat_strdup(ao->driver); + realdrv = INT123_compat_strdup(ao->driver); } if(realdrv == NULL) return out123_seterr(ao, OUT123_DOOM); @@ -1083,7 +1301,7 @@ int out123_devices( out123_handle *ao, const char *driver, char ***names, char * if(open_fake_module(ao, realdrv) != OUT123_OK) { - ao->module = open_module( "output", realdrv + ao->module = INT123_open_module( "output", realdrv , modverbose(ao, 0), ao->bindir ); /* Open the module, initial check for availability+libraries. */ if( !ao->module || !ao->module->init_output @@ -1121,7 +1339,7 @@ int out123_devices( out123_handle *ao, const char *driver, char ***names, char * free(realdrv); if(ao->module) - close_module(ao->module, modverbose(ao, 0)); + INT123_close_module(ao->module, modverbose(ao, 0)); out123_clear_module(ao); return ret; } @@ -1163,7 +1381,7 @@ out123_encodings(out123_handle *ao, long rate, int channels) ao->rate = rate; #ifndef NOXFERMEM if(have_buffer(ao)) - return buffer_encodings(ao); + return INT123_buffer_encodings(ao); else #endif { @@ -1219,7 +1437,7 @@ out123_formats( out123_handle *ao, const long *rates, int ratecount #ifndef NOXFERMEM if(have_buffer(ao)) - return buffer_formats( ao, rates, ratecount + return INT123_buffer_formats( ao, rates, ratecount , minchannels, maxchannels, fmtlist ); else #endif @@ -1288,7 +1506,7 @@ size_t attribute_align_arg out123_buffered(out123_handle *ao) #ifndef NOXFERMEM if(have_buffer(ao)) { - size_t fill = buffer_fill(ao); + size_t fill = INT123_buffer_fill(ao); debug2("out123_buffered(%p) = %"SIZE_P, (void*)ao, (size_p)fill); return fill; } diff --git a/src/libout123/module.c b/src/libout123/module.c index eac1747..7ede2d3 100644 --- a/src/libout123/module.c +++ b/src/libout123/module.c @@ -1,7 +1,7 @@ /* module.c: modular code loader - copyright 1995-2015 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Nicholas J Humfrey */ @@ -10,7 +10,6 @@ #define _DEFAULT_SOURCE #define _BSD_SOURCE #include "config.h" -#include "intsym.h" #include "stringlists.h" #include "compat.h" #include @@ -42,12 +41,12 @@ static char *get_module_dir(int verbose, const char* bindir) char *moddir = NULL; char *defaultdir; /* First the environment override, then relative to bindir, then installation prefix. */ - defaultdir = compat_getenv("MPG123_MODDIR"); + defaultdir = INT123_compat_getenv("MPG123_MODDIR"); if(defaultdir) { if(verbose > 1) fprintf(stderr, "Trying module directory from environment: %s\n", defaultdir); - if(compat_isdir(defaultdir)) + if(INT123_compat_isdir(defaultdir)) moddir = defaultdir; else free(defaultdir); @@ -61,12 +60,12 @@ static char *get_module_dir(int verbose, const char* bindir) fprintf(stderr, "Module dir search relative to: %s\n", bindir); for(i=0; i 1) fprintf(stderr, "Looking for module dir: %s\n", moddir); - if(compat_isdir(moddir)) + if(INT123_compat_isdir(moddir)) break; /* found it! */ else { @@ -77,11 +76,11 @@ static char *get_module_dir(int verbose, const char* bindir) } if(!moddir) /* Resort to installation prefix. */ { - if(compat_isdir(PKGLIBDIR)) + if(INT123_compat_isdir(PKGLIBDIR)) { if(verbose > 1) fprintf(stderr, "Using default module dir: %s\n", PKGLIBDIR); - moddir = compat_strdup(PKGLIBDIR); + moddir = INT123_compat_strdup(PKGLIBDIR); } } } @@ -109,11 +108,11 @@ mpg123_module_t* open_module_here( const char *dir, const char* type if(!module_file) { if(verbose > -1) - error1( "Failed to allocate memory for module name: %s", strerror(errno) ); + error1( "Failed to allocate memory for module name: %s", INT123_strerror(errno) ); return NULL; } snprintf(module_file, module_file_len, "%s_%s%s", type, name, LT_MODULE_EXT); - module_path = compat_catpath(dir, module_file); + module_path = INT123_compat_catpath(dir, module_file); free(module_file); if(!module_path) { @@ -125,7 +124,7 @@ mpg123_module_t* open_module_here( const char *dir, const char* type fprintf(stderr, "Module path: %s\n", module_path ); /* Open the module */ - handle = compat_dlopen(module_path); + handle = INT123_compat_dlopen(module_path); free(module_path); if (handle==NULL) { @@ -141,14 +140,14 @@ mpg123_module_t* open_module_here( const char *dir, const char* type module_symbol = malloc(module_symbol_len); if (module_symbol == NULL) { if(verbose > -1) - error1( "Failed to allocate memory for module symbol: %s", strerror(errno) ); + error1( "Failed to allocate memory for module symbol: %s", INT123_strerror(errno) ); return NULL; } snprintf( module_symbol, module_symbol_len, "%s%s%s", MODULE_SYMBOL_PREFIX, type, MODULE_SYMBOL_SUFFIX ); debug1( "Module symbol: %s", module_symbol ); /* Get the information structure from the module */ - module = (mpg123_module_t*)compat_dlsym(handle, module_symbol); + module = (mpg123_module_t*)INT123_compat_dlsym(handle, module_symbol); free( module_symbol ); if (module==NULL) { if(verbose > -1) @@ -161,7 +160,7 @@ mpg123_module_t* open_module_here( const char *dir, const char* type { if(verbose > -1) error2( "API version of module does not match (got %i, expected %i).", module->api_version, MPG123_MODULE_API_VERSION); - compat_dlclose(handle); + INT123_compat_dlclose(handle); return NULL; } @@ -172,7 +171,7 @@ mpg123_module_t* open_module_here( const char *dir, const char* type /* Open a module, including directory search. */ -mpg123_module_t* open_module( const char* type, const char* name, int verbose +mpg123_module_t* INT123_open_module( const char* type, const char* name, int verbose , const char* bindir ) { mpg123_module_t *module = NULL; @@ -192,12 +191,12 @@ mpg123_module_t* open_module( const char* type, const char* name, int verbose return module; } -void close_module( mpg123_module_t* module, int verbose ) +void INT123_close_module( mpg123_module_t* module, int verbose ) { - compat_dlclose(module->handle); + INT123_compat_dlclose(module->handle); } -int list_modules( const char *type, char ***names, char ***descr, int verbose +int INT123_list_modules( const char *type, char ***names, char ***descr, int verbose , const char* bindir ) { char *moddir = NULL; @@ -220,16 +219,16 @@ int list_modules( const char *type, char ***names, char ***descr, int verbose debug1("module dir: %s", moddir); /* Open the module directory */ - dir = compat_diropen(moddir); + dir = INT123_compat_diropen(moddir); if (dir==NULL) { if(verbose > -1) error2("Failed to open the module directory (%s): %s\n" - , moddir, strerror(errno)); + , moddir, INT123_strerror(errno)); free(moddir); return -1; } - while((filename=compat_nextfile(dir))) + while((filename=INT123_compat_nextfile(dir))) { /* Pointers to the pieces. */ char *module_name = NULL; @@ -286,17 +285,17 @@ int list_modules( const char *type, char ***names, char ***descr, int verbose Yes, this re-builds the file name we chopped to pieces just now. */ if((module=open_module_here(moddir, module_type, module_name, verbose))) { - if( stringlists_add( names, descr + if( INT123_stringlists_add( names, descr , module->name, module->description, &count) ) if(verbose > -1) error("OOM"); /* Close the module again */ - close_module(module, verbose); + INT123_close_module(module, verbose); } list_modules_continue: free(filename); } - compat_dirclose(dir); + INT123_compat_dirclose(dir); return count; } diff --git a/src/libout123/module.h b/src/libout123/module.h index 7c08652..fdde6c2 100644 --- a/src/libout123/module.h +++ b/src/libout123/module.h @@ -35,10 +35,10 @@ typedef struct mpg123_module_struct { /* ------ Declarations from "module.c" ------ */ -mpg123_module_t* open_module( const char* type, const char* name, int verbose +mpg123_module_t* INT123_open_module( const char* type, const char* name, int verbose , const char* bindir ); -void close_module(mpg123_module_t* module, int verbose); -int list_modules( const char *type, char ***names, char ***descr, int verbose +void INT123_close_module(mpg123_module_t* module, int verbose); +int INT123_list_modules( const char *type, char ***names, char ***descr, int verbose , const char* bindir ); #endif diff --git a/src/libout123/modules/alib.c b/src/libout123/modules/alib.c index 4d1cf41..c16872e 100644 --- a/src/libout123/modules/alib.c +++ b/src/libout123/modules/alib.c @@ -15,7 +15,7 @@ * CC=cc \ * LDFLAGS=-L/opt/audio/lib \ * AUDIO_LIB=-lAlib \ - * OBJECTS=decode.o dct64.o \ + * OBJECTS=decode.o INT123_dct64.o \ * CFLAGS=-Ae +O3 -DREAL_IS_FLOAT -D_HPUX_SOURCE -DHPUX -I/opt/audio/include \ * mpg123 */ diff --git a/src/libout123/modules/jack.c b/src/libout123/modules/jack.c index 9d68fe7..57d51c3 100644 --- a/src/libout123/modules/jack.c +++ b/src/libout123/modules/jack.c @@ -305,7 +305,7 @@ static int connect_jack_ports(out123_handle *ao ++wish_channels; debug1("wish_channels: %i", wish_channels); wishlist = malloc(sizeof(char*)*(wish_channels+1)); - devcopy = compat_strdup(ao->device); + devcopy = INT123_compat_strdup(ao->device); if(devcopy == NULL || wishlist == NULL) { if(devcopy) @@ -522,7 +522,7 @@ static int open_jack(out123_handle *ao) } debug("Jack open successful.\n"); - ao->realname = compat_strdup(realname); + ao->realname = INT123_compat_strdup(realname); return 0; } diff --git a/src/libout123/modules/win32_wasapi.c b/src/libout123/modules/win32_wasapi.c index c7b567e..4385648 100644 --- a/src/libout123/modules/win32_wasapi.c +++ b/src/libout123/modules/win32_wasapi.c @@ -128,7 +128,7 @@ static int open_win32(out123_handle *ao){ EXIT_ON_ERROR(hr) if (ao->device) { - devlen = win32_utf8_wide(ao->device, &device, NULL); + devlen = INT123_win32_utf8_wide(ao->device, &device, NULL); if(device && devlen > 0) { hr = IMMDeviceEnumerator_GetDevice(state->pEnumerator, device, &state->pDevice); mdebug("IMMDeviceEnumerator_GetDevice %x", hr); @@ -545,7 +545,7 @@ static int enumerate_win32( out123_handle *ao, int (*store_device)(void *devlist if(FAILED(hr) || pProps == NULL) goto Exit; /* get ID */ - win32_wide_utf8(pwszID, &pszID, NULL); + INT123_win32_wide_utf8(pwszID, &pszID, NULL); if(pszID == NULL) goto Exit; /* get Property */ @@ -557,7 +557,7 @@ static int enumerate_win32( out123_handle *ao, int (*store_device)(void *devlist } /* get Description*/ - win32_wide_utf8(varName.pwszVal, &pszDesc, NULL); + INT123_win32_wide_utf8(varName.pwszVal, &pszDesc, NULL); PropVariantClear(&varName); if(pszDesc == NULL) goto Exit; diff --git a/src/libout123/out123.h.in b/src/libout123/out123.h similarity index 97% rename from src/libout123/out123.h.in rename to src/libout123/out123.h index 9e5d173..681e5dc 100644 --- a/src/libout123/out123.h.in +++ b/src/libout123/out123.h @@ -14,6 +14,14 @@ /** \file out123.h The header file for the libout123 audio output facility. */ +/** A macro to check at compile time which set of API functions to expect. + * This must be incremented at least each time a new symbol is added + * to the header. + */ +#define OUT123_API_VERSION 5 +/** library patch level at client build time */ +#define OUT123_PATCHLEVEL 0 + /* We only need size_t definition. */ #include @@ -23,15 +31,7 @@ * know sizes of encodings added to fmt123.h later on. * If you don't care, just use the macro. */ -#include - -/** A macro to check at compile time which set of API functions to expect. - * This should be incremented at least each time a new symbol is added - * to the header. - */ -#ifndef OUT123_API_VERSION -#define OUT123_API_VERSION @OUTAPI_VERSION@ -#endif +#include "fmt123.h" #ifndef MPG123_EXPORT /** Defines needed for MS Visual Studio(tm) DLL builds. @@ -118,6 +118,23 @@ struct out123_struct; /** Typedef shortcut as preferrend name for the handle type. */ typedef struct out123_struct out123_handle; +/** Get version of the mpg123 distribution this library build came with. + * (optional means non-NULL) + * \param major optional address to store major version number + * \param minor optional address to store minor version number + * \param patch optional address to store patchlevel version number + * \return full version string (like "1.2.3-beta4 (experimental)") + */ +MPG123_EXPORT +const char *out123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch); + +/** Get API version of library build. + * \param patch optional address to store patchlevel + * \return API version of library + */ +MPG123_EXPORT +unsigned int out123_libversion(unsigned int *patch); + /** Enumeration of codes for the parameters that it is possible to set/get. */ enum out123_parms { diff --git a/src/libout123/out123_int.h b/src/libout123/out123_int.h index 33890ec..e597ef9 100644 --- a/src/libout123/out123_int.h +++ b/src/libout123/out123_int.h @@ -1,7 +1,7 @@ /* out123_int: internal header for libout123 - copyright ?-2021 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp (some traces left) */ @@ -12,12 +12,7 @@ #define MPG123_ENUM_API #include "config.h" -#include "intsym.h" #include "abi_align.h" -/* export DLL symbols */ -#if defined(WIN32) && defined(DYNAMIC_BUILD) -#define BUILD_MPG123_DLL -#endif #include "compat.h" #include "out123.h" #include "module.h" @@ -106,10 +101,10 @@ struct out123_struct /* Lazy. */ #define AOQUIET ((ao->auxflags | ao->flags) & OUT123_QUIET) #define AOVERBOSE(v) (!AOQUIET && ao->verbose >= (v)) -#define GOOD_WRITEVAL(fd, val) (unintr_write(fd, &(val), sizeof((val))) == sizeof((val))) -#define GOOD_WRITEBUF(fd, addr, n) (unintr_write(fd, (addr), (n)) == (n)) -#define GOOD_READVAL(fd, val) (unintr_read(fd, &(val), sizeof((val))) == sizeof((val))) -#define GOOD_READBUF(fd, addr, n) (unintr_read(fd, (addr), (n)) == (n)) +#define GOOD_WRITEVAL(fd, val) (INT123_unintr_write(fd, &(val), sizeof((val))) == sizeof((val))) +#define GOOD_WRITEBUF(fd, addr, n) (INT123_unintr_write(fd, (addr), (n)) == (n)) +#define GOOD_READVAL(fd, val) (INT123_unintr_read(fd, &(val), sizeof((val))) == sizeof((val))) +#define GOOD_READBUF(fd, addr, n) (INT123_unintr_read(fd, (addr), (n)) == (n)) struct audio_format_name { int val; diff --git a/src/libout123/stringlists.c b/src/libout123/stringlists.c index 23002a7..203f3c1 100644 --- a/src/libout123/stringlists.c +++ b/src/libout123/stringlists.c @@ -15,7 +15,7 @@ static char* always_strdup(const char *in) { - char *out = in ? compat_strdup(in) : malloc(1); + char *out = in ? INT123_compat_strdup(in) : malloc(1); if(!in && out) out[0] = 0; return out; @@ -24,7 +24,7 @@ static char* always_strdup(const char *in) /* Construction helper for paired string lists. Returns 0 on success. */ // Also converts NULL to empty string for safer use later. -int stringlists_add( char ***alist, char ***blist +int INT123_stringlists_add( char ***alist, char ***blist , const char *atext, const char *btext, int *count) { char *atextcopy = NULL; @@ -35,9 +35,9 @@ int stringlists_add( char ***alist, char ***blist /* If one of these succeeded, the old memory is gone, so always overwrite the old pointer, worst case is wasted but not leaked memory in an out-of-memory situation. */ - if((morealist = safe_realloc(*alist, sizeof(char*)*(*count+1)))) + if((morealist = INT123_safe_realloc(*alist, sizeof(char*)*(*count+1)))) *alist = morealist; - if((moreblist = safe_realloc(*blist, sizeof(char*)*(*count+1)))) + if((moreblist = INT123_safe_realloc(*blist, sizeof(char*)*(*count+1)))) *blist = moreblist; if(!morealist || !moreblist) return -1; diff --git a/src/libout123/stringlists.h b/src/libout123/stringlists.h index 2c95faa..8e3fc33 100644 --- a/src/libout123/stringlists.h +++ b/src/libout123/stringlists.h @@ -10,7 +10,7 @@ #ifndef MPG123_H_STRINGLISTS #define MPG123_H_STRINGLISTS -int stringlists_add( char ***alist, char ***blist +int INT123_stringlists_add( char ***alist, char ***blist , const char *atext, const char *btext, int *count); #endif diff --git a/src/libout123/wav.c b/src/libout123/wav.c index 7c4ff13..7f852b1 100644 --- a/src/libout123/wav.c +++ b/src/libout123/wav.c @@ -1,7 +1,7 @@ /* wav.c: write wav/au/cdr files (and headerless raw - copyright ?-2015 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Samuel Audet @@ -98,7 +98,7 @@ static void wavdata_del(struct wavdata *wdat) { if(!wdat) return; if(wdat->wavfp && wdat->wavfp != stdout) - compat_fclose(wdat->wavfp); + INT123_compat_fclose(wdat->wavfp); if(wdat->the_header) free(wdat->the_header); free(wdat); @@ -144,11 +144,12 @@ static long from_little(byte *inval, int b) static int testEndian(void) { - long i,a=0,b=0,c=0; + long a=0,b=0,c=0; int ret = 0; + size_t i; for(i=0;iwavfp = stdout; - compat_binmode(STDOUT_FILENO, TRUE); + INT123_compat_binmode(STDOUT_FILENO, TRUE); /* If stdout is redirected to a file, seeks suddenly can work. Doing one here to ensure that such a file has the same output it had when opening directly as such. */ @@ -179,7 +180,7 @@ static int open_file(struct wavdata *wdat, char *filename) } else { - wdat->wavfp = compat_fopen(filename, "wb"); + wdat->wavfp = INT123_compat_fopen(filename, "wb"); if(!wdat->wavfp) return -1; else @@ -197,10 +198,10 @@ static int close_file(out123_handle *ao) if(wdat->wavfp != NULL && wdat->wavfp != stdout) { - if(compat_fclose(wdat->wavfp)) + if(INT123_compat_fclose(wdat->wavfp)) { if(!AOQUIET) - error1("problem closing the audio file, probably because of flushing to disk: %s\n", strerror(errno)); + error1("problem closing the audio file, probably because of flushing to disk: %s\n", INT123_strerror(errno)); ret = -1; } } @@ -229,13 +230,13 @@ static int write_header(out123_handle *ao) ) { if(!AOQUIET) - error1("cannot write header: %s", strerror(errno)); + error1("cannot write header: %s", INT123_strerror(errno)); return -1; } else return 0; } -int au_open(out123_handle *ao) +int INT123_au_open(out123_handle *ao) { struct wavdata *wdat = NULL; struct auhead *auhead = NULL; @@ -314,7 +315,7 @@ au_open_bad: return -1; } -int cdr_open(out123_handle *ao) +int INT123_cdr_open(out123_handle *ao) { struct wavdata *wdat = NULL; @@ -361,7 +362,7 @@ cdr_open_bad: } /* RAW files are headerless WAVs where the format does not matter. */ -int raw_open(out123_handle *ao) +int INT123_raw_open(out123_handle *ao) { struct wavdata *wdat; @@ -390,7 +391,7 @@ raw_open_bad: return -1; } -int wav_open(out123_handle *ao) +int INT123_wav_open(out123_handle *ao) { int bps; struct wavdata *wdat = NULL; @@ -539,7 +540,7 @@ wav_open_bad: return -1; } -int wav_write(out123_handle *ao, unsigned char *buf, int len) +int INT123_wav_write(out123_handle *ao, unsigned char *buf, int len) { struct wavdata *wdat = ao->userptr; int temp; @@ -595,7 +596,7 @@ int wav_write(out123_handle *ao, unsigned char *buf, int len) if(fflush(wdat->wavfp)) { if(!AOQUIET) - error1("flushing failed: %s\n", strerror(errno)); + error1("flushing failed: %s\n", INT123_strerror(errno)); return -1; } #endif @@ -604,7 +605,7 @@ if(fflush(wdat->wavfp)) return temp; } -int wav_close(out123_handle *ao) +int INT123_wav_close(out123_handle *ao) { struct wavdata *wdat = ao->userptr; @@ -618,7 +619,7 @@ int wav_close(out123_handle *ao) if(fflush(wdat->wavfp)) { if(!AOQUIET) - error1("cannot flush WAV stream: %s", strerror(errno)); + error1("cannot flush WAV stream: %s", INT123_strerror(errno)); return close_file(ao); } if(fseek(wdat->wavfp, 0L, SEEK_SET) >= 0) @@ -658,7 +659,7 @@ int wav_close(out123_handle *ao) return close_file(ao); } -int au_close(out123_handle *ao) +int INT123_au_close(out123_handle *ao) { struct wavdata *wdat = ao->userptr; @@ -672,7 +673,7 @@ int au_close(out123_handle *ao) if(fflush(wdat->wavfp)) { if(!AOQUIET) - error1("cannot flush WAV stream: %s", strerror(errno)); + error1("cannot flush WAV stream: %s", INT123_strerror(errno)); return close_file(ao); } if(fseek(wdat->wavfp, 0L, SEEK_SET) >= 0) @@ -690,7 +691,7 @@ int au_close(out123_handle *ao) } /* CDR data also uses that. */ -int raw_close(out123_handle *ao) +int INT123_raw_close(out123_handle *ao) { struct wavdata *wdat = ao->userptr; @@ -705,7 +706,7 @@ int raw_close(out123_handle *ao) /* Some trivial functions to interface with out123's module architecture. */ -int cdr_formats(out123_handle *ao) +int INT123_cdr_formats(out123_handle *ao) { if(ao->rate == 44100 && ao->channels == 2) return MPG123_ENC_SIGNED_16; @@ -713,17 +714,17 @@ int cdr_formats(out123_handle *ao) return 0; } -int au_formats(out123_handle *ao) +int INT123_au_formats(out123_handle *ao) { return MPG123_ENC_SIGNED_16|MPG123_ENC_UNSIGNED_8|MPG123_ENC_ULAW_8; } -int raw_formats(out123_handle *ao) +int INT123_raw_formats(out123_handle *ao) { return MPG123_ENC_ANY; } -int wav_formats(out123_handle *ao) +int INT123_wav_formats(out123_handle *ao) { return MPG123_ENC_SIGNED_16 @@ -737,7 +738,7 @@ int wav_formats(out123_handle *ao) One could call fsync(), too, but to be safe, that would need to be called on the directory, too. Also, apps randomly calling fsync() can cause annoying issues in a system. */ -void wav_drain(out123_handle *ao) +void INT123_wav_drain(out123_handle *ao) { struct wavdata *wdat = ao->userptr; @@ -745,5 +746,5 @@ void wav_drain(out123_handle *ao) return; if(fflush(wdat->wavfp) && !AOQUIET) - error1("flushing failed: %s\n", strerror(errno)); + error1("flushing failed: %s\n", INT123_strerror(errno)); } diff --git a/src/libout123/wav.h b/src/libout123/wav.h index 8718972..5d928b6 100644 --- a/src/libout123/wav.h +++ b/src/libout123/wav.h @@ -15,19 +15,19 @@ /* Interfaces from wav.c, variants of file writing, to be combined into fake modules by the main library code. */ -int au_open(out123_handle *); -int cdr_open(out123_handle *); -int raw_open(out123_handle *); -int wav_open(out123_handle *); -int wav_write(out123_handle *, unsigned char *buf, int len); -int wav_close(out123_handle *); -int au_close(out123_handle *); -int raw_close(out123_handle *); -int cdr_formats(out123_handle *); -int au_formats(out123_handle *); -int raw_formats(out123_handle *); -int wav_formats(out123_handle *); -void wav_drain(out123_handle *); +int INT123_au_open(out123_handle *); +int INT123_cdr_open(out123_handle *); +int INT123_raw_open(out123_handle *); +int INT123_wav_open(out123_handle *); +int INT123_wav_write(out123_handle *, unsigned char *buf, int len); +int INT123_wav_close(out123_handle *); +int INT123_au_close(out123_handle *); +int INT123_raw_close(out123_handle *); +int INT123_cdr_formats(out123_handle *); +int INT123_au_formats(out123_handle *); +int INT123_raw_formats(out123_handle *); +int INT123_wav_formats(out123_handle *); +void INT123_wav_drain(out123_handle *); #endif diff --git a/src/libout123/xfermem.c b/src/libout123/xfermem.c index 9e235a4..fb638e6 100644 --- a/src/libout123/xfermem.c +++ b/src/libout123/xfermem.c @@ -1,7 +1,7 @@ /* xfermem: unidirectional fast pipe - copyright ?-2015 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Oliver Fromme old timestamp: Sun Apr 6 02:26:26 MET DST 1997 @@ -30,7 +30,7 @@ #define MAP_ANON MAP_ANONYMOUS #endif -void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) +void INT123_xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) { size_t regsize = bufsize + msize + skipbuf + sizeof(txfermem); @@ -68,13 +68,13 @@ void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) } if (shmctl(shmemid, IPC_RMID, &shmemds) == -1) { perror ("shmctl()"); - xfermem_done (*xf); + INT123_xfermem_done (*xf); exit (1); } #endif if (socketpair(AF_UNIX, SOCK_STREAM, 0, (*xf)->fd) < 0) { perror ("socketpair()"); - xfermem_done (*xf); + INT123_xfermem_done (*xf); exit (1); } (*xf)->freeindex = (*xf)->readindex = 0; @@ -84,7 +84,7 @@ void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) (*xf)->metasize = msize + skipbuf; } -void xfermem_done (txfermem *xf) +void INT123_xfermem_done (txfermem *xf) { if(!xf) return; @@ -101,21 +101,21 @@ void xfermem_done (txfermem *xf) #endif } -void xfermem_init_writer (txfermem *xf) +void INT123_xfermem_init_writer (txfermem *xf) { if(xf) close (xf->fd[XF_READER]); debug1("xfermem writer fd=%i", xf->fd[XF_WRITER]); } -void xfermem_init_reader (txfermem *xf) +void INT123_xfermem_init_reader (txfermem *xf) { if(xf) close (xf->fd[XF_WRITER]); debug1("xfermem reader fd=%i", xf->fd[XF_READER]); } -size_t xfermem_get_freespace (txfermem *xf) +size_t INT123_xfermem_get_freespace (txfermem *xf) { size_t freeindex, readindex; @@ -131,7 +131,7 @@ size_t xfermem_get_freespace (txfermem *xf) return ((xf->size - (freeindex - readindex)) - 1); } -size_t xfermem_get_usedspace (txfermem *xf) +size_t INT123_xfermem_get_usedspace (txfermem *xf) { size_t freeindex, readindex; @@ -193,36 +193,36 @@ static int xfermem_getcmd_raw (int fd, int block, byte *cmds, int count) } /* Verbose variant for debugging communication. */ -int xfermem_getcmd(int fd, int block) +int INT123_xfermem_getcmd(int fd, int block) { byte cmd; int res = xfermem_getcmd_raw(fd, block, &cmd, 1); - debug3("xfermem_getcmd(%i, %i) = %i", fd, block, res == 1 ? cmd : res); + debug3("INT123_xfermem_getcmd(%i, %i) = %i", fd, block, res == 1 ? cmd : res); return res == 1 ? cmd : res; } -int xfermem_getcmds(int fd, int block, byte *cmds, int count) +int INT123_xfermem_getcmds(int fd, int block, byte *cmds, int count) { int res = xfermem_getcmd_raw(fd, block, cmds, count); - debug5("xfermem_getcmds(%i, %i, %p, %i) = %i" + debug5("INT123_xfermem_getcmds(%i, %i, %p, %i) = %i" , fd, block, (void*)cmds, count , res); return res; } -int xfermem_putcmd (int fd, byte cmd) +int INT123_xfermem_putcmd (int fd, byte cmd) { for (;;) { switch (write(fd, &cmd, 1)) { case 1: - debug2("xfermem_putcmd(%i, %i) = 1", fd, cmd); + debug2("INT123_xfermem_putcmd(%i, %i) = 1", fd, cmd); return (1); case -1: if (errno != EINTR) { - debug3("xfermem_putcmd(%i, %i) = -1 (%s)" - , fd, cmd, strerror(errno)); + debug3("INT123_xfermem_putcmd(%i, %i) = -1 (%s)" + , fd, cmd, INT123_strerror(errno)); return (-1); } } @@ -241,9 +241,9 @@ int xfermem_putcmd (int fd, byte cmd) hanging for a while. The critical side is that of the reader. Because of that, it is only sensible to provide a voluntary - xfermem_writer_block() here. The reader does not need such a function. + INT123_xfermem_writer_block() here. The reader does not need such a function. Only if it has nothing else to do, it will simply block on - xfermem_getcmd(), and the writer promises to xfermem_putcmd() when + INT123_xfermem_getcmd(), and the writer promises to INT123_xfermem_putcmd() when something happens. The writer always sends a wakeup command to the reader since the latter @@ -257,13 +257,13 @@ int xfermem_putcmd (int fd, byte cmd) /* Wait a bit to get a sign of life from the reader. Returns -1 if even that did not work. */ -int xfermem_writer_block(txfermem *xf) +int INT123_xfermem_writer_block(txfermem *xf) { int myfd = xf->fd[XF_WRITER]; int result; - xfermem_putcmd(myfd, XF_CMD_PING); - result = xfermem_getcmd(myfd, TRUE); + INT123_xfermem_putcmd(myfd, XF_CMD_PING); + result = INT123_xfermem_getcmd(myfd, TRUE); /* Only a pong to my ping is the expected good answer. Everything else is a problem to be communicated. */ return (result == XF_CMD_PONG) ? 0 : result; @@ -272,14 +272,14 @@ int xfermem_writer_block(txfermem *xf) /* Return: 0 on success, -1 on communication error, > 0 for error on buffer side, some special return code from buffer to be evaluated. */ -int xfermem_write(txfermem *xf, void *buffer, size_t bytes) +int INT123_xfermem_write(txfermem *xf, void *buffer, size_t bytes) { if(buffer == NULL || bytes < 1) return 0; /* You weren't so braindead not allocating enough space at all, right? */ - while (xfermem_get_freespace(xf) < bytes) + while (INT123_xfermem_get_freespace(xf) < bytes) { - int cmd = xfermem_writer_block(xf); + int cmd = INT123_xfermem_writer_block(xf); if(cmd) /* Non-successful wait. */ return cmd; } @@ -298,7 +298,7 @@ int xfermem_write(txfermem *xf, void *buffer, size_t bytes) xf->freeindex = (xf->freeindex + bytes) % xf->size; /* Always notify the buffer process. */ debug("write waking"); - return xfermem_putcmd(xf->fd[XF_WRITER], XF_CMD_DATA) < 0 + return INT123_xfermem_putcmd(xf->fd[XF_WRITER], XF_CMD_DATA) < 0 ? -1 : 0; } diff --git a/src/libout123/xfermem.h b/src/libout123/xfermem.h index 4481595..d623266 100644 --- a/src/libout123/xfermem.h +++ b/src/libout123/xfermem.h @@ -37,12 +37,12 @@ typedef struct { * All other entries are initialized once. */ -void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf); -void xfermem_init_writer (txfermem *xf); -void xfermem_init_reader (txfermem *xf); +void INT123_xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf); +void INT123_xfermem_init_writer (txfermem *xf); +void INT123_xfermem_init_reader (txfermem *xf); -size_t xfermem_get_freespace (txfermem *xf); -size_t xfermem_get_usedspace (txfermem *xf); +size_t INT123_xfermem_get_freespace (txfermem *xf); +size_t INT123_xfermem_get_usedspace (txfermem *xf); /* Unless otherwise noted, each command demands a reponse if issued from the writer. The reader does not expect responses, only orders. */ @@ -71,16 +71,16 @@ enum xf_cmd_code #define XF_WRITER 0 #define XF_READER 1 -int xfermem_getcmd(int fd, int block); -int xfermem_getcmds(int fd, int block, byte* cmds, int count); -int xfermem_putcmd(int fd, byte cmd); -int xfermem_writer_block(txfermem *xf); +int INT123_xfermem_getcmd(int fd, int block); +int INT123_xfermem_getcmds(int fd, int block, byte* cmds, int count); +int INT123_xfermem_putcmd(int fd, byte cmd); +int INT123_xfermem_writer_block(txfermem *xf); /* returns TRUE for being interrupted */ -int xfermem_write(txfermem *xf, void *buffer, size_t bytes); +int INT123_xfermem_write(txfermem *xf, void *buffer, size_t bytes); -void xfermem_done (txfermem *xf); -#define xfermem_done_writer xfermem_init_reader -#define xfermem_done_reader xfermem_init_writer +void INT123_xfermem_done (txfermem *xf); +#define xfermem_done_writer INT123_xfermem_init_reader +#define xfermem_done_reader INT123_xfermem_init_writer #endif diff --git a/src/libsyn123/Makemodule.am b/src/libsyn123/Makemodule.am index b9f75e3..d85824f 100644 --- a/src/libsyn123/Makemodule.am +++ b/src/libsyn123/Makemodule.am @@ -3,7 +3,11 @@ # This bulds libsyn123, a basic library for some sound synthesis # and format conversion for the mpg123 project. +if BUILD_LIBSYN123 +include_HEADERS += src/libsyn123/syn123.h + lib_LTLIBRARIES += src/libsyn123/libsyn123.la +endif src_libsyn123_libsyn123_la_CFLAGS = @LIB_CFLAGS@ @@ -17,6 +21,7 @@ src_libsyn123_libsyn123_la_LIBADD = \ @LIBSYN123_LIBS@ src_libsyn123_libsyn123_la_SOURCES = \ + src/libsyn123/syn123.h \ src/libsyn123/syn123_int.h \ src/libsyn123/g711_impl.h \ src/libsyn123/pinknoise.c \ @@ -26,8 +31,3 @@ src_libsyn123_libsyn123_la_SOURCES = \ src/libsyn123/resample.c \ src/libsyn123/filter.c \ src/libsyn123/sampleconv.c - -EXTRA_DIST += src/libsyn123/syn123.h.in - -nodist_include_HEADERS += \ - src/libsyn123/syn123.h diff --git a/src/libsyn123/filter.c b/src/libsyn123/filter.c index 881d388..3f4cc95 100644 --- a/src/libsyn123/filter.c +++ b/src/libsyn123/filter.c @@ -190,7 +190,7 @@ syn123_setup_filter( syn123_handle *sh { \ type *w = Fw(*tmp, c); \ for(unsigned int o=0; oflow = 1; \ } \ diff --git a/src/libsyn123/geiger.c b/src/libsyn123/geiger.c index be494f3..abd6559 100644 --- a/src/libsyn123/geiger.c +++ b/src/libsyn123/geiger.c @@ -224,10 +224,10 @@ static void geiger_init(struct geigerspace *gs, double activity, long rate) // Experimenting, actually. Some relation to the speaker. gs->force_scale = 50000.*gs->mass*0.001/(4.*gs->dead_s*gs->dead_s); - float event_likelihood = activity*gs->time_interval; - if(event_likelihood > 1.) - event_likelihood = 1.; - gs->thres = 1.-event_likelihood; + float event_likelihood = (float)(activity*gs->time_interval); + if(event_likelihood > 1.f) + event_likelihood = 1.f; + gs->thres = 1.f-event_likelihood; } static void geiger_generator(syn123_handle *sh, int samples) diff --git a/src/libsyn123/libsyn123.c b/src/libsyn123/libsyn123.c index 9cd9937..2a8fa77 100644 --- a/src/libsyn123/libsyn123.c +++ b/src/libsyn123/libsyn123.c @@ -20,9 +20,28 @@ */ #include "syn123_int.h" +#include "version.h" #include "sample.h" #include "debug.h" +const char * attribute_align_arg syn123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch) +{ + if(major) + *major = MPG123_MAJOR; + if(minor) + *minor = MPG123_MINOR; + if(patch) + *patch = MPG123_PATCH; + return MPG123_VERSION; +} + +unsigned int attribute_align_arg syn123_libversion(unsigned int *patch) +{ + if(patch) + *patch = SYN123_PATCHLEVEL; + return SYN123_API_VERSION; +} + static const double freq_error = 1e-4; /* For our precisions, that value will always be good enough. */ static const double twopi = 2.0*3.14159265358979323846; @@ -189,7 +208,7 @@ static double wave_shot(double p) // Actual wave worker function, to be used to give up to // bufblock samples in one go. This takes a vector of phases // and multiplies the resulting amplitudes into the output buffer. -static void evaluate_wave( double outbuf[bufblock], int samples +static void evaluate_wave( double outbuf[bufblock], size_t samples , enum syn123_wave_id id, double phase[bufblock] ) { // Ensuring that the inner loop is inside the switch. @@ -197,7 +216,7 @@ static void evaluate_wave( double outbuf[bufblock], int samples // to write it down the right way from the beginning. #define PHASE phase[pi] #define PI_LOOP( code ) \ - for(int pi=0; piworkbuf[1][i] = 1; /* Add individual waves. */ - for(int c=0; cwave_count; ++c) + for(size_t c=0; cwave_count; ++c) wave_add_buffer( sh->workbuf[1], samples, sh->fmt.rate, sh->waves+c , sh->workbuf[0] ); } diff --git a/src/libsyn123/resample.c b/src/libsyn123/resample.c index 991f610..f8a91ce 100644 --- a/src/libsyn123/resample.c +++ b/src/libsyn123/resample.c @@ -106,43 +106,43 @@ TODO: initialize with first sample or zero? is there an actual benefit? impulse // filter critical frequency in fractions of Nyquist static const float lpf_w_c[LPF_POINTS] = { - +1.9500000000e-01 -, +1.9867850841e-01 -, +2.0682630822e-01 -, +2.1914822332e-01 -, +2.3516664873e-01 -, +2.5424242424e-01 -, +2.7560276877e-01 -, +2.9837505460e-01 -, +3.2162494540e-01 -, +3.4439723123e-01 -, +3.6575757576e-01 -, +3.8483335127e-01 -, +4.0085177668e-01 -, +4.1317369178e-01 -, +4.2132149159e-01 -, +4.2500000000e-01 + +1.9500000000e-01f +, +1.9867850841e-01f +, +2.0682630822e-01f +, +2.1914822332e-01f +, +2.3516664873e-01f +, +2.5424242424e-01f +, +2.7560276877e-01f +, +2.9837505460e-01f +, +3.2162494540e-01f +, +3.4439723123e-01f +, +3.6575757576e-01f +, +3.8483335127e-01f +, +4.0085177668e-01f +, +4.1317369178e-01f +, +4.2132149159e-01f +, +4.2500000000e-01f }; // actual cutoff frequency in fractions of Nyquist static const float lpf_cutoff[LPF_POINTS] = { - +2.4618202393e-01 -, +2.5064642208e-01 -, +2.6050157602e-01 -, +2.7531601376e-01 -, +2.9440817636e-01 -, +3.1688954073e-01 -, +3.4172256063e-01 -, +3.6778811727e-01 -, +3.9395465344e-01 -, +4.1914062138e-01 -, +4.4236385073e-01 -, +4.6277512916e-01 -, +4.7967708029e-01 -, +4.9253194430e-01 -, +5.0096263453e-01 -, +5.0475083567e-01 + +2.4618202393e-01f +, +2.5064642208e-01f +, +2.6050157602e-01f +, +2.7531601376e-01f +, +2.9440817636e-01f +, +3.1688954073e-01f +, +3.4172256063e-01f +, +3.6778811727e-01f +, +3.9395465344e-01f +, +4.1914062138e-01f +, +4.4236385073e-01f +, +4.6277512916e-01f +, +4.7967708029e-01f +, +4.9253194430e-01f +, +5.0096263453e-01f +, +5.0475083567e-01f }; // filter bandwidth (passband fraction in percent) @@ -169,191 +169,191 @@ static const unsigned char lpf_bw[LPF_POINTS] = // coefficient b_0 static const float lpf_b0[LPF_POINTS] = { - +2.5060910358e-02 -, +2.5545546150e-02 -, +2.6658960397e-02 -, +2.8449469363e-02 -, +3.0975593417e-02 -, +3.4290689410e-02 -, +3.8423542124e-02 -, +4.3355834055e-02 -, +4.8998511458e-02 -, +5.5171358029e-02 -, +6.1592382077e-02 -, +6.7884279531e-02 -, +7.3603031799e-02 -, +7.8288471817e-02 -, +8.1529628810e-02 -, +8.3031304399e-02 + +2.5060910358e-02f +, +2.5545546150e-02f +, +2.6658960397e-02f +, +2.8449469363e-02f +, +3.0975593417e-02f +, +3.4290689410e-02f +, +3.8423542124e-02f +, +4.3355834055e-02f +, +4.8998511458e-02f +, +5.5171358029e-02f +, +6.1592382077e-02f +, +6.7884279531e-02f +, +7.3603031799e-02f +, +7.8288471817e-02f +, +8.1529628810e-02f +, +8.3031304399e-02f }; // derivative d b_0/d w_c static const float lpf_mb0[LPF_POINTS] = { - +1.3023622859e-01 -, +1.3326373417e-01 -, +1.4006275119e-01 -, +1.5061692736e-01 -, +1.6489815146e-01 -, +1.8285716898e-01 -, +2.0437030679e-01 -, +2.2914833420e-01 -, +2.5663256095e-01 -, +2.8591120057e-01 -, +3.1568709259e-01 -, +3.4431969261e-01 -, +3.6995119359e-01 -, +3.9070858956e-01 -, +4.0495210591e-01 -, +4.1152140765e-01 + +1.3023622859e-01f +, +1.3326373417e-01f +, +1.4006275119e-01f +, +1.5061692736e-01f +, +1.6489815146e-01f +, +1.8285716898e-01f +, +2.0437030679e-01f +, +2.2914833420e-01f +, +2.5663256095e-01f +, +2.8591120057e-01f +, +3.1568709259e-01f +, +3.4431969261e-01f +, +3.6995119359e-01f +, +3.9070858956e-01f +, +4.0495210591e-01f +, +4.1152140765e-01f }; // coefficients b_1 to b_n static const float lpf_b[LPF_POINTS][LPF_ORDER] = { - { -5.1762847048e-02, +8.4153207389e-02, -8.3511150073e-02 - , +8.4153207389e-02, -5.1762847048e-02, +2.5060910358e-02 } -, { -5.0602124846e-02, +8.2431045673e-02, -8.0086433599e-02 - , +8.2431045673e-02, -5.0602124846e-02, +2.5545546150e-02 } -, { -4.7865340043e-02, +7.8920478243e-02, -7.2561589822e-02 - , +7.8920478243e-02, -4.7865340043e-02, +2.6658960397e-02 } -, { -4.3255354022e-02, +7.4480386867e-02, -6.1251009130e-02 - , +7.4480386867e-02, -4.3255354022e-02, +2.8449469363e-02 } -, { -3.6312512281e-02, +7.0487561023e-02, -4.6392636636e-02 - , +7.0487561023e-02, -3.6312512281e-02, +3.0975593417e-02 } -, { -2.6445440921e-02, +6.8811704409e-02, -2.7845395780e-02 - , +6.8811704409e-02, -2.6445440921e-02, +3.4290689410e-02 } -, { -1.3021846935e-02, +7.1687243737e-02, -4.8530219060e-03 - , +7.1687243737e-02, -1.3021846935e-02, +3.8423542124e-02 } -, { +4.4706427843e-03, +8.1414913409e-02, +2.3941615853e-02 - , +8.1414913409e-02, +4.4706427843e-03, +4.3355834055e-02 } -, { +2.6209675772e-02, +9.9864368285e-02, +6.0088123327e-02 - , +9.9864368285e-02, +2.6209675772e-02, +4.8998511458e-02 } -, { +5.1814692315e-02, +1.2783927823e-01, +1.0454069691e-01 - , +1.2783927823e-01, +5.1814692315e-02, +5.5171358029e-02 } -, { +8.0182308668e-02, +1.6447692384e-01, +1.5672311528e-01 - , +1.6447692384e-01, +8.0182308668e-02, +6.1592382077e-02 } -, { +1.0945240695e-01, +2.0692267707e-01, +2.1383540251e-01 - , +2.0692267707e-01, +1.0945240695e-01, +6.7884279531e-02 } -, { +1.3715527898e-01, +2.5049018459e-01, +2.7077975696e-01 - , +2.5049018459e-01, +1.3715527898e-01, +7.3603031799e-02 } -, { +1.6054360691e-01, +2.8938069305e-01, +3.2088440740e-01 - , +2.8938069305e-01, +1.6054360691e-01, +7.8288471817e-02 } -, { +1.7705368035e-01, +3.1783679836e-01, +3.5729711842e-01 - , +3.1783679836e-01, +1.7705368035e-01, +8.1529628810e-02 } -, { +1.8478918080e-01, +3.3142891364e-01, +3.7464012836e-01 - , +3.3142891364e-01, +1.8478918080e-01, +8.3031304399e-02 } + { -5.1762847048e-02f, +8.4153207389e-02f, -8.3511150073e-02f + , +8.4153207389e-02f, -5.1762847048e-02f, +2.5060910358e-02f } +, { -5.0602124846e-02f, +8.2431045673e-02f, -8.0086433599e-02f + , +8.2431045673e-02f, -5.0602124846e-02f, +2.5545546150e-02f } +, { -4.7865340043e-02f, +7.8920478243e-02f, -7.2561589822e-02f + , +7.8920478243e-02f, -4.7865340043e-02f, +2.6658960397e-02f } +, { -4.3255354022e-02f, +7.4480386867e-02f, -6.1251009130e-02f + , +7.4480386867e-02f, -4.3255354022e-02f, +2.8449469363e-02f } +, { -3.6312512281e-02f, +7.0487561023e-02f, -4.6392636636e-02f + , +7.0487561023e-02f, -3.6312512281e-02f, +3.0975593417e-02f } +, { -2.6445440921e-02f, +6.8811704409e-02f, -2.7845395780e-02f + , +6.8811704409e-02f, -2.6445440921e-02f, +3.4290689410e-02f } +, { -1.3021846935e-02f, +7.1687243737e-02f, -4.8530219060e-03f + , +7.1687243737e-02f, -1.3021846935e-02f, +3.8423542124e-02f } +, { +4.4706427843e-03f, +8.1414913409e-02f, +2.3941615853e-02f + , +8.1414913409e-02f, +4.4706427843e-03f, +4.3355834055e-02f } +, { +2.6209675772e-02f, +9.9864368285e-02f, +6.0088123327e-02f + , +9.9864368285e-02f, +2.6209675772e-02f, +4.8998511458e-02f } +, { +5.1814692315e-02f, +1.2783927823e-01f, +1.0454069691e-01f + , +1.2783927823e-01f, +5.1814692315e-02f, +5.5171358029e-02f } +, { +8.0182308668e-02f, +1.6447692384e-01f, +1.5672311528e-01f + , +1.6447692384e-01f, +8.0182308668e-02f, +6.1592382077e-02f } +, { +1.0945240695e-01f, +2.0692267707e-01f, +2.1383540251e-01f + , +2.0692267707e-01f, +1.0945240695e-01f, +6.7884279531e-02f } +, { +1.3715527898e-01f, +2.5049018459e-01f, +2.7077975696e-01f + , +2.5049018459e-01f, +1.3715527898e-01f, +7.3603031799e-02f } +, { +1.6054360691e-01f, +2.8938069305e-01f, +3.2088440740e-01f + , +2.8938069305e-01f, +1.6054360691e-01f, +7.8288471817e-02f } +, { +1.7705368035e-01f, +3.1783679836e-01f, +3.5729711842e-01f + , +3.1783679836e-01f, +1.7705368035e-01f, +8.1529628810e-02f } +, { +1.8478918080e-01f, +3.3142891364e-01f, +3.7464012836e-01f + , +3.3142891364e-01f, +1.8478918080e-01f, +8.3031304399e-02f } }; // derivatives (d b_1/d w_c) to (d b_n/d w_c) static const float lpf_mb[LPF_POINTS][LPF_ORDER] = { - { +3.0947524511e-01, -4.7927490698e-01, +9.3391532013e-01 - , -4.7927490702e-01, +3.0947524507e-01, +1.3023622860e-01 } -, { +3.2168974799e-01, -4.5690983225e-01, +9.2827504448e-01 - , -4.5690983214e-01, +3.2168974795e-01, +1.3326373418e-01 } -, { +3.5049895985e-01, -4.0402713817e-01, +9.1976126033e-01 - , -4.0402713816e-01, +3.5049895984e-01, +1.4006275120e-01 } -, { +3.9869096973e-01, -3.1471026348e-01, +9.1858562318e-01 - , -3.1471026347e-01, +3.9869096972e-01, +1.5061692736e-01 } -, { +4.6976534041e-01, -1.8018044797e-01, +9.4154172198e-01 - , -1.8018044798e-01, +4.6976534042e-01, +1.6489815146e-01 } -, { +5.6706828511e-01, +1.0247608319e-02, +1.0113425453e+00 - , +1.0247608337e-02, +5.6706828510e-01, +1.8285716898e-01 } -, { +6.9280120305e-01, +2.6709404538e-01, +1.1535785914e+00 - , +2.6709404540e-01, +6.9280120305e-01, +2.0437030678e-01 } -, { +8.4703144845e-01, +5.9748112137e-01, +1.3910603904e+00 - , +5.9748112138e-01, +8.4703144845e-01, +2.2914833420e-01 } -, { +1.0268432839e+00, +1.0012919713e+00, +1.7366400230e+00 - , +1.0012919713e+00, +1.0268432839e+00, +2.5663256095e-01 } -, { +1.2257925890e+00, +1.4678100718e+00, +2.1866645243e+00 - , +1.4678100718e+00, +1.2257925891e+00, +2.8591120056e-01 } -, { +1.4338418956e+00, +1.9740692730e+00, +2.7173819083e+00 - , +1.9740692730e+00, +1.4338418956e+00, +3.1568709258e-01 } -, { +1.6379144032e+00, +2.4857766605e+00, +3.2858109638e+00 - , +2.4857766605e+00, +1.6379144032e+00, +3.4431969261e-01 } -, { +1.8231025322e+00, +2.9609624523e+00, +3.8352350558e+00 - , +2.9609624523e+00, +1.8231025322e+00, +3.6995119359e-01 } -, { +1.9744172816e+00, +3.3557576586e+00, +4.3041807299e+00 - , +3.3557576587e+00, +1.9744172816e+00, +3.9070858955e-01 } -, { +2.0788103417e+00, +3.6311428529e+00, +4.6368982737e+00 - , +3.6311428526e+00, +2.0788103416e+00, +4.0495210591e-01 } -, { +2.1270907033e+00, +3.7592676993e+00, +4.7930965582e+00 - , +3.7592676992e+00, +2.1270907033e+00, +4.1152140769e-01 } + { +3.0947524511e-01f, -4.7927490698e-01f, +9.3391532013e-01f + , -4.7927490702e-01f, +3.0947524507e-01f, +1.3023622860e-01f } +, { +3.2168974799e-01f, -4.5690983225e-01f, +9.2827504448e-01f + , -4.5690983214e-01f, +3.2168974795e-01f, +1.3326373418e-01f } +, { +3.5049895985e-01f, -4.0402713817e-01f, +9.1976126033e-01f + , -4.0402713816e-01f, +3.5049895984e-01f, +1.4006275120e-01f } +, { +3.9869096973e-01f, -3.1471026348e-01f, +9.1858562318e-01f + , -3.1471026347e-01f, +3.9869096972e-01f, +1.5061692736e-01f } +, { +4.6976534041e-01f, -1.8018044797e-01f, +9.4154172198e-01f + , -1.8018044798e-01f, +4.6976534042e-01f, +1.6489815146e-01f } +, { +5.6706828511e-01f, +1.0247608319e-02f, +1.0113425453e+00f + , +1.0247608337e-02f, +5.6706828510e-01f, +1.8285716898e-01f } +, { +6.9280120305e-01f, +2.6709404538e-01f, +1.1535785914e+00f + , +2.6709404540e-01f, +6.9280120305e-01f, +2.0437030678e-01f } +, { +8.4703144845e-01f, +5.9748112137e-01f, +1.3910603904e+00f + , +5.9748112138e-01f, +8.4703144845e-01f, +2.2914833420e-01f } +, { +1.0268432839e+00f, +1.0012919713e+00f, +1.7366400230e+00f + , +1.0012919713e+00f, +1.0268432839e+00f, +2.5663256095e-01f } +, { +1.2257925890e+00f, +1.4678100718e+00f, +2.1866645243e+00f + , +1.4678100718e+00f, +1.2257925891e+00f, +2.8591120056e-01f } +, { +1.4338418956e+00f, +1.9740692730e+00f, +2.7173819083e+00f + , +1.9740692730e+00f, +1.4338418956e+00f, +3.1568709258e-01f } +, { +1.6379144032e+00f, +2.4857766605e+00f, +3.2858109638e+00f + , +2.4857766605e+00f, +1.6379144032e+00f, +3.4431969261e-01f } +, { +1.8231025322e+00f, +2.9609624523e+00f, +3.8352350558e+00f + , +2.9609624523e+00f, +1.8231025322e+00f, +3.6995119359e-01f } +, { +1.9744172816e+00f, +3.3557576586e+00f, +4.3041807299e+00f + , +3.3557576587e+00f, +1.9744172816e+00f, +3.9070858955e-01f } +, { +2.0788103417e+00f, +3.6311428529e+00f, +4.6368982737e+00f + , +3.6311428526e+00f, +2.0788103416e+00f, +4.0495210591e-01f } +, { +2.1270907033e+00f, +3.7592676993e+00f, +4.7930965582e+00f + , +3.7592676992e+00f, +2.1270907033e+00f, +4.1152140769e-01f } }; // coefficients a_1 to a_n static const float lpf_a[LPF_POINTS][LPF_ORDER] = { - { -3.9678160947e+00, +7.1582705272e+00, -7.3103432700e+00 - , +4.4271625605e+00, -1.4968822486e+00, +2.2103607837e-01 } -, { -3.9217586689e+00, +7.0245007818e+00, -7.1375017960e+00 - , +4.3093638600e+00, -1.4547982662e+00, +2.1489651918e-01 } -, { -3.8190188341e+00, +6.7322820225e+00, -6.7643407898e+00 - , +4.0573843887e+00, -1.3653052102e+00, +2.0191441068e-01 } -, { -3.6618359076e+00, +6.3015570638e+00, -6.2251488099e+00 - , +3.6990273202e+00, -1.2392343109e+00, +1.8379956602e-01 } -, { -3.4544704643e+00, +5.7631160859e+00, -5.5687366968e+00 - , +3.2721548186e+00, -1.0907981304e+00, +1.6273969374e-01 } -, { -3.2034885530e+00, +5.1559829152e+00, -4.8508981080e+00 - , +2.8177192974e+00, -9.3461709876e-01, +1.4091459119e-01 } -, { -2.9178775764e+00, +4.5233648501e+00, -4.1259259822e+00 - , +2.3730384158e+00, -7.8317396639e-01, +1.2011720880e-01 } -, { -2.6088711387e+00, +3.9075669790e+00, -3.4391290636e+00 - , +1.9669306242e+00, -6.4531233315e-01, +1.0156466880e-01 } -, { -2.2894468741e+00, +3.3447965777e+00, -2.8221523134e+00 - , +1.6175400427e+00, -5.2592289748e-01, +8.5891269383e-02 } -, { -1.9735577122e+00, +2.8610227169e+00, -2.2920156678e+00 - , +1.3327010249e+00, -4.2655597907e-01, +7.3258414200e-02 } -, { -1.6752255568e+00, +2.4698591405e+00, -1.8535096177e+00 - , +1.1119902037e+00, -3.4650830575e-01, +6.3506595124e-02 } -, { -1.4076456238e+00, +2.1728886190e+00, -1.5035402243e+00 - , +9.4944185607e-01, -2.8395564864e-01, +5.6296779542e-02 } -, { -1.1824218415e+00, +1.9621904134e+00, -1.2356636112e+00 - , +8.3617447471e-01, -2.3684730680e-01, +5.1219220854e-02 } -, { -1.0089985054e+00, +1.8243200388e+00, -1.0434432700e+00 - , +7.6259361700e-01, -2.0344554024e-01, +4.7870210629e-02 } -, { -8.9429544087e-01, +1.7447560305e+00, -9.2208898364e-01 - , +7.2012730057e-01, -1.8252811740e-01, +4.5906155400e-02 } -, { -8.4251214238e-01, +1.7118654093e+00, -8.6865163772e-01 - , +7.0252569491e-01, -1.7335864376e-01, +4.5082431755e-02 } + { -3.9678160947e+00f, +7.1582705272e+00f, -7.3103432700e+00f + , +4.4271625605e+00f, -1.4968822486e+00f, +2.2103607837e-01f } +, { -3.9217586689e+00f, +7.0245007818e+00f, -7.1375017960e+00f + , +4.3093638600e+00f, -1.4547982662e+00f, +2.1489651918e-01f } +, { -3.8190188341e+00f, +6.7322820225e+00f, -6.7643407898e+00f + , +4.0573843887e+00f, -1.3653052102e+00f, +2.0191441068e-01f } +, { -3.6618359076e+00f, +6.3015570638e+00f, -6.2251488099e+00f + , +3.6990273202e+00f, -1.2392343109e+00f, +1.8379956602e-01f } +, { -3.4544704643e+00f, +5.7631160859e+00f, -5.5687366968e+00f + , +3.2721548186e+00f, -1.0907981304e+00f, +1.6273969374e-01f } +, { -3.2034885530e+00f, +5.1559829152e+00f, -4.8508981080e+00f + , +2.8177192974e+00f, -9.3461709876e-01f, +1.4091459119e-01f } +, { -2.9178775764e+00f, +4.5233648501e+00f, -4.1259259822e+00f + , +2.3730384158e+00f, -7.8317396639e-01f, +1.2011720880e-01f } +, { -2.6088711387e+00f, +3.9075669790e+00f, -3.4391290636e+00f + , +1.9669306242e+00f, -6.4531233315e-01f, +1.0156466880e-01f } +, { -2.2894468741e+00f, +3.3447965777e+00f, -2.8221523134e+00f + , +1.6175400427e+00f, -5.2592289748e-01f, +8.5891269383e-02f } +, { -1.9735577122e+00f, +2.8610227169e+00f, -2.2920156678e+00f + , +1.3327010249e+00f, -4.2655597907e-01f, +7.3258414200e-02f } +, { -1.6752255568e+00f, +2.4698591405e+00f, -1.8535096177e+00f + , +1.1119902037e+00f, -3.4650830575e-01f, +6.3506595124e-02f } +, { -1.4076456238e+00f, +2.1728886190e+00f, -1.5035402243e+00f + , +9.4944185607e-01f, -2.8395564864e-01f, +5.6296779542e-02f } +, { -1.1824218415e+00f, +1.9621904134e+00f, -1.2356636112e+00f + , +8.3617447471e-01f, -2.3684730680e-01f, +5.1219220854e-02f } +, { -1.0089985054e+00f, +1.8243200388e+00f, -1.0434432700e+00f + , +7.6259361700e-01f, -2.0344554024e-01f, +4.7870210629e-02f } +, { -8.9429544087e-01f, +1.7447560305e+00f, -9.2208898364e-01f + , +7.2012730057e-01f, -1.8252811740e-01f, +4.5906155400e-02f } +, { -8.4251214238e-01f, +1.7118654093e+00f, -8.6865163772e-01f + , +7.0252569491e-01f, -1.7335864376e-01f, +4.5082431755e-02f } }; // derivatives (d a_1/d w_c) to (d a_n/d w_c) static const float lpf_ma[LPF_POINTS][LPF_ORDER] = { - { +1.2492433161e+01, -3.6517018434e+01, +4.7357395713e+01 - , -3.2369784989e+01, +1.1586055408e+01, -1.6933077254e+00 } -, { +1.2548734957e+01, -3.6212194682e+01, +4.6616582888e+01 - , -3.1678742548e+01, +1.1296037667e+01, -1.6449911143e+00 } -, { +1.2669371015e+01, -3.5511519947e+01, +4.4983356850e+01 - , -3.0180967586e+01, +1.0676583147e+01, -1.5427341805e+00 } -, { +1.2841272347e+01, -3.4388021134e+01, +4.2540425267e+01 - , -2.8002157377e+01, +9.7976496751e+00, -1.3997892255e+00 } -, { +1.3046121049e+01, -3.2820302039e+01, +3.9430990541e+01 - , -2.5324586959e+01, +8.7534918962e+00, -1.2330749768e+00 } -, { +1.3263302462e+01, -3.0810041034e+01, +3.5857000371e+01 - , -2.2361001245e+01, +7.6447176195e+00, -1.0593731098e+00 } -, { +1.3473094693e+01, -2.8396265557e+01, +3.2063474406e+01 - , -1.9323493868e+01, +6.5616850615e+00, -8.9237379829e-01 } -, { +1.3659446627e+01, -2.5661488138e+01, +2.8308712196e+01 - , -1.6394785270e+01, +5.5731925958e+00, -7.4123740640e-01 } -, { +1.3811818531e+01, -2.2727774254e+01, +2.4827395931e+01 - , -1.3709404604e+01, +4.7220289931e+00, -6.1062450746e-01 } -, { +1.3925825330e+01, -1.9744316114e+01, +2.1797535816e+01 - , -1.1348774538e+01, +4.0264909835e+00, -5.0168575497e-01 } -, { +1.4002735155e+01, -1.6870564740e+01, +1.9320924822e+01 - , -9.3489487064e+00, +3.4855436350e+00, -4.1340259191e-01 } -, { +1.4048120627e+01, -1.4259541011e+01, +1.7421558040e+01 - , -7.7156336592e+00, +3.0852238544e+00, -3.4381636627e-01 } -, { +1.4070068384e+01, -1.2044779182e+01, +1.6060419989e+01 - , -6.4399486362e+00, +2.8047048140e+00, -2.9090554179e-01 } -, { +1.4077328201e+01, -1.0332356944e+01, +1.5160803823e+01 - , -5.5100288590e+00, +2.6213968366e+00, -2.5305663714e-01 } -, { +1.4077683041e+01, -9.1976058009e+00, +1.4636862941e+01 - , -4.9166414668e+00, +2.5150332199e+00, -2.2919336158e-01 } -, { +1.4076709161e+01, -8.6849570278e+00, +1.4418874781e+01 - , -4.6538327513e+00, +2.4707840042e+00, -2.1869079956e-01 } + { +1.2492433161e+01f, -3.6517018434e+01f, +4.7357395713e+01f + , -3.2369784989e+01f, +1.1586055408e+01f, -1.6933077254e+00f } +, { +1.2548734957e+01f, -3.6212194682e+01f, +4.6616582888e+01f + , -3.1678742548e+01f, +1.1296037667e+01f, -1.6449911143e+00f } +, { +1.2669371015e+01f, -3.5511519947e+01f, +4.4983356850e+01f + , -3.0180967586e+01f, +1.0676583147e+01f, -1.5427341805e+00f } +, { +1.2841272347e+01f, -3.4388021134e+01f, +4.2540425267e+01f + , -2.8002157377e+01f, +9.7976496751e+00f, -1.3997892255e+00f } +, { +1.3046121049e+01f, -3.2820302039e+01f, +3.9430990541e+01f + , -2.5324586959e+01f, +8.7534918962e+00f, -1.2330749768e+00f } +, { +1.3263302462e+01f, -3.0810041034e+01f, +3.5857000371e+01f + , -2.2361001245e+01f, +7.6447176195e+00f, -1.0593731098e+00f } +, { +1.3473094693e+01f, -2.8396265557e+01f, +3.2063474406e+01f + , -1.9323493868e+01f, +6.5616850615e+00f, -8.9237379829e-01f } +, { +1.3659446627e+01f, -2.5661488138e+01f, +2.8308712196e+01f + , -1.6394785270e+01f, +5.5731925958e+00f, -7.4123740640e-01f } +, { +1.3811818531e+01f, -2.2727774254e+01f, +2.4827395931e+01f + , -1.3709404604e+01f, +4.7220289931e+00f, -6.1062450746e-01f } +, { +1.3925825330e+01f, -1.9744316114e+01f, +2.1797535816e+01f + , -1.1348774538e+01f, +4.0264909835e+00f, -5.0168575497e-01f } +, { +1.4002735155e+01f, -1.6870564740e+01f, +1.9320924822e+01f + , -9.3489487064e+00f, +3.4855436350e+00f, -4.1340259191e-01f } +, { +1.4048120627e+01f, -1.4259541011e+01f, +1.7421558040e+01f + , -7.7156336592e+00f, +3.0852238544e+00f, -3.4381636627e-01f } +, { +1.4070068384e+01f, -1.2044779182e+01f, +1.6060419989e+01f + , -6.4399486362e+00f, +2.8047048140e+00f, -2.9090554179e-01f } +, { +1.4077328201e+01f, -1.0332356944e+01f, +1.5160803823e+01f + , -5.5100288590e+00f, +2.6213968366e+00f, -2.5305663714e-01f } +, { +1.4077683041e+01f, -9.1976058009e+00f, +1.4636862941e+01f + , -4.9166414668e+00f, +2.5150332199e+00f, -2.2919336158e-01f } +, { +1.4076709161e+01f, -8.6849570278e+00f, +1.4418874781e+01f + , -4.6538327513e+00f, +2.4707840042e+00f, -2.1869079956e-01f } }; // Low pass with 1/4 pass band, 1/4 transition band on top, for @@ -369,16 +369,16 @@ static const float lpf_ma[LPF_POINTS][LPF_ORDER] = static const float lpf_4_coeff[2][LPF_4_ORDER+1] = { - { +4.942274456389e-04, +2.456588519653e-03, +7.333608109998e-03 - , +1.564190404912e-02, +2.595749312226e-02, +3.475411633752e-02 - , +3.823783863736e-02, +3.475411633752e-02, +2.595749312226e-02 - , +1.564190404912e-02, +7.333608109998e-03, +2.456588519652e-03 - , +4.942274456389e-04 } -, { +1.000000000000e+00, -3.414853772012e+00, +6.812049477837e+00 - , -8.988639858221e+00, +8.737226725937e+00, -6.382745001626e+00 - , +3.590542256812e+00, -1.543464216385e+00, +5.036659057430e-01 - , -1.203614775500e-01, +2.006360736124e-02, -2.070940463771e-03 - , +1.010063725617e-04 } + { +4.942274456389e-04f, +2.456588519653e-03f, +7.333608109998e-03f + , +1.564190404912e-02f, +2.595749312226e-02f, +3.475411633752e-02f + , +3.823783863736e-02f, +3.475411633752e-02f, +2.595749312226e-02f + , +1.564190404912e-02f, +7.333608109998e-03f, +2.456588519652e-03f + , +4.942274456389e-04f } +, { +1.000000000000e+00f, -3.414853772012e+00f, +6.812049477837e+00f + , -8.988639858221e+00f, +8.737226725937e+00f, -6.382745001626e+00f + , +3.590542256812e+00f, -1.543464216385e+00f, +5.036659057430e-01f + , -1.203614775500e-01f, +2.006360736124e-02f, -2.070940463771e-03f + , +1.010063725617e-04f } }; // 4th-order pre-emphasis filters for the differing interpolations @@ -387,31 +387,31 @@ static const float lpf_4_coeff[2][LPF_4_ORDER+1] = static const float preemp_1xopt4p4o_coeff[2][6] = { - { +1.4537908355e+00, -1.5878441906e-01, +7.6588945557e-01 - , -1.1187528142e-01, +4.9169512092e-02, -6.1692905372e-03 } -, { +1.0000000000e+00, +1.9208553603e-01, +6.4223479412e-01 - , +8.4340248522e-02, +6.9072561856e-02, +4.2876716239e-03 } + { +1.4537908355e+00f, -1.5878441906e-01f, +7.6588945557e-01f + , -1.1187528142e-01f, +4.9169512092e-02f, -6.1692905372e-03f } +, { +1.0000000000e+00f, +1.9208553603e-01f, +6.4223479412e-01f + , +8.4340248522e-02f, +6.9072561856e-02f, +4.2876716239e-03f } }; static const float preemp_1xopt6p5o_coeff[2][6] = { - { +1.7736168976e+00, -2.9739831101e-01, +8.3183026784e-01 - , -1.5434578823e-01, +3.0236127398e-02, -2.1054630699e-03 } -, { +1.0000000000e+00, +2.9206686404e-01, +6.5605633523e-01 - , +1.4922672324e-01, +7.4792388477e-02, +9.6914195316e-03 } + { +1.7736168976e+00f, -2.9739831101e-01f, +8.3183026784e-01f + , -1.5434578823e-01f, +3.0236127398e-02f, -2.1054630699e-03f } +, { +1.0000000000e+00f, +2.9206686404e-01f, +6.5605633523e-01f + , +1.4922672324e-01f, +7.4792388477e-02f, +9.6914195316e-03f } }; static const float preemp_2xopt4p4o_coeff[2][6] = { - { +1.1866573548e+00, +1.1973031478e+00, -9.4241923873e-02 - , -4.0863707262e-01, -8.0536389300e-02, -3.8911856607e-04 } -, { +1.0000000000e+00, +1.2122990222e+00, +1.0444255630e-01 - , -3.7674911658e-01, -1.3106237366e-01, -8.7740900285e-03 } + { +1.1866573548e+00f, +1.1973031478e+00f, -9.4241923873e-02f + , -4.0863707262e-01f, -8.0536389300e-02f, -3.8911856607e-04f } +, { +1.0000000000e+00f, +1.2122990222e+00f, +1.0444255630e-01f + , -3.7674911658e-01f, -1.3106237366e-01f, -8.7740900285e-03f } }; static const float preemp_2xopt6p5o_coeff[2][6] = { - { +1.2995411641e+00, +1.3148944902e+00, -4.3762040619e-02 - , -3.7595940266e-01, -6.2452466903e-02, +8.5987740998e-04 } -, { +1.0000000000e+00, +1.3227482221e+00, +2.6592565819e-01 - , -3.1166281821e-01, -1.3266510256e-01, -1.1224337963e-02 } + { +1.2995411641e+00f, +1.3148944902e+00f, -4.3762040619e-02f + , -3.7595940266e-01f, -6.2452466903e-02f, +8.5987740998e-04f } +, { +1.0000000000e+00f, +1.3227482221e+00f, +2.6592565819e-01f + , -3.1166281821e-01f, -1.3266510256e-01f, -1.1224337963e-02f } }; // TODO: switch the decimation filter to Direct Form II @@ -433,7 +433,7 @@ struct lpf4_hist // Downside: You never see a true zero if ther is true zero on input. // Upside would be that you'd convert to 24 or 32 bit integer anyway, // where you'd get your zero back (1 in 32 bit is around 5e-10. -static const float denorm_base = 1e-15; +static const float denorm_base = 1e-15f; #define DE_DENORM(val, base) (val) += (base); #define DE_DENORM_FLIP(base) (base) = -(base); #define DE_DENORM_INIT(base, sign) (base) = (sign)*denorm_base; @@ -591,7 +591,7 @@ struct resample_data // Constructing the low pass filter for a bit less than claimed cutoff, // numerics shift things a bit. -static const float lpf_cut_scale = 0.995; +static const float lpf_cut_scale = 0.995f; // Reference implementation of the cubic spline evaluation. // x: time coordinate to evaluate at @@ -640,13 +640,13 @@ static float lpf_deriv( const float x[LPF_POINTS] { float w1 = x[i+1]-x[i]; m += (val[i+1]-val[i])/(w1*w1); - w += 1./w1; + w += 1.f/w1; } if(i>0) { float w0 = x[i]-x[i-1]; m += (val[i]-val[i-1])/(w0*w0); - w += 1./w0; + w += 1.f/w0; } return m/w; } @@ -984,7 +984,7 @@ static float df2_initval(unsigned int order, float *filter_a, float insample) fprintf(stderr, "unconfigured pre-emphasis\n"); \ return ret; \ } \ - for(int c=0; cpre_a[0], initval[c]); \ for(int i=0; idecim_stages ); \ int fill = BATCH; \ memcpy(rd->prebuf, in, fill*sizeof(*in)*rd->channels); \ - for(int ds = 0; dsdecim_stages; ++ds) \ + for(unsigned int ds = 0; dsdecim_stages; ++ds) \ fill = decimate(rd, ds, rd->prebuf, fill); \ lpf(rd, rd->prebuf, fill); \ mxdebug(#name " batch %zu interpol " #interpolate, bi); \ @@ -1613,7 +1613,7 @@ static size_t name( struct resample_data *rd \ mxdebug( #name " end decim %d and lowpass " #lpf \ , rd->decim_stages ); \ memcpy(rd->prebuf, in, fill*sizeof(*in)*rd->channels); \ - for(int ds = 0; dsdecim_stages; ++ds) \ + for(unsigned int ds = 0; dsdecim_stages; ++ds) \ fill = decimate(rd, ds, rd->prebuf, fill); \ lpf(rd, rd->prebuf, fill); \ xdebug(#name " end interpol " #interpolate); \ @@ -1916,7 +1916,7 @@ int64_t simulate_interpolate(long vinrate, long voutrate, int64_t ins) // for more than simple integer division. The overall rounding error // is limited at 2 samples, btw. int64_t attribute_align_arg -syn123_resample_total_64(long inrate, long outrate, int64_t ins) +syn123_resample_total64(long inrate, long outrate, int64_t ins) { if(ins < 0) return -1; @@ -1963,29 +1963,10 @@ syn123_resample_total_64(long inrate, long outrate, int64_t ins) return (tot <= INT64_MAX) ? (int64_t)tot : SYN123_OVERFLOW; } -int32_t attribute_align_arg -syn123_resample_total_32(int32_t inrate, int32_t outrate, int32_t ins) -{ - int64_t tot = syn123_resample_total_64(inrate, outrate, ins); - return (tot <= INT32_MAX) ? (int32_t)tot : SYN123_OVERFLOW; -} - -lfs_alias_t syn123_resample_total(long inrate, long outrate, lfs_alias_t ins) -{ -#if LFS_ALIAS_BITS+0 == 64 - return syn123_resample_total_64(inrate, outrate, ins); -#elif LFS_ALIAS_BITS+0 == 32 - return syn123_resample_total_32(inrate, outrate, ins); -#else - #error "Unexpected LFS_ALIAS_BITS value." -#endif -} - - // The inverse function: How many input samples are needed to get at least // the desired amount of output? int64_t attribute_align_arg -syn123_resample_intotal_64(long inrate, long outrate, int64_t outs) +syn123_resample_intotal64(long inrate, long outrate, int64_t outs) { if(outs < 1) return outs == 0 ? 0 : -1; @@ -2033,23 +2014,44 @@ syn123_resample_intotal_64(long inrate, long outrate, int64_t outs) return (tot <= INT64_MAX) ? (int64_t)tot : SYN123_OVERFLOW; } -int32_t attribute_align_arg -syn123_resample_intotal_32(int32_t inrate, int32_t outrate, int32_t outs) -{ - int64_t tot = syn123_resample_intotal_64(inrate, outrate, outs); - return (tot <= INT32_MAX) ? (int32_t)tot : SYN123_OVERFLOW; +#ifndef PORTABLE_API +// Again the dreadful business of dealing with shape-shifting off_t API. +// The real implementation is the function with suffix 64, using int64_t. +// Depending on your OS, there is a native off_t with 32 or 64 bits, and +// possibly a 64 bit off64_t. The macros here define the appropriate wrappers +// for the _32 and _64 suffixes promised in the API header, depending on +// _FILE_OFFSET_BITS value. +// A special case is a system that does ignore _FILE_OFFSET BITS but has +// 64 bit offsets: That should still get the plain alias and one with _64, +// making the header agnostic to that fact, not depending on any build properties + +#define resample_total_wrap(type, limit, name, name64) \ +type attribute_align_arg name(long inrate, long outrate, type io) \ +{ \ + int64_t tot = name64(inrate, outrate, io); \ + return (tot <= limit) ? (type)tot : SYN123_OVERFLOW; \ +} +#define resample_total_alias(type, name, name64) \ +type attribute_align_arg name(long inrate, long outrate, type io) \ +{ \ + return name64(inrate, outrate, io); \ } -lfs_alias_t syn123_resample_intotal(long inrate, long outrate, lfs_alias_t outs) -{ -#if LFS_ALIAS_BITS+0 == 64 - return syn123_resample_intotal_64(inrate, outrate, outs); -#elif LFS_ALIAS_BITS+0 == 32 - return syn123_resample_intotal_32(inrate, outrate, outs); -#else - #error "Unexpected LFS_ALIAS_BITS value." +#if SIZEOF_OFF_T == 8 +resample_total_alias(off_t, syn123_resample_total, syn123_resample_total64) +resample_total_alias(off_t, syn123_resample_intotal, syn123_resample_intotal64) +#elif SIZEOF_OFF_T == 4 +resample_total_wrap(off_t, INT32_MAX, syn123_resample_total, syn123_resample_total64) +resample_total_wrap(off_t, INT32_MAX, syn123_resample_intotal, syn123_resample_intotal64) +#if LFS_LARGEFILE_64 +resample_total_alias(off64_t, syn123_resample_total_64, syn123_resample_total64) +resample_total_alias(off64_t, syn123_resample_intotal_64, syn123_resample_intotal64) +#endif +#else +#error "Unexpected LFS_ALIAS_BITS value." +#endif + #endif -} // As any sensible return value is at least 1, this uses the unsigned // type and 0 for error/pathological input. @@ -2071,7 +2073,7 @@ syn123_resample_count(long inrate, long outrate, size_t ins) #endif ) return 0; - int64_t tot = syn123_resample_total_64(inrate, outrate, (int64_t)ins); + int64_t tot = syn123_resample_total64(inrate, outrate, (int64_t)ins); return (tot >= 0 && tot <= SIZE_MAX) ? (size_t)tot : 0; } @@ -2137,15 +2139,25 @@ syn123_resample_fillcount(long input_rate, long output_rate, size_t outs) return block; } +// Store given error value to storage, if non-NULL, return +// given return value for pass-through usage. +static size_t size_err(int *err, int value, size_t ret) +{ + if(err) + *err = value; + return ret; +} + // The exact predictor: How many output samples will I get _now_ // after feeding the indicated amount? This is concerned with // Buffer sizes, so let's drop the 32/64 bit distinction. // Since overflow can occur, we need a sign bit to signal errors. -ssize_t attribute_align_arg -syn123_resample_expect(syn123_handle *sh, size_t ins) +size_t attribute_align_arg +syn123_resample_out(syn123_handle *sh, size_t ins, int *err) { + size_err(err, SYN123_OK, 0); if(!sh || !sh->rd) - return SYN123_BAD_HANDLE; + return size_err(err, SYN123_BAD_HANDLE, 0); if(ins < 1) return 0; struct resample_data *rd = sh->rd; @@ -2174,47 +2186,56 @@ syn123_resample_expect(syn123_handle *sh, size_t ins) } #if SIZE_MAX > UINT64_MAX if(ins > UINT64_MAX) // Really? - return SYN123_OVERFLOW; + return size_err(err, SYN123_OVERFLOW, 0); #endif uint64_t vins = ins; if(rd->sflags & oversample_2x) { if(vins > UINT64_MAX/2) - return SYN123_OVERFLOW; + return size_err(err, SYN123_OVERFLOW, 0); vins *= 2; } - int err; + int myerr = SYN123_OK; int64_t offset = rd->sflags & inter_flow ? rd->offset : -rd->vinrate; // Interpolation model: // outs = (vins*voutrate - offset - 1)/vinrate uint64_t tot = muloffdiv64( vins, (uint64_t)rd->voutrate - , (int64_t)(-offset-1), (uint64_t)rd->vinrate, &err, NULL ); + , (int64_t)(-offset-1), (uint64_t)rd->vinrate, &myerr, NULL ); // Any error is treated as overflow (div by zero -> infinity). - if(err) - return SYN123_OVERFLOW; - return (tot <= SSIZE_MAX) ? (ssize_t)tot : SYN123_OVERFLOW; + if(myerr || tot > SIZE_MAX) + return size_err(err, SYN123_OVERFLOW, 0); + return (size_t)tot; +} + +syn123_ssize_t attribute_align_arg +syn123_resample_expect(syn123_handle *sh, size_t ins) +{ + int err = 0; + size_t tot = syn123_resample_out(sh, ins, &err); + if(tot >= SSIZE_MAX) + err = SYN123_OVERFLOW; + return (syn123_ssize_t)(err ? err : tot); } // How many input samples are minimally needed to get at least the // minimally desired output right now? -ssize_t attribute_align_arg -syn123_resample_inexpect(syn123_handle *sh, size_t outs) +size_t attribute_align_arg +syn123_resample_in(syn123_handle *sh, size_t outs, int *err) { + size_err(err, SYN123_OK, 0); if(!sh || !sh->rd) - return SYN123_BAD_HANDLE; + return size_err(err, SYN123_BAD_HANDLE, 0); if(outs < 1) return 0; struct resample_data *rd = sh->rd; // This works for outs > 0: // ins = (outs*inrate+offset)/outrate+1 - int err; + int myerr; int64_t offset = rd->sflags & inter_flow ? rd->offset : -rd->vinrate; uint64_t vtot = muloffdiv64(outs, sh->rd->vinrate, offset, rd->voutrate - , &err, NULL); - if(err) - return SYN123_OVERFLOW; - if(vtot == UINT64_MAX) - return SYN123_OVERFLOW; + , &myerr, NULL); + if(myerr || vtot == UINT64_MAX) + return size_err(err, SYN123_OVERFLOW, 0); ++vtot; uint64_t tot = vtot; // Un-do oversampling, taking care not to hit overflow. @@ -2232,17 +2253,27 @@ syn123_resample_inexpect(syn123_handle *sh, size_t outs) { unsigned int i = rd->decim_stages - 1 - j; if(tot > UINT64_MAX/2+1) - return SYN123_OVERFLOW; + return size_err(err, SYN123_OVERFLOW, 0); tot = (tot - 1) + tot; if( (rd->decim[i].sflags & lowpass_flow) && !(rd->decim[i].sflags & decimate_store) ) { if(tot == UINT64_MAX) - return SYN123_OVERFLOW; + return size_err(err, SYN123_OVERFLOW, 0); ++tot; } } - return (tot <= SSIZE_MAX) ? (ssize_t)tot : SYN123_OVERFLOW; + return (size_t)(tot <= SIZE_MAX ? tot : size_err(err, SYN123_OVERFLOW, 0)); +} + +syn123_ssize_t attribute_align_arg +syn123_resample_inexpect(syn123_handle *sh, size_t outs) +{ + int err = 0; + size_t tot = syn123_resample_in(sh, outs, &err); + if(tot >= SSIZE_MAX) + err = SYN123_OVERFLOW; + return (syn123_ssize_t)(err ? err : tot); } void resample_free(struct resample_data *rd) @@ -2368,7 +2399,7 @@ syn123_setup_resample( syn123_handle *sh, long inrate, long outrate { if(smooth) { - float *sth = safe_realloc( rd->stage_history + float *sth = INT123_safe_realloc( rd->stage_history , sizeof(float)*STAGE_HISTORY*channels*(decim_stages+1) ); if(!sth) { @@ -2379,9 +2410,9 @@ syn123_setup_resample( syn123_handle *sh, long inrate, long outrate } if(decim_stages) { - struct decimator_state *nd = safe_realloc( rd->decim + struct decimator_state *nd = INT123_safe_realloc( rd->decim , sizeof(*rd->decim)*decim_stages ); - struct lpf4_hist *ndh = safe_realloc( rd->decim_hist + struct lpf4_hist *ndh = INT123_safe_realloc( rd->decim_hist , sizeof(*rd->decim_hist)*decim_stages*channels ); if(nd) rd->decim = nd; @@ -2444,7 +2475,7 @@ syn123_setup_resample( syn123_handle *sh, long inrate, long outrate // Magnitude must not be too large. Too small is OK. if(noff > LONG_MAX) noff = LONG_MAX; - rd->offset = sign*noff; + rd->offset = sign*(long)noff; // Total paranoia. This is the crucial condition. if(rd->offset < -vinrate) rd->offset = -vinrate; @@ -2478,7 +2509,7 @@ syn123_setup_resample( syn123_handle *sh, long inrate, long outrate // Round result to single precision, but compute with double to be able // to correctly represent 32 bit longs first. - rd->lpf_cutoff = (double)(rd->inrate < rd->outrate ? rd->inrate : rd->voutrate)/rd->vinrate; + rd->lpf_cutoff = (float)((double)(rd->inrate < rd->outrate ? rd->inrate : rd->voutrate)/rd->vinrate); mdebug( "lowpass cutoff: %.8f of virtual %.0f Hz = %.0f Hz" , rd->lpf_cutoff, 0.5*rd->vinrate, rd->lpf_cutoff*0.5*rd->vinrate ); mdebug("rates final: %ld|%ld -> %ld|%ld" @@ -2494,7 +2525,7 @@ syn123_setup_resample( syn123_handle *sh, long inrate, long outrate lpf_init(rd); mdebug( "smooth old scale: %g, new scale: %g" , scale, lpf_history_scale(rd) ); - scale = scale > 1e-10 ? lpf_history_scale(rd) / scale : 1.; + scale = scale > 1e-10f ? lpf_history_scale(rd) / scale : 1.f; for(unsigned int c=0; cchannels; ++c) for(unsigned int j=0; j h){ p[i] = limit - ww/(w21+p[i]); ++clipped; } \ - else if(p[i] < l){ p[i] = -limit + ww/(w21-p[i]); ++clipped; } \ + if(isnan(p[i])) { p[i] = (type)0.; ++clipped; } \ + else if(p[i] > h){ p[i] = (type)limit - ww/(w21+p[i]); ++clipped; } \ + else if(p[i] < l){ p[i] = -(type)limit + ww/(w21-p[i]); ++clipped; } \ } \ } switch(encoding) @@ -276,7 +276,7 @@ switch(dst_enc) \ break; \ case MPG123_ENC_FLOAT_32: \ for(; tsrc!=tend; ++tsrc, tdest+=4) \ - *((float*)tdest) = *tsrc; \ + *((float*)tdest) = (float)*tsrc; \ break; \ case MPG123_ENC_FLOAT_64: \ for(; tsrc!=tend; ++tsrc, tdest+=8) \ @@ -349,7 +349,7 @@ switch(dst_enc) \ break; \ case MPG123_ENC_FLOAT_32: \ for(; tsrc!=tend; ++tsrc, tdest+=4) \ - *((float*)tdest) = *tsrc; \ + *((float*)tdest) = (float)*tsrc; \ break; \ case MPG123_ENC_FLOAT_64: \ for(; tsrc!=tend; ++tsrc, tdest+=8) \ @@ -369,14 +369,14 @@ switch(src_enc) \ break; \ case MPG123_ENC_SIGNED_32: \ for(; tdest!=tend; ++tdest, tsrc+=4) \ - *tdest = s32_d(*(int32_t*)tsrc); \ + *tdest = (type)s32_d(*(int32_t*)tsrc); \ break; \ case MPG123_ENC_SIGNED_24: \ for(; tdest!=tend; ++tdest, tsrc+=3) \ { \ union { int32_t i; char c[4]; } tmp; \ ADD4BYTE(tmp.c, tsrc); \ - *tdest = s32_d(tmp.i); \ + *tdest = (type)s32_d(tmp.i); \ } \ break; \ case MPG123_ENC_SIGNED_8: \ @@ -404,12 +404,12 @@ switch(src_enc) \ { \ union { uint32_t i; char c[4]; } tmp; \ ADD4BYTE(tmp.c, tsrc); \ - *tdest = u32_d(tmp.i); \ + *tdest = (type)u32_d(tmp.i); \ } \ break; \ case MPG123_ENC_UNSIGNED_32: \ for(; tdest!=tend; ++tdest, tsrc+=4) \ - *tdest = u32_d(*(uint32_t*)tsrc); \ + *tdest = (type)(u32_d(*(uint32_t*)tsrc)); \ break; \ case MPG123_ENC_FLOAT_32: \ for(; tdest!=tend; ++tdest, tsrc+=4) \ @@ -417,7 +417,7 @@ switch(src_enc) \ break; \ case MPG123_ENC_FLOAT_64: \ for(; tdest!=tend; ++tdest, tsrc+=8) \ - *tdest = *(double*)tsrc; \ + *tdest = (type)(*(double*)tsrc); \ break; \ default: \ return SYN123_BAD_CONV; \ diff --git a/src/libsyn123/syn123.h.in b/src/libsyn123/syn123.h similarity index 91% rename from src/libsyn123/syn123.h.in rename to src/libsyn123/syn123.h index 6a1ef3c..a1e48f0 100644 --- a/src/libsyn123/syn123.h.in +++ b/src/libsyn123/syn123.h @@ -1,11 +1,14 @@ /* syn123: some audio signal synthesis and format conversion - copyright 2017-2020 by the mpg123 project, + copyright 2017-2023 by the mpg123 project, free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis + + Consider defining SYN123_PORTABLE_API to limit the definitions to + a safer subset without some problematic features (mainly off_t usage). */ #ifndef SYN123_H @@ -14,15 +17,15 @@ /** \file syn123.h The header file for the libsyn123 library. */ /* Common audio encoding specification. */ -#include +#include "fmt123.h" /** A macro to check at compile time which set of API functions to expect. - * This should be incremented at least each time a new symbol is added + * This must be incremented at least each time a new symbol is added * to the header. */ -#ifndef SYN123_API_VERSION -#define SYN123_API_VERSION @SYNAPI_VERSION@ -#endif +#define SYN123_API_VERSION 2 +/** library patch level at client build time */ +#define SYN123_PATCHLEVEL 1 #ifndef MPG123_EXPORT /** Defines needed for MS Visual Studio(tm) DLL builds. @@ -57,13 +60,14 @@ #endif #endif -/* Enable use of this file without configure. */ -/* Also make sure to define _FILE_OFFSET_BITS, too. */ -#ifndef MPG123_NO_CONFIGURE -@INCLUDE_STDLIB_H@ -@INCLUDE_SYS_TYPE_H@ +// for off_t and ssize_t +#ifndef SYN123_PORTABLE_API +#include #endif +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -145,6 +149,23 @@ struct syn123_struct; /** Typedef shortcut as preferrend name for the handle type. */ typedef struct syn123_struct syn123_handle; +/** Get version of the mpg123 distribution this library build came with. + * (optional means non-NULL) + * \param major optional address to store major version number + * \param minor optional address to store minor version number + * \param patch optional address to store patchlevel version number + * \return full version string (like "1.2.3-beta4 (experimental)") + */ +MPG123_EXPORT +const char *syn123_distversion(unsigned int *major, unsigned int *minor, unsigned int *patch); + +/** Get API version of library build. + * \param patch optional address to store patchlevel + * \return API version of library + */ +MPG123_EXPORT +unsigned int syn123_libversion(unsigned int *patch); + /** Functions that return an integer success code either return * SYN123_OK if everything went fine, or one of the other detailed * error codes. @@ -945,55 +966,35 @@ size_t syn123_resample_maxincount(long input_rate, long output_rate); * when feeding the resampler the given additional input samples now, * given the current resampler state contained in the handle. * + * On error, zero is returned and the error code is set to a nonzero + * syn123 error code. + * * \param sh syn123 handle * \param ins input sample count - * \return output sample count (>=0) or error code + * \param err location to store error code + * \return output sample count */ MPG123_EXPORT -ssize_t syn123_resample_expect(syn123_handle *sh, size_t ins); +size_t syn123_resample_out(syn123_handle *sh, size_t ins, int *err); /** Give minimum input sample count needed now for given output. * * This give you the minimal number of input samples needed right * now to yield at least the specified amount of output samples. * Since one input sample can result in several output sampels in one - * go, you have to check using syn123_resample_expect() how many + * go, you have to check using syn123_resample_out() how many * output samples to really expect. * + * On error, zero is returned and the error code is set to a nonzero + * syn123 error code. + * * \param sh syn123 handle * \param outs output sample count - * \return minimal input sample count (>= 0) or error code + * \param err location to store error code + * \return minimal input sample count */ MPG123_EXPORT -ssize_t syn123_resample_inexpect(syn123_handle *sh, size_t outs); - - -#ifndef SYN123_NO_LARGEFUNC - -/* The whole block of off_t-using API is optional to be able to build - the underlying code without confusing the compiler with prototype - mismatch. */ - -/* Lightweight large file hackery to enable worry-reduced use of off_t. - Depending on the size of off_t in your client build, the corresponding - library function needs to be chosen. */ -#ifndef MPG123_NO_CONFIGURE -#if !defined(MPG123_NO_LARGENAME) && @BUILD_NO_LARGENAME@ -#define MPG123_NO_LARGENAME -#endif -#endif - -#if defined(_FILE_OFFSET_BITS) && !defined(MPG123_NO_LARGENAME) -# if _FILE_OFFSET_BITS+0 == 32 -# define syn123_resample_total syn123_resample_total_32 -# define syn123_resample_intotal syn123_resample_intotal_32 -# elif _FILE_OFFSET_BITS+0 == 64 -# define syn123_resample_total syn123_resample_total_64 -# define syn123_resample_intotal syn123_resample_intotal_64 -# else -# error "Unpredicted _FILE_OFFSET_BITS value." -# endif -#endif +size_t syn123_resample_in(syn123_handle *sh, size_t outs, int *err); /** Give exact output sample count for total input sample count. * @@ -1010,7 +1011,7 @@ ssize_t syn123_resample_inexpect(syn123_handle *sh, size_t outs); * (bad/too large sampling rates, integer overflow) */ MPG123_EXPORT -off_t syn123_resample_total(long inrate, long outrate, off_t ins); +int64_t syn123_resample_total64(long inrate, long outrate, int64_t ins); /** Give minimum input sample count for total output sample count. * @@ -1030,9 +1031,7 @@ off_t syn123_resample_total(long inrate, long outrate, off_t ins); * (bad/too large sampling rates, integer overflow) */ MPG123_EXPORT -off_t syn123_resample_intotal(long inrate, long outrate, off_t outs); - -#endif +int64_t syn123_resample_intotal64(long inrate, long outrate, int64_t outs); /** Resample input buffer to output buffer. * @@ -1109,6 +1108,100 @@ void syn123_le2host(void *buf, size_t samplesize, size_t samplecount); MPG123_EXPORT void syn123_be2host(void *buf, size_t samplesize, size_t samplecount); +// You are invited to defined SYN123_PORTABLE_API to avoid seeing shape-shifting off_t +// anywhere, also to avoid using non-standard types like ssize_t. +#if !defined(SYN123_PORTABLE_API) && !defined(SYN123_NO_LARGEFUNC) + +/* A little hack to help MSVC not having ssize_t, duplicated in internal header. */ +#ifdef _MSC_VER +#include +typedef ptrdiff_t syn123_ssize_t; +#else +typedef ssize_t syn123_ssize_t; +#endif + +/** Give exact output sample count for feeding given input now. + * + * Old variant of syn123_resample_out() that (ab)uses ssize_t. + * + * \deprecated Use syn123_resample_out() instead. + * The return of errors (integer overflow in + * calculation)is broken, as both the error codes and the valid results + * are positive integers. I screwed up. + * + * \param sh syn123 handle + * \param ins input sample count + * \return output sample count or error code, hard to distinguish + */ +MPG123_EXPORT +syn123_ssize_t syn123_resample_expect(syn123_handle *sh, size_t ins); + +/** Give minimum input sample count needed now for given output. + * + * Old variant of syn123_resample_in() that (ab)uses ssize_t. + * + * \deprecated Use syn123_resample_in() instead. + * The return of errors (integer overflow in + * calculation)is broken, as both the error codes and the valid results + * are positive integers. I screwed up. + * + * \param sh syn123 handle + * \param outs output sample count + * \return minimal input sample count or error code, hard to distinguish + */ +MPG123_EXPORT +syn123_ssize_t syn123_resample_inexpect(syn123_handle *sh, size_t outs); + +/* Lightweight large file hackery to enable worry-reduced use of off_t. + Depending on the size of off_t in your client build, the corresponding + library function needs to be chosen. */ + +#if defined(_FILE_OFFSET_BITS) && !defined(MPG123_NO_LARGENAME) +# if _FILE_OFFSET_BITS+0 == 32 +# define syn123_resample_total syn123_resample_total_32 +# define syn123_resample_intotal syn123_resample_intotal_32 +# elif _FILE_OFFSET_BITS+0 == 64 +# define syn123_resample_total syn123_resample_total_64 +# define syn123_resample_intotal syn123_resample_intotal_64 +# else +# error "Unpredicted _FILE_OFFSET_BITS value." +# endif +#endif + +/** Give exact output sample count for total input sample count. + * + * This is syn123_resample_total64() with shape-shifting off_t, + * possibly renamed by macro. For type safety, use the former. + * + * \deprecated Use syn123_resample_total64() instead. + * + * \param inrate input sample rate + * \param outrate output sample rate + * \param ins input sample count for the whole stream + * \return number of output samples or -1 if the computation fails + * (bad/too large sampling rates, integer overflow) + */ +MPG123_EXPORT +off_t syn123_resample_total(long inrate, long outrate, off_t ins); + +/** Give minimum input sample count for total output sample count. + * + * This is syn123_resample_intotal64() with shape-shifting off_t, + * possibly renamed by macro. For type safety, use the former. + * + * \deprecated Use syn123_resample_intotal64() instead. + * + * \param inrate input sample rate + * \param outrate output sample rate + * \param outs output sample count for the whole stream + * \return number of input samples or -1 if the computation fails + * (bad/too large sampling rates, integer overflow) + */ +MPG123_EXPORT +off_t syn123_resample_intotal(long inrate, long outrate, off_t outs); + +#endif + /** @} */ #ifdef __cplusplus diff --git a/src/libsyn123/syn123_int.h b/src/libsyn123/syn123_int.h index 3828abe..fecebbd 100644 --- a/src/libsyn123/syn123_int.h +++ b/src/libsyn123/syn123_int.h @@ -1,7 +1,7 @@ /* syn123_int: internal header for libsyn123 - copyright 2018-2020 by the mpg123 project, + copyright 2018-2023 by the mpg123 project, licensed under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -14,15 +14,21 @@ #define _ISOC99_SOURCE #include "config.h" -#include "intsym.h" -#include "compat.h" -#include "abi_align.h" -/* export DLL symbols */ -#if defined(WIN32) && defined(DYNAMIC_BUILD) -#define BUILD_MPG123_DLL +#ifdef LFS_LARGEFILE_64 +#define _LARGEFILE64_SOURCE #endif +#include "abi_align.h" +#include "compat.h" + #define SYN123_NO_LARGEFUNC #include "syn123.h" +// A little hack to help MSVC not having ssize_t, duplicated in external header with largefuncs. +#ifdef _MSC_VER +typedef ptrdiff_t syn123_ssize_t; +#else +typedef ssize_t syn123_ssize_t; +#endif + // Generally, a number of samples we work on in one go to // allow the compiler to know our loops. diff --git a/src/local.c b/src/local.c index 10bb3e0..a148344 100644 --- a/src/local.c +++ b/src/local.c @@ -116,7 +116,7 @@ int unknown2utf8(char **dest, const char *source, int len) return -1; if(!source) { - *dest = safer_realloc(*dest, 0); + *dest = INT123_safer_realloc(*dest, 0); return -1; } size_t count = len < 0 ? strlen(source) : (size_t)len; @@ -134,7 +134,7 @@ int unknown2utf8(char **dest, const char *source, int len) ulen += c >= 0x80 ? uni_repl_len : 1; } - if(NULL == (*dest = safer_realloc(*dest, ulen))) + if(NULL == (*dest = INT123_safer_realloc(*dest, ulen))) return -1; unsigned char *p = (unsigned char*)*dest; @@ -201,7 +201,7 @@ static size_t utf8_ascii_work(char **dest_, const char *source return 0; if(!source) { - *dest_ = safer_realloc(*dest_, 0); + *dest_ = INT123_safer_realloc(*dest_, 0); return 0; } @@ -230,7 +230,7 @@ static size_t utf8_ascii_work(char **dest_, const char *source } // Do nothing with nothing or if allocation fails. Neatly catches overflow // of ++dlen. - if(!dlen || !(dest=safer_realloc(dest, dlen))) + if(!dlen || !(dest=INT123_safer_realloc(dest, dlen))) goto utf8_ascii_bad; p = (unsigned char*)dest; c2lead = 0; @@ -253,7 +253,7 @@ static size_t utf8_ascii_work(char **dest_, const char *source dest[dlen-1] = 0; goto utf8_ascii_end; utf8_ascii_bad: - dest = safer_realloc(dest, 0); + dest = INT123_safer_realloc(dest, 0); utf8_ascii_end: *dest_ = dest; return dest ? strlen(dest)+1 : 0; @@ -282,7 +282,7 @@ size_t utf8outstr(char **dest_, const char *source, int to_terminal) return 0; if(!source) { - *dest_ = safer_realloc(*dest_, 0); + *dest_ = INT123_safer_realloc(*dest_, 0); return 0; } char *dest = *dest_; @@ -335,13 +335,13 @@ size_t utf8outstr(char **dest_, const char *source, int to_terminal) size_t bytelen = wcstombs(NULL, flt, 0); if( columns >= 0 && bytelen != (size_t)-1 - && (dest=safer_realloc(dest, bytelen+1)) + && (dest=INT123_safer_realloc(dest, bytelen+1)) && wcstombs(dest, flt, bytelen+1) == bytelen ){ width = columns; } else - dest=safer_realloc(dest, 0); + dest=INT123_safer_realloc(dest, 0); } free(flt); free(pre); @@ -354,7 +354,7 @@ size_t utf8outstr(char **dest_, const char *source, int to_terminal) // That is, 0x01 to 0x19 (keeping 0x20, space) and 0x7f (DEL) to 0x9f. // Since the input and output is UTF-8, we'll keep that intact. // C1 is mapped to 0xc280 till 0xc29f. - dest = safer_realloc(dest, source_fill); + dest = INT123_safer_realloc(dest, source_fill); if(!dest) goto utf8outstr_bad; size_t dest_fill = 0; @@ -383,7 +383,7 @@ size_t utf8outstr(char **dest_, const char *source, int to_terminal) dest[dest_fill-1] = 0; } else { - dest = safer_realloc(dest, source_fill); + dest = INT123_safer_realloc(dest, source_fill); if(!dest) goto utf8outstr_bad; size_t dest_fill = 0; @@ -415,7 +415,7 @@ size_t utf8outstr(char **dest_, const char *source, int to_terminal) goto utf8outstr_end; utf8outstr_bad: - dest = safer_realloc(dest, 0); + dest = INT123_safer_realloc(dest, 0); width = 0; utf8outstr_end: *dest_ = dest; @@ -440,7 +440,7 @@ int outstr(char **dest, const char *str, int is_utf8, int is_term) return -1; if(!str) { - *dest = safer_realloc(*dest, 0); + *dest = INT123_safer_realloc(*dest, 0); return -1; } int ret = 0; @@ -462,7 +462,7 @@ int outstr(char **dest, const char *str, int is_utf8, int is_term) free(usrc); } else { - *dest = compat_strdup(str); + *dest = INT123_compat_strdup(str); if(!*dest) ret = -1; } diff --git a/src/mpg123-id3dump.c b/src/mpg123-id3dump.c index 78ce2be..31121df 100644 --- a/src/mpg123-id3dump.c +++ b/src/mpg123-id3dump.c @@ -1,7 +1,7 @@ /* id3dump: Print ID3 tags of files, scanned using libmpg123. - copyright 2007-2021 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2007-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -10,6 +10,7 @@ #define _DEFAULT_SOURCE #define _BSD_SOURCE #include "config.h" +#include "version.h" #include "compat.h" #if defined(WIN32) && defined(DYNAMIC_BUILD) #define LINK_MPG123_DLL @@ -47,7 +48,7 @@ static void usage(int err) fprintf(o, "You made some mistake in program usage... let me briefly remind you:\n\n"); } fprintf(o, "Tool to dump ID3 meta data from MPEG audio files using libmpg123\n"); - fprintf(o, "\tversion %s; written and copyright by Thomas Orgis and the mpg123 project\n", PACKAGE_VERSION); + fprintf(o, "\tversion %s; written and copyright by Thomas Orgis and the mpg123 project\n", MPG123_VERSION); fprintf(o,"\nusage: %s [option(s)] file(s)\n", progname); fprintf(o,"\noptions:\n"); fprintf(o," -h --help give usage help\n"); @@ -292,7 +293,7 @@ int open_picfile(const char* prefix, mpg123_picture* pic) pfn[len] = 0; errno = 0; - fd = compat_open(pfn, O_CREAT|O_WRONLY|O_EXCL); + fd = INT123_compat_open(pfn, O_CREAT|O_WRONLY|O_EXCL); while(fd < 0 && errno == EEXIST && ++count < ULONG_MAX) { char dum[3]; @@ -302,12 +303,12 @@ int open_picfile(const char* prefix, mpg123_picture* pic) // Modern compiler diagnostics complain if limit is smaller than // format string, so increasing dummy to 3 characters. digits = snprintf(dum, 3, "%lu", count); - if(!(pfn=safe_realloc(pfn, len+digits+1))) exit(11); + if(!(pfn=INT123_safe_realloc(pfn, len+digits+1))) exit(11); sprintf(pfn, "%s.%s%lu.%s", prefix, typestr, count, end); pfn[len+digits] = 0; errno = 0; - fd = compat_open(pfn, O_CREAT|O_WRONLY|O_EXCL); + fd = INT123_compat_open(pfn, O_CREAT|O_WRONLY|O_EXCL); } printf("writing %s\n", pfn); if(fd < 0) @@ -335,10 +336,10 @@ static void store_pictures(const char* prefix, mpg123_id3v2 *v2) fd = open_picfile(prefix, pic); if(fd >= 0) { /* stream I/O for not having to care about interruptions */ - FILE* picfile = compat_fdopen(fd, "w"); + FILE* picfile = INT123_compat_fdopen(fd, "w"); if(picfile) { - if(unintr_fwrite(pic->data, pic->size, 1, picfile) != 1) + if(INT123_unintr_fwrite(pic->data, pic->size, 1, picfile) != 1) { error("Failure to write data."); ++errors; @@ -351,7 +352,7 @@ static void store_pictures(const char* prefix, mpg123_id3v2 *v2) } else { - error1("Unable to fdopen output: %s)", strerror(errno)); + error1("Unable to fdopen output: %s)", INT123_strerror(errno)); ++errors; } } diff --git a/src/mpg123-strip.c b/src/mpg123-strip.c index 39c1522..d55a7d3 100644 --- a/src/mpg123-strip.c +++ b/src/mpg123-strip.c @@ -1,12 +1,13 @@ /* extract_frams: utlize the framebyframe API and mpg123_framedata to extract the MPEG frames out of a stream (strip off anything else). - copyright 2011-2013 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2011-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ #include "config.h" +#include "version.h" #include "compat.h" #if defined(WIN32) && defined(DYNAMIC_BUILD) @@ -40,7 +41,7 @@ static void usage(int err) fprintf(o, "You made some mistake in program usage... let me briefly remind you:\n\n"); } fprintf(o, "Extract only MPEG frames from a stream using libmpg123 (stdin to stdout)\n"); - fprintf(o, "\tversion %s; written and copyright by Thomas Orgis and the mpg123 project\n", PACKAGE_VERSION); + fprintf(o, "\tversion %s; written and copyright by Thomas Orgis and the mpg123 project\n", MPG123_VERSION); fprintf(o,"\nusage: %s [option(s)] < input > output\n", progname); fprintf(o,"\noptions:\n"); fprintf(o," -h --help give usage help\n"); @@ -133,8 +134,8 @@ int do_work(mpg123_handle *m) { int ret; size_t count = 0; - compat_binmode(STDIN_FILENO, TRUE); - compat_binmode(STDOUT_FILENO, TRUE); + INT123_compat_binmode(STDIN_FILENO, TRUE); + INT123_compat_binmode(STDOUT_FILENO, TRUE); ret = mpg123_open_fd(m, STDIN_FILENO); if(ret != MPG123_OK) return ret; @@ -151,10 +152,10 @@ int do_work(mpg123_handle *m) for(i=0; i<4; ++i) hbuf[i] = (unsigned char) ((header >> ((3-i)*8)) & 0xff); /* Now write out both header and data, fire and forget. */ - if( 4 != unintr_write(STDOUT_FILENO, hbuf, 4) || - bodybytes != unintr_write(STDOUT_FILENO, bodydata, bodybytes) ) + if( 4 != INT123_unintr_write(STDOUT_FILENO, hbuf, 4) || + bodybytes != INT123_unintr_write(STDOUT_FILENO, bodydata, bodybytes) ) { - fprintf(stderr, "Failed to write data: %s\n", strerror(errno)); + fprintf(stderr, "Failed to write data: %s\n", INT123_strerror(errno)); return MPG123_ERR; } if(param.verbose) diff --git a/src/mpg123.c b/src/mpg123.c index 291b52a..085e16d 100644 --- a/src/mpg123.c +++ b/src/mpg123.c @@ -10,6 +10,8 @@ #include "mpg123app.h" #include "mpg123.h" #include "out123.h" +#include "syn123.h" +#include "version.h" #include "local.h" #ifdef HAVE_SYS_WAIT_H @@ -50,6 +52,7 @@ static void long_usage(int err); static void want_long_usage(char* arg, topt *); static void print_title(FILE* o); static void give_version(char* arg, topt *); +static void give_libversion(char* arg, topt *); struct parameter param = { FALSE , /* aggressiv */ @@ -244,7 +247,7 @@ void prev_dir(void) void safe_exit(int code); -static void play_prebuffer(void) +void play_prebuffer(void) { /* Ensure that the prebuffer bit has been posted. */ if(prebuffer_fill) @@ -484,7 +487,7 @@ static void set_appflag(char *arg, topt *opts) #if defined(NETWORK) || defined(NET123) static void set_httpauth(char *arg, topt *opts) { - param.httpauth = compat_strdup(arg); + param.httpauth = INT123_compat_strdup(arg); // Do not advertise the password for all system users. memset(arg, 'x', strlen(arg)); } @@ -495,7 +498,7 @@ static void set_httpauth_file(char *arg, topt *opts) int good = 0; if(fd >= 0) { - ssize_t rdb = read(fd, buf, sizeof(buf)); + mpg123_ssize_t rdb = read(fd, buf, sizeof(buf)); // If the file filled the whole buffer, this is too much. // realistic limits for aith are 255:255. if(rdb > 0 && rdb < sizeof(buf)) @@ -701,6 +704,7 @@ topt opts[] = { {'?', "help", 0, want_usage, 0, 0 }, {0 , "longhelp" , 0, want_long_usage, 0, 0 }, {0 , "version" , 0, give_version, 0, 0 }, + {0, "libversion" , 0, give_libversion, 0, 0 }, {'l', "listentry", GLO_ARG | GLO_LONG, 0, ¶m.listentry, 0 }, {0, "continue", GLO_LONG, set_appflag, &appflag, MPG123APP_CONTINUE }, {0, "rva-mix", GLO_INT, 0, ¶m.rva, 1 }, @@ -719,6 +723,7 @@ topt opts[] = { {0, "resync-limit", GLO_ARG | GLO_LONG, 0, ¶m.resync_limit, 0}, {0, "pitch", GLO_ARG|GLO_DOUBLE, 0, ¶m.pitch, 0}, {0, "pauseloop", GLO_ARG|GLO_DOUBLE, 0, ¶m.pauseloop, 0}, + {0, "presetloop", GLO_ARG|GLO_DOUBLE, 0, ¶m.pauseloop, 0}, #ifdef NETWORK {0, "ignore-mime", GLO_LONG, set_appflag, &appflag, MPG123APP_IGNORE_MIME }, #endif @@ -805,7 +810,7 @@ int play_frame(void) memcpy(prebuffer, audio, bytes); prebuffer_fill = bytes; bytes = 0; - debug1("prebuffered %"SIZE_P" bytes", prebuffer_fill); + debug1("prebuffered %"SIZE_P" bytes", (size_p)prebuffer_fill); } if(param.checkrange) { @@ -1009,9 +1014,9 @@ int main(int sys_argc, char ** sys_argv) * so using _wpgmptr with unicode paths after UTF8 conversion is broken on Windows */ - fullprogname = compat_strdup(_pgmptr); + fullprogname = INT123_compat_strdup(_pgmptr); #else - fullprogname = compat_strdup(argv[0]); + fullprogname = INT123_compat_strdup(argv[0]); #endif if(!fullprogname) @@ -1287,10 +1292,10 @@ int main(int sys_argc, char ** sys_argv) For one it serves for track skip when not in terminal control mode. The more important use being a graceful exit, including telling the buffer process what's going on. */ if(!param.remote) - catchsignal(SIGINT, catch_interrupt); + INT123_catchsignal(SIGINT, catch_interrupt); /* Need to catch things to exit cleanly, not messing up the terminal. */ - catchsignal(SIGTERM, catch_fatal_term); - catchsignal(SIGPIPE, catch_fatal_pipe); + INT123_catchsignal(SIGTERM, catch_fatal_term); + INT123_catchsignal(SIGPIPE, catch_fatal_pipe); #endif /* Now either check caps myself or query buffer for that. */ if(audio_setup(ao, mh)) @@ -1329,8 +1334,10 @@ int main(int sys_argc, char ** sys_argv) } if(param.delay > 0) { + // How much control do we want here? Jumping around would mean to get out of the + // delay phase and just mess everything up. Pause/unpause would be the only + // sensible playback controls. Maybe we can enforce that. controlled_drain(); - /* One should enable terminal control during that sleeping phase! */ if(param.verbose > 2) fprintf(stderr, "Note: pausing %i seconds before next track.\n", param.delay); #ifdef WIN32 Sleep(param.delay*1000); @@ -1339,6 +1346,7 @@ int main(int sys_argc, char ** sys_argv) #endif } if(!APPFLAG(MPG123APP_CONTINUE)) frames_left = param.frame_number; + term_new_track(); debug1("Going to play %s", strcmp(fname, "-") ? fname : "standard input"); // If a previous track did not cause error, we forget the success to @@ -1501,13 +1509,13 @@ int main(int sys_argc, char ** sys_argv) if(!param.quiet) { - double secs; + double secs = 0; long frank; fprintf(stderr, "\n"); if(mpg123_getstate(mh, MPG123_FRANKENSTEIN, &frank, NULL) == MPG123_OK && frank) fprintf(stderr, "This was a Frankenstein track.\n"); - mpg123_position(mh, 0, 0, NULL, NULL, &secs, NULL); + position_info(mh, 0, ao, NULL, NULL, &secs, NULL, NULL, NULL); fprintf(stderr,"[%d:%02d] Decoding of %s finished.\n", (int)(secs / 60), ((int)secs) % 60, filename); } else if(param.verbose) fprintf(stderr, "\n"); @@ -1716,7 +1724,7 @@ static void long_usage(int err) #ifndef GENERIC fprintf(o," --title set terminal title to filename\n"); #endif - fprintf(o," --pauseloop loop interval in (fractional) seconds\n"); + fprintf(o," --presetloop preset loop interval in (fractional) seconds\n"); fprintf(o," --name set instance name (used in various places)\n"); fprintf(o," --long-tag spacy id3 display with every item on a separate line\n"); fprintf(o," --lyrics show lyrics (from ID3v2 USLT frame)\n"); @@ -1740,6 +1748,7 @@ static void long_usage(int err) fprintf(o," -? --help give compact help\n"); fprintf(o," --longhelp give this long help listing\n"); fprintf(o," --version give name / version string\n"); + fprintf(o," --libversion give version info on mpg123 libraries\n"); fprintf(o,"\nSee the manpage "PACKAGE_NAME"(1) for more information.\n"); mpg123_free_string(enclist); @@ -1754,7 +1763,19 @@ static void want_long_usage(char* arg, topt *opts) static void give_version(char* arg, topt *opts) { - fprintf(stdout, PACKAGE_NAME" "PACKAGE_VERSION"\n"); + fprintf(stdout, PACKAGE_NAME " " MPG123_VERSION "\n"); + safe_exit(0); +} + +static void give_libversion(char* arg, topt *opts) +{ + unsigned int pl = 0; + unsigned int al = mpg123_libversion(&pl); + printf("libmpg123 from mpg123 %s, API version %u, patchlevel %u\n", mpg123_distversion(NULL, NULL, NULL), al, pl); + al = out123_libversion(&pl); + printf("libout123 from mpg123 %s, API version %u, patchlevel %u\n", out123_distversion(NULL, NULL, NULL), al, pl); + al = syn123_libversion(&pl); + printf("libsyn123 from mpg123 %s, API version %u, patchlevel %u\n", syn123_distversion(NULL, NULL, NULL), al, pl); safe_exit(0); } diff --git a/src/mpg123app.h b/src/mpg123app.h index fef7361..396344f 100644 --- a/src/mpg123app.h +++ b/src/mpg123app.h @@ -13,6 +13,14 @@ #define MPG123_H #include "config.h" +#ifndef _FILE_OFFSET_BITS +#ifdef LFS_SENSITIVE +#ifdef LFS_LARGEFILE_64 +#define _FILE_OFFSET_BITS 64 +#endif +#endif +#endif + /* everyone needs it */ #include "compat.h" /* import DLL symbols on windows */ @@ -140,6 +148,7 @@ extern int playlimit; #endif /* why extern? */ +void play_prebuffer(); extern int play_frame(void); extern int control_generic(mpg123_handle *fr); diff --git a/src/net123_exec.c b/src/net123_exec.c index 93c4c37..f005aa5 100644 --- a/src/net123_exec.c +++ b/src/net123_exec.c @@ -1,6 +1,11 @@ /* net123_exec: network (HTTP(S)) streaming for mpg123 via fork+exec + copyright 2022-2023 by the mpg123 project + free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org + initially written by Thomas Orgis + This avoids linking any network code directly into mpg123, just using external tools at runtime. @@ -13,6 +18,7 @@ #define _POSIX_C_SOURCE 200112L #include "config.h" +#include "version.h" #include "net123.h" // for strings #include "mpg123.h" @@ -72,8 +78,8 @@ static int check_program(char * const *argv, const char *token) { if(pipe(fd)) return 0; - compat_binmode(fd[0], TRUE); - compat_binmode(fd[1], TRUE); + INT123_compat_binmode(fd[0], TRUE); + INT123_compat_binmode(fd[1], TRUE); } pid_t pid = fork(); if(pid == 0) @@ -102,7 +108,7 @@ static int check_program(char * const *argv, const char *token) { size_t bufoff = 0; size_t got; - while( (got = unintr_read(fd[0], buf+bufoff, sizeof(buf)-1-bufoff)) ) + while( (got = INT123_unintr_read(fd[0], buf+bufoff, sizeof(buf)-1-bufoff)) ) { bufoff += got; buf[bufoff] = 0; // Now it's a terminated string. @@ -151,7 +157,7 @@ static char **wget_argv(const char *url, const char * const * client_head) char *httpauth = NULL; char *user = NULL; char *password = NULL; - if(param.httpauth && (httpauth = compat_strdup(param.httpauth))) + if(param.httpauth && (httpauth = INT123_compat_strdup(param.httpauth))) { char *sep = strchr(httpauth, ':'); if(sep) @@ -170,15 +176,15 @@ static char **wget_argv(const char *url, const char * const * client_head) } int an = 0; for(;an 1) argc++; // add --http0.9 char *httpauth = NULL; - if(param.httpauth && (httpauth = compat_strdup(param.httpauth))) + if(param.httpauth && (httpauth = INT123_compat_strdup(param.httpauth))) argc += 2; char ** argv = malloc(sizeof(char*)*(argc+1)); if(!argv) @@ -215,22 +221,22 @@ static char **curl_argv(const char *url, const char * const * client_head) } int an = 0; for(;an 1) - argv[an++] = compat_strdup("--http0.9"); - argv[an++] = compat_strdup("--user-agent"); - argv[an++] = compat_strdup(PACKAGE_NAME "/" PACKAGE_VERSION); + argv[an++] = INT123_compat_strdup("--http0.9"); + argv[an++] = INT123_compat_strdup("--user-agent"); + argv[an++] = INT123_compat_strdup(PACKAGE_NAME "/" MPG123_VERSION); for(size_t ch=0; ch < cheads; ++ch) { - argv[an++] = compat_strdup("--header"); - argv[an++] = compat_strdup(client_head[ch]); + argv[an++] = INT123_compat_strdup("--header"); + argv[an++] = INT123_compat_strdup(client_head[ch]); } if(httpauth) { - argv[an++] = compat_strdup("--user"); + argv[an++] = INT123_compat_strdup("--user"); argv[an++] = httpauth; } - argv[an++] = compat_strdup(url); + argv[an++] = INT123_compat_strdup(url); argv[an++] = NULL; return argv; } @@ -240,7 +246,7 @@ static size_t net123_read(net123_handle *nh, void *buf, size_t bufsize) { if(!nh || (bufsize && !buf)) return 0; - return unintr_read(((exec_handle*)nh->parts)->fd, buf, bufsize); + return INT123_unintr_read(((exec_handle*)nh->parts)->fd, buf, bufsize); } static void net123_close(net123_handle *nh) @@ -253,7 +259,7 @@ static void net123_close(net123_handle *nh) kill(eh->worker, SIGKILL); errno = 0; if(waitpid(eh->worker, NULL, 0) < 0) - merror("failed to wait for worker process: %s", strerror(errno)); + merror("failed to wait for worker process: %s", INT123_strerror(errno)); else if(param.verbose > 1) fprintf(stderr, "Note: network helper %"PRIiMAX" finished\n", (intmax_t)eh->worker); } @@ -319,18 +325,18 @@ net123_handle *net123_open_exec(const char *url, const char * const * client_hea errno = 0; if(pipe(fd)) { - merror("failed creating a pipe: %s", strerror(errno)); + merror("failed creating a pipe: %s", INT123_strerror(errno)); free(nh); return NULL; } - compat_binmode(fd[0], TRUE); - compat_binmode(fd[1], TRUE); + INT123_compat_binmode(fd[0], TRUE); + INT123_compat_binmode(fd[1], TRUE); eh->worker = fork(); if(eh->worker == -1) { - merror("fork failed: %s", strerror(errno)); + merror("fork failed: %s", INT123_strerror(errno)); free(nh); return NULL; } @@ -366,7 +372,7 @@ net123_handle *net123_open_exec(const char *url, const char * const * client_hea dup2(errfd, STDERR_FILENO); } execvp(argv[0], argv); - merror("cannot execute %s: %s", argv[0], strerror(errno)); + merror("cannot execute %s: %s", argv[0], INT123_strerror(errno)); exit(1); } // parent diff --git a/src/net123_winhttp.c b/src/net123_winhttp.c index 17ec7ce..26f797f 100644 --- a/src/net123_winhttp.c +++ b/src/net123_winhttp.c @@ -1,4 +1,5 @@ #include "config.h" +#include "version.h" #include "net123.h" #include "compat.h" #include "debug.h" @@ -94,14 +95,14 @@ net123_handle *net123_open_winhttp(const char *url, const char * const *client_h size_t ii; WINBOOL res; DWORD headerlen; - const LPCWSTR useragent = MPG123WSTR(PACKAGE_NAME) L"/" MPG123WSTR(PACKAGE_VERSION); + const LPCWSTR useragent = MPG123WSTR(PACKAGE_NAME) L"/" MPG123WSTR(MPG123_VERSION); WINHTTP_STATUS_CALLBACK cb; net123_handle *handle = NULL; if(!WinHttpCheckPlatform()) return NULL; - win32_utf8_wide(url, &urlW, NULL); + INT123_win32_utf8_wide(url, &urlW, NULL); if(urlW == NULL) goto cleanup; winhttp_handle *ret = calloc(1, sizeof(winhttp_handle)); @@ -164,7 +165,7 @@ net123_handle *net123_open_winhttp(const char *url, const char * const *client_h wrap_auth(ret); for(ii = 0; client_head[ii]; ii++){ - win32_utf8_wide(client_head[ii], &headers, NULL); + INT123_win32_utf8_wide(client_head[ii], &headers, NULL); if(!headers) goto cleanup; debug1("WinHttpAddRequestHeaders add %S", headers); @@ -208,7 +209,7 @@ net123_handle *net123_open_winhttp(const char *url, const char * const *client_h headers = calloc(1, headerlen); if (!headers) goto cleanup; WinHttpQueryHeaders(ret->request, WINHTTP_QUERY_RAW_HEADERS_CRLF, WINHTTP_HEADER_NAME_BY_INDEX, headers, &headerlen, WINHTTP_NO_HEADER_INDEX); - win32_wide_utf7(headers, &ret->headers, &ret->headers_len); + INT123_win32_wide_utf7(headers, &ret->headers, &ret->headers_len); /* bytes written, skip the terminating null, we want to stop at the \r\n\r\n */ ret->headers_len --; free(headers); diff --git a/src/net123_wininet.c b/src/net123_wininet.c index 6cf6e50..eb706c9 100644 --- a/src/net123_wininet.c +++ b/src/net123_wininet.c @@ -1,4 +1,5 @@ #include "config.h" +#include "version.h" #include "net123.h" #include "compat.h" #include "debug.h" @@ -74,10 +75,10 @@ net123_handle *net123_open_wininet(const char *url, const char * const *client_h WINBOOL res; DWORD headerlen; net123_handle *ret = NULL; - const LPCWSTR useragent = MPG123WSTR(PACKAGE_NAME) L"/" MPG123WSTR(PACKAGE_VERSION); + const LPCWSTR useragent = MPG123WSTR(PACKAGE_NAME) L"/" MPG123WSTR(MPG123_VERSION); INTERNET_STATUS_CALLBACK cb; - win32_utf8_wide(url, &urlW, NULL); + INT123_win32_utf8_wide(url, &urlW, NULL); if(urlW == NULL) goto cleanup; ret = calloc(1, sizeof(net123_handle)); @@ -143,7 +144,7 @@ net123_handle *net123_open_wininet(const char *url, const char * const *client_h } for(ii = 0; client_head[ii]; ii++){ - win32_utf8_wide(client_head[ii], &headers, NULL); + INT123_win32_utf8_wide(client_head[ii], &headers, NULL); if(!headers) goto cleanup; debug1("HttpAddRequestHeadersW add %S", headers); @@ -182,7 +183,7 @@ net123_handle *net123_open_wininet(const char *url, const char * const *client_h if (!headers) goto cleanup; res = HttpQueryInfoW(wh->request, HTTP_QUERY_RAW_HEADERS_CRLF, headers, &headerlen, &wh->HttpQueryInfoIndex); debug3("HttpQueryInfoW returned %u, err %u : %S", res, GetLastError(), headers ? headers : L"null"); - win32_wide_utf7(headers, &wh->headers, &wh->headers_len); + INT123_win32_wide_utf7(headers, &wh->headers, &wh->headers_len); /* bytes written, skip the terminating null, we want to stop at the \r\n\r\n */ wh->headers_len --; free(headers); diff --git a/src/out123.c b/src/out123.c index 91d5878..730aaed 100644 --- a/src/out123.c +++ b/src/out123.c @@ -1,7 +1,7 @@ /* out123: stream data from libmpg123 or libsyn123 to an audio output device - copyright 1995-2021 by the mpg123 project, + copyright 1995-2023 by the mpg123 project, free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org @@ -28,6 +28,7 @@ #define ME "out123" #include "config.h" +#include "version.h" #include "compat.h" #include #if _WIN32 @@ -211,7 +212,7 @@ static void safe_exit(int code) char *dummy, *dammy; if(input && input != stdin) - compat_fclose(input); + INT123_compat_fclose(input); if(!code) controlled_drain(); @@ -1075,10 +1076,10 @@ void push_output(unsigned char *buf, size_t samples) mdebug("playing %zu bytes", bytes); check_fatal_output(out123_play(ao, buf, bytes) < (int)bytes); - if(also_stdout && unintr_fwrite(buf, pcmframe, samples, stdout) < samples) + if(also_stdout && INT123_unintr_fwrite(buf, pcmframe, samples, stdout) < samples) { if(!quiet) - error1( "failed to copy stream to stdout: %s", strerror(errno)); + error1( "failed to copy stream to stdout: %s", INT123_strerror(errno)); safe_exit(133); } } @@ -1110,10 +1111,10 @@ FILE* open_next_file(int argc, char** argv, int firstrun) { char *filename = argv[loptind++]; errno = 0; - in = strcmp(filename, "-") ? compat_fopen(filename, "rb") : stdin; + in = strcmp(filename, "-") ? INT123_compat_fopen(filename, "rb") : stdin; if(!in) merror( "Failed to open input file '%s' (%s), ignoring." - , filename, strerror(errno) ); + , filename, INT123_strerror(errno) ); else had_something = 1; } @@ -1465,7 +1466,7 @@ static void setup_processing(void) int main(int sys_argc, char ** sys_argv) { int result; - compat_binmode(STDIN_FILENO, TRUE); + INT123_compat_binmode(STDIN_FILENO, TRUE); check_locale(); #if defined (WANT_WIN32_UNICODE) @@ -1479,7 +1480,7 @@ int main(int sys_argc, char ** sys_argv) argc = sys_argc; #endif - if(!(fullprogname = compat_strdup(argv[0]))) + if(!(fullprogname = INT123_compat_strdup(argv[0]))) { error("OOM"); /* Out Of Memory. Don't waste bytes on that error. */ safe_exit(1); @@ -1567,8 +1568,8 @@ int main(int sys_argc, char ** sys_argv) } /* Ensure cleanup before we cause too much mess. */ #if !defined(WIN32) && !defined(GENERIC) - catchsignal(SIGINT, catch_interrupt); - catchsignal(SIGTERM, catch_interrupt); + INT123_catchsignal(SIGINT, catch_interrupt); + INT123_catchsignal(SIGTERM, catch_interrupt); #endif ao = out123_new(); if(!ao){ error("Failed to allocate output."); exit(1); } @@ -1715,7 +1716,7 @@ int main(int sys_argc, char ** sys_argv) if(!intflag && !generate && !just_stdin) { if(input && input != stdin) - compat_fclose(input); + INT123_compat_fclose(input); input = open_next_file(argc, argv, 0); } } while(!intflag && !generate && input && !just_stdin); @@ -1761,7 +1762,7 @@ static char* output_enclist(void) static void print_title(FILE *o) { fprintf(o, "Simple audio output with raw PCM input\n"); - fprintf(o, "\tversion %s; derived from mpg123 by Michael Hipp and others\n", PACKAGE_VERSION); + fprintf(o, "\tversion %s; derived from mpg123 by Michael Hipp and others\n", MPG123_VERSION); fprintf(o, "\tfree software (LGPL) without any warranty but with best wishes\n"); } @@ -1935,6 +1936,6 @@ static void want_long_usage(char* arg, topt *opts) static void give_version(char* arg, topt *opts) { - fprintf(stdout, "out123 "PACKAGE_VERSION"\n"); + fprintf(stdout, "out123 "MPG123_VERSION"\n"); safe_exit(0); } diff --git a/src/playlist.c b/src/playlist.c index c72e1c0..b1c14d0 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -182,7 +182,7 @@ size_t playlist_pos(size_t *total, long *loop) return pl.hit_end ? pl.fill+1 : pl.num; } -void playlist_jump(ssize_t incr) +void playlist_jump(mpg123_ssize_t incr) { size_t off = incr < 0 ? -incr : incr; @@ -190,7 +190,7 @@ void playlist_jump(ssize_t incr) /* Straight or shuffled lists can be jumped around in. */ if(pl.fill && param.shuffle < 2) { - debug3("jump %"SIZE_P" (%ld) + %"SSIZE_P, pl.pos, pl.loop, incr); + debug3("jump %"SIZE_P" (%ld) + %"SSIZE_P, (size_p)pl.pos, pl.loop, (ssize_p)incr); if(pl.pos) --pl.pos; /* Now we're at the _current_ position. */ @@ -203,7 +203,7 @@ void playlist_jump(ssize_t incr) else pl.pos += off; } - debug2("jumped %"SIZE_P" (%ld)", pl.pos, pl.loop); + debug2("jumped %"SIZE_P" (%ld)", (size_p)pl.pos, pl.loop); } } @@ -654,7 +654,7 @@ static int add_to_playlist(char* new_entry, char freeit) { struct listitem* tmp = NULL; /* enlarge the list */ - tmp = (struct listitem*) safe_realloc(pl.list, (pl.size + pl.alloc_step) * sizeof(struct listitem)); + tmp = (struct listitem*) INT123_safe_realloc(pl.list, (pl.size + pl.alloc_step) * sizeof(struct listitem)); if(!tmp) { error("unable to allocate more memory for playlist"); diff --git a/src/playlist.h b/src/playlist.h index c475d99..cc84955 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -23,7 +23,7 @@ void free_playlist(void); /* Print out the playlist, with optional position indicator. */ void print_playlist(FILE* out, int showpos); /* This prepares a jump to be executed on next get_next_file(). */ -void playlist_jump(ssize_t incr); +void playlist_jump(mpg123_ssize_t incr); /* Aim for the next directory (just trigger next track for random play). */ void playlist_next_dir(void); /* Same for previous one. */ diff --git a/src/resolver.c b/src/resolver.c index 02ba90f..4c451eb 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -2,7 +2,7 @@ resolver.c: TCP network stuff, for IPv4 and IPv6 Oh, and also some URL parsing... extracting host name and such. - copyright 2008-2010 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2008-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written Thomas Orgis (based on httpget.c) @@ -222,13 +222,13 @@ static int timeout_connect(int sockfd, const struct sockaddr *serv_addr, socklen } else { - error1("error from select(): %s", strerror(errno)); + error1("error from select(): %s", INT123_strerror(errno)); return -1; } } else { - error1("connection failed: %s", strerror(errno)); + error1("connection failed: %s", INT123_strerror(errno)); return err; } } @@ -236,7 +236,7 @@ static int timeout_connect(int sockfd, const struct sockaddr *serv_addr, socklen { if(connect(sockfd, serv_addr, addrlen)) { - error1("connection failed: %s", strerror(errno)); + error1("connection failed: %s", INT123_strerror(errno)); return -1; } else return 0; /* _good_ */ @@ -284,7 +284,7 @@ int open_connection(mpg123_string *host, mpg123_string *port) if((sock = socket(PF_INET, SOCK_STREAM, 6)) < 0) { - error1("Cannot create socket: %s", strerror(errno)); + error1("Cannot create socket: %s", INT123_strerror(errno)); return -1; } if(timeout_connect(sock, (struct sockaddr *)&server, sizeof(server))) diff --git a/src/streamdump.c b/src/streamdump.c index 986b6a0..d7f8a6b 100644 --- a/src/streamdump.c +++ b/src/streamdump.c @@ -4,7 +4,7 @@ This evolved into the generic I/O interposer for direct file or http stream access, with explicit buffering for getline. - copyright 2010-2022 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2010-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ @@ -63,7 +63,7 @@ void *buf, size_t bufsize ) #ifdef WANT_WIN32_SOCKETS return win32_net_read(*fdp, buf, bufsize); #else - return unintr_read(*fdp, buf, bufsize); + return INT123_unintr_read(*fdp, buf, bufsize); #endif } @@ -165,24 +165,24 @@ static int dump_fd = -1; // Read without the buffer. This is used to fill the buffer explicitly in getline. // This is the function that finally wraps around all the different types of input. -static ssize_t stream_read_raw(struct stream *sd, void *buf, size_t count) +static mpg123_ssize_t stream_read_raw(struct stream *sd, void *buf, size_t count) { - ssize_t ret = -1; + mpg123_ssize_t ret = -1; #ifdef NETWORK if(sd->nh) - ret = (ssize_t) sd->nh->read(sd->nh, buf, count); + ret = (mpg123_ssize_t) sd->nh->read(sd->nh, buf, count); #endif if(sd->fd >= 0) // plain file or network socket - ret = (ssize_t) unintr_read(sd->fd, buf, count); + ret = (mpg123_ssize_t) INT123_unintr_read(sd->fd, buf, count); return ret; } -static ssize_t stream_read(struct stream *sd, void *buf, size_t count) +static mpg123_ssize_t stream_read(struct stream *sd, void *buf, size_t count) { if(!sd) return -1; char *bbuf = buf; - ssize_t ret = 0; + mpg123_ssize_t ret = 0; if(count > SSIZE_MAX) return -1; while(count) @@ -196,7 +196,7 @@ static ssize_t stream_read(struct stream *sd, void *buf, size_t count) sd->bufp += get; } else { // get it from the source - ssize_t rret = stream_read_raw(sd, bbuf, count); + mpg123_ssize_t rret = stream_read_raw(sd, bbuf, count); if(rret < 0) return ret > 0 ? ret : -1; if(rret == 0) @@ -226,7 +226,7 @@ static off_t stream_seek(struct stream *sd, off_t pos, int whence) // Yes, either \r or \n ends a line, a following \n or \r is just swallowed. // Need to catch the case where the buffer ends with \r and the next buffer // contents start with the matching \n, and the other way round. -ssize_t stream_getline(struct stream *sd, mpg123_string *line) +mpg123_ssize_t stream_getline(struct stream *sd, mpg123_string *line) { if(!sd || !line) return -1; @@ -273,7 +273,7 @@ ssize_t stream_getline(struct stream *sd, mpg123_string *line) { debug("re-filling buffer"); // refill buffer - ssize_t ret = stream_read_raw(sd, sd->buf, sizeof(sd->buf)); + mpg123_ssize_t ret = stream_read_raw(sd, sd->buf, sizeof(sd->buf)); mdebug("raw read return: %zd", ret); if(ret < 0) return -1; @@ -529,7 +529,7 @@ struct stream *stream_open(const char *url) if(!strcmp(url, "-")) { sd->fd = STDIN_FILENO; - compat_binmode(STDIN_FILENO, TRUE); + INT123_compat_binmode(STDIN_FILENO, TRUE); } #ifdef NETWORK else if(!strncasecmp("http://", url, 7) || !strncasecmp("https://", url, 8)) @@ -594,10 +594,10 @@ struct stream *stream_open(const char *url) if(!strncasecmp("file://", url, 7)) url+= 7; // Might be useful to prepend file scheme prefix for local stuff. errno = 0; - sd->fd = compat_open(url, O_RDONLY|O_BINARY); + sd->fd = INT123_compat_open(url, O_RDONLY|O_BINARY); if(sd->fd < 0) { - merror("failed to open file: %s: %s", url, strerror(errno)); + merror("failed to open file: %s: %s", url, INT123_strerror(errno)); stream_close(sd); return NULL; } @@ -614,13 +614,13 @@ void stream_close(struct stream *sd) } /* Read data from input, write copy to dump file. */ -static ssize_t dump_read(void *handle, void *buf, size_t count) +static mpg123_ssize_t dump_read(void *handle, void *buf, size_t count) { struct stream *sd = handle; - ssize_t ret = stream_read(sd, buf, count); + mpg123_ssize_t ret = stream_read(sd, buf, count); if(ret > 0 && dump_fd > -1) { - ret = unintr_write(dump_fd, buf, ret); + ret = INT123_unintr_write(dump_fd, buf, ret); } return ret; } @@ -658,11 +658,11 @@ int dump_setup(struct stream *sd, mpg123_handle *mh) { if(!param.quiet) fprintf(stderr, "Note: Dumping stream to %s\n", param.streamdump); - dump_fd = compat_open(param.streamdump, O_CREAT|O_TRUNC|O_RDWR); + dump_fd = INT123_compat_open(param.streamdump, O_CREAT|O_TRUNC|O_RDWR); } if(dump_fd < 0) { - error1("Failed to open dump file: %s\n", strerror(errno)); + error1("Failed to open dump file: %s\n", INT123_strerror(errno)); return -1; } #ifdef WIN32 @@ -696,7 +696,7 @@ int dump_setup(struct stream *sd, mpg123_handle *mh) void dump_close(void) { - if(dump_fd > -1) compat_close(dump_fd); + if(dump_fd > -1) INT123_compat_close(dump_fd); dump_fd = -1; } diff --git a/src/streamdump.h b/src/streamdump.h index 5bb93a0..f8d3749 100644 --- a/src/streamdump.h +++ b/src/streamdump.h @@ -40,7 +40,7 @@ struct stream * stream_open(const char *url); // Read lines, with arbitrary line end, which is stripped. // Return number of bytes in line (including closing zero byte) or error < 0. // End of file returns zero, consequently. -ssize_t stream_getline(struct stream *sd, mpg123_string *line); +mpg123_ssize_t stream_getline(struct stream *sd, mpg123_string *line); void stream_close(struct stream *sd); // Use an open stream object to optionally prepare the dump and diff --git a/src/sysutil.c b/src/sysutil.c index cf5bf0c..d3b8969 100644 --- a/src/sysutil.c +++ b/src/sysutil.c @@ -55,7 +55,7 @@ int split_dir_file (const char *path, char **dname, char **fname) if ((slashpos = strrchr(path, '/'))) { *fname = slashpos + 1; - *dname = compat_strdup(path); /* , 1 + slashpos - path); */ + *dname = INT123_compat_strdup(path); /* , 1 + slashpos - path); */ if(!(*dname)) { perror("failed to allocate memory for dir name"); return 0; diff --git a/src/term.c b/src/term.c index 1dd86e9..792ac6d 100644 --- a/src/term.c +++ b/src/term.c @@ -1,7 +1,7 @@ /* term: terminal control - copyright ?-2019 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ @@ -18,7 +18,7 @@ static int term_enable = 0; static const char *extrabreak = ""; -int seeking = FALSE; +static int seeking = FALSE; extern out123_handle *ao; @@ -36,7 +36,8 @@ struct keydef term_help[] = ,{ MPG123_NEXT_DIR_KEY, 0, "next directory" } ,{ MPG123_PREV_DIR_KEY, 0, "previous directory" } ,{ MPG123_BACK_KEY, 0, "back to beginning" } - ,{ MPG123_PAUSE_KEY, 0, "loop (--pauseloop)" } + ,{ MPG123_LOOP_KEY, 0, "A-B loop" } + ,{ MPG123_PAUSE_KEY, 0, "preset loop" } ,{ MPG123_FORWARD_KEY, 0, "forward" } ,{ MPG123_REWIND_KEY, 0, "rewind" } ,{ MPG123_FAST_FORWARD_KEY, 0, "fast forward" } @@ -87,7 +88,7 @@ int term_init(void) if(term_setup() < 0) { if(errno) - merror("failed to set up terminal: %s", strerror(errno)); + merror("failed to set up terminal: %s", INT123_strerror(errno)); else error("failed to set up terminal"); return -1; @@ -104,7 +105,11 @@ void term_hint(void) static void term_handle_input(mpg123_handle *, out123_handle *, int); -static int pause_cycle; +// A-B looping sets pause_cycle at runtime baseon the difference to +// pause_begin. Keeping the broken wording for 'pause' for now. To the +// outside world, it is 'looping'. +static double pause_begin = -1; +static off_t pause_cycle; static int print_index(mpg123_handle *mh) { @@ -129,28 +134,28 @@ static int print_index(mpg123_handle *mh) static off_t offset = 0; +void term_new_track(void) +{ + playstate = STATE_PLAYING; + pause_begin = -1; +} + /* Go back to the start for the cyclic pausing. */ void pause_recycle(mpg123_handle *fr) { /* Take care not to go backwards in time in steps of 1 frame That is what the +1 is for. */ - pause_cycle=(int)(param.pauseloop/mpg123_tpf(fr)); + pause_cycle=(off_t)(param.pauseloop/mpg123_tpf(fr)); offset-=pause_cycle; } -/* Done with pausing, no offset anymore. Just continuous playback from now. */ -void pause_uncycle(void) -{ - offset += pause_cycle; -} - off_t term_control(mpg123_handle *fr, out123_handle *ao) { offset = 0; - debug2("control for frame: %li, enable: %i", (long)mpg123_tellframe(fr), term_enable); + debug2("control for frame: %"OFF_P", enable: %i", (off_p)mpg123_tellframe(fr), term_enable); if(!term_enable) return 0; - if(paused) + if(playstate==STATE_LOOPING) { /* pause_cycle counts the remaining frames _after_ this one, thus <0, not ==0 . */ if(--pause_cycle < 0) @@ -164,14 +169,14 @@ off_t term_control(mpg123_handle *fr, out123_handle *ao) if((offset < 0) && (-offset > framenum)) offset = - framenum; if(param.verbose && offset != old_offset) print_stat(fr,offset,ao,1,¶m); - } while (!intflag && stopped); + } while (!intflag && playstate==STATE_STOPPED); /* Make the seeking experience with buffer less annoying. No sound during seek, but at least it is possible to go backwards. */ if(offset) { if((offset = mpg123_seek_frame(fr, offset, SEEK_CUR)) >= 0) - debug1("seeked to %li", (long)offset); + debug1("seeked to %"OFF_P, (off_p)offset); else error1("seek failed: %s!", mpg123_strerror(fr)); /* Buffer resync already happened on un-stop? */ /* if(param.usebuffer) audio_drop(ao);*/ @@ -182,14 +187,14 @@ off_t term_control(mpg123_handle *fr, out123_handle *ao) /* Stop playback while seeking if buffer is involved. */ static void seekmode(mpg123_handle *mh, out123_handle *ao) { - if(param.usebuffer && !stopped) + if(param.usebuffer && playstate!=STATE_STOPPED) { int channels = 0; int encoding = 0; int pcmframe; off_t back_samples = 0; - stopped = TRUE; + playstate = STATE_STOPPED; out123_pause(ao); if(param.verbose) print_stat(mh, 0, ao, 0, ¶m); @@ -233,7 +238,9 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) case MPG123_BACK_KEY: out123_pause(ao); out123_drop(ao); - if(paused) pause_cycle=(int)(param.pauseloop/mpg123_tpf(fr)); + // Revisit: What does that really achieve? + if(playstate==STATE_LOOPING) + pause_cycle=(int)(param.pauseloop/mpg123_tpf(fr)); if(mpg123_seek_frame(fr, 0, SEEK_SET) < 0) error1("Seek to begin failed: %s", mpg123_strerror(fr)); @@ -252,24 +259,61 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) break; case MPG123_QUIT_KEY: debug("QUIT"); - if(stopped) + if(playstate==STATE_STOPPED) { if(param.verbose) print_stat(fr,0,ao,0,¶m); - stopped = 0; + playstate=STATE_PLAYING; // really necessary/sensible? out123_pause(ao); /* no chance for annoying underrun warnings */ out123_drop(ao); } set_intflag(); offset = 0; break; + case MPG123_LOOP_KEY: + // In paused (looping) state, the loop key ends the loop just like the other one. + // Otherwise, it starts playback and enters A-? mode. If in A-? mode, it + // sets the loop interval and then again falls through. + if(playstate != STATE_LOOPING) + { + playstate = STATE_AB; + // Careful with positioning, output might have + long outrate = 0; + int outframesize = 0; + long inrate = 0; + if(out123_getformat(ao, &outrate, NULL, NULL, &outframesize) || outrate==0) + break; + if(mpg123_getformat(fr, &inrate, NULL, NULL) || inrate==0) + break; + + double position = (double)mpg123_tell(fr)/inrate + (double)out123_buffered(ao)/(outrate * outframesize); + if(pause_begin < 0) + { + pause_begin = position; + if(param.verbose) + print_stat(fr, 0, ao, 1, ¶m); + else + fprintf(stderr, "%s", MPG123_AB_STRING); + break; + } else if(position <= pause_begin) + { + // Pathological situation: You seeked around, whatever. No loop. + playstate=STATE_LOOPING; // Let fall-through fix up things. + } + { + param.pauseloop = (position > pause_begin) ? (position-pause_begin) : mpg123_tpf(fr); + // Fall throuth to start looping. + } + } case MPG123_PAUSE_KEY: - paused=1-paused; + { + playstate = playstate == STATE_LOOPING ? STATE_PLAYING : STATE_LOOPING; + pause_begin = -1; size_t buffered = out123_buffered(ao); out123_pause(ao); /* underrun awareness */ out123_drop(ao); - if(paused) + if(playstate == STATE_LOOPING) { // Make output buffer react immediately, dropping decoded audio // and (at least trying to) seeking back in input. @@ -287,23 +331,20 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) } else out123_param_float(ao, OUT123_PRELOAD, param.preload); - if(stopped) - stopped=0; if(param.verbose) print_stat(fr, 0, ao, 1, ¶m); else - fprintf(stderr, "%s", (paused) ? MPG123_PAUSED_STRING : MPG123_EMPTY_STRING); + fprintf(stderr, "%s", (playstate == STATE_LOOPING) ? MPG123_PAUSED_STRING : MPG123_EMPTY_STRING); + } break; case MPG123_STOP_KEY: case ' ': /* TODO: Verify/ensure that there is no "chirp from the past" when seeking while stopped. */ - stopped=1-stopped; - if(paused) { - paused=0; + if(playstate == STATE_LOOPING) offset -= pause_cycle; - } - if(stopped) + playstate = playstate == STATE_STOPPED ? STATE_PLAYING : STATE_STOPPED; + if(playstate == STATE_STOPPED) out123_pause(ao); else { @@ -314,7 +355,7 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) if(param.verbose) print_stat(fr, 0, ao, 1, ¶m); else - fprintf(stderr, "%s", (stopped) ? MPG123_STOPPED_STRING : MPG123_EMPTY_STRING); + fprintf(stderr, "%s", (playstate==STATE_STOPPED) ? MPG123_STOPPED_STRING : MPG123_EMPTY_STRING); break; case MPG123_FINE_REWIND_KEY: seekmode(fr, ao); @@ -533,6 +574,8 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) out123_drop(ao); if(len > 0) mpg123_seek(fr, (off_t)( (num/10.)*len ), SEEK_SET); + else + error("Not seeking as track length cannot be determined."); } break; case MPG123_BOOKMARK_KEY: @@ -546,8 +589,7 @@ static void term_handle_key(mpg123_handle *fr, out123_handle *ao, char val) static void term_handle_input(mpg123_handle *fr, out123_handle *ao, int do_delay) { char val; - /* Do we really want that while loop? This means possibly handling multiple inputs that come very rapidly in one go. */ - while(term_get_key(stopped, do_delay, &val)) + if(term_get_key(playstate==STATE_STOPPED, do_delay, &val)) { term_handle_key(fr, ao, val); } diff --git a/src/term.h b/src/term.h index fa00f0b..790b0ee 100644 --- a/src/term.h +++ b/src/term.h @@ -21,6 +21,7 @@ #define MPG123_BACK_KEY 'b' #define MPG123_NEXT_KEY 'f' #define MPG123_PAUSE_KEY 'p' +#define MPG123_LOOP_KEY 'o' #define MPG123_QUIT_KEY 'q' /* space bar is alias for that */ #define MPG123_STOP_KEY 's' @@ -76,8 +77,9 @@ #define MPG123_PITCH_VAL 0.001 #define MPG123_PITCH_BVAL 0.01 -#define MPG123_PAUSED_STRING "Paused. \b\b\b\b\b\b\b\b" +#define MPG123_PAUSED_STRING "Looping.\b\b\b\b\b\b\b\b" #define MPG123_STOPPED_STRING "Stopped.\b\b\b\b\b\b\b\b" +#define MPG123_AB_STRING "Loop A-?\b\b\b\b\b\b\b\b" #define MPG123_EMPTY_STRING " \b\b\b\b\b\b\b\b" /* Need it as string for the param struct, change according to the above. */ @@ -87,6 +89,7 @@ int term_init(void); // -1 on error, 0 success or no terminal desired void term_exit(void); +void term_new_track(void); // prepare for a new track being played off_t term_control(mpg123_handle *mh, out123_handle *ao); void term_hint(void); /* Print a message hinting at terminal usage. */ diff --git a/src/term_posix.c b/src/term_posix.c index 278ce7d..45813be 100644 --- a/src/term_posix.c +++ b/src/term_posix.c @@ -3,7 +3,7 @@ HAVE_TERMIOS is a prerequisite. - copyright 2008-2022 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 2008-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis */ @@ -57,7 +57,7 @@ int term_have_fun(int fd, int want_visuals) if(term_width(fd) > 0 && want_visuals) { /* Only play with non-dumb terminals. */ - char *tname = compat_getenv("TERM"); + char *tname = INT123_compat_getenv("TERM"); if(tname) { if(strcmp(tname, "") && strcmp(tname, "dumb")) @@ -149,7 +149,7 @@ int term_setup(void) term_fd = open(term_name, O_RDONLY); if(term_fd < 0) { - merror("failed to open terminal: %s", strerror(errno)); + merror("failed to open terminal: %s", INT123_strerror(errno)); return -1; } } @@ -159,7 +159,7 @@ int term_setup(void) // For now, this always fails on OS/2, but they might fix things. // So just try to move on. #ifndef __OS2__ - merror("failed to get terminal attributes: %s", strerror(errno)); + merror("failed to get terminal attributes: %s", INT123_strerror(errno)); return -1; #endif } @@ -170,7 +170,7 @@ int term_setup(void) close(term_fd); term_fd = -1; if(errno) - merror("failure setting terminal attributes: %s", strerror(errno)); + merror("failure setting terminal attributes: %s", INT123_strerror(errno)); else error("failure setting terminal attributes"); return -1; diff --git a/src/tests/Makemodule.am b/src/tests/Makemodule.am index 4ad25f7..047c777 100644 --- a/src/tests/Makemodule.am +++ b/src/tests/Makemodule.am @@ -1,13 +1,20 @@ # Module for non-recursive mpg123 build system. +if BUILD_LIBMPG123 +if BUILD_PROGRAMS +if HAVE_LFS_WRAP +TESTS += \ + src/tests/decode_fixed.sh +endif +endif TESTS += \ - src/tests/decode_fixed.sh \ src/tests/seek_whence.sh \ src/tests/seek_accuracy.sh \ src/tests/resample_total \ src/tests/text \ src/tests/textprint \ src/tests/plain_id3.sh +endif if !HAVE_SYNTH16 XFAIL_TESTS += src/tests/decode_fixed.sh @@ -29,6 +36,7 @@ EXTRA_DIST += \ src/tests/plain_id3.txt \ src/tests/sweep.mp3 +if BUILD_LIBMPG123 check_PROGRAMS += \ src/tests/decode_fixed \ src/tests/seek_whence \ @@ -45,6 +53,7 @@ EXTRA_PROGRAMS += \ src/tests/seek_accuracy \ src/tests/noise \ src/tests/sweeper +endif src_tests_volume_SOURCES = \ src/tests/volume.c diff --git a/src/tests/decode_fixed.c b/src/tests/decode_fixed.c index 3f1b99a..9d32ff8 100644 --- a/src/tests/decode_fixed.c +++ b/src/tests/decode_fixed.c @@ -25,7 +25,7 @@ int work(mpg123_handle *mh, int ch, int enc) continue; fprintf(stderr, "Got first sample %d and last sample %d out of %zu\n" , buffer[0], buffer[done/sizeof(*buffer)-1], done/sizeof(*buffer) ); - unintr_write(STDOUT_FILENO, buffer, done); + INT123_unintr_write(STDOUT_FILENO, buffer, done); } if(ret != MPG123_DONE) { diff --git a/src/tests/resample_total.c b/src/tests/resample_total.c index 148f85a..ad18be2 100644 --- a/src/tests/resample_total.c +++ b/src/tests/resample_total.c @@ -2,26 +2,44 @@ // this, the native wrapper is used, hopefully matching off_t. //#define _FILE_OFFSET_BITS 64 //#define _FILE_OFFSET_BITS 32 +#define SYN123_PORTABLE_API #include +#include + +#ifdef SYN123_PORTABLE_API +typedef int64_t synoff; +typedef int64_t synprint; +#define SYNPRINT PRIi64 +#else +typedef off_t synoff; +typedef intmax_t synprint; +#define SYNPRINT PRIiMAX +#endif + #include const long arate = 8000; const long brate = 48000; -const off_t ins = 12637; -const off_t outs = 75822; +const synoff ins = 12637; +const synoff outs = 75822; int main() { - off_t outs2 = syn123_resample_total(arate,brate,ins); - off_t ins2 = syn123_resample_intotal(arate,brate,outs); +#ifdef SYN123_PORTABLE_API + synoff outs2 = syn123_resample_total64(arate,brate,ins); + synoff ins2 = syn123_resample_intotal64(arate,brate,outs); +#else + synoff outs2 = syn123_resample_total(arate,brate,ins); + synoff ins2 = syn123_resample_intotal(arate,brate,outs); +#endif int err = 0; if(outs2 != outs && ++err) - fprintf(stderr, "total mismatch: %ld != %ld\n" - , (long)outs2, (long)outs ); + fprintf(stderr, "total mismatch: %" SYNPRINT " != %" SYNPRINT "\n" + , (synprint)outs2, (synprint)outs ); if(ins2 != ins && ++err) - fprintf(stderr, "intotal mismatch: %ld != %ld\n" - , (long)ins2, (long)ins ); + fprintf(stderr, "intotal mismatch: %" SYNPRINT " != %" SYNPRINT "\n" + , (synprint)ins2, (synprint)ins ); printf("%s\n", err ? "FAIL" : "PASS"); return err; } diff --git a/src/tests/sweeper.c b/src/tests/sweeper.c index 306a01e..3e84ff3 100644 --- a/src/tests/sweeper.c +++ b/src/tests/sweeper.c @@ -1,3 +1,4 @@ +#define SYN123_PORTABLE_API #include #include @@ -73,7 +74,10 @@ int main(int argc, char **argv) float *outbuf = malloc(sizeof(float)*maxoutblock); float *inbuf = malloc(sizeof(float)*maxinblock); if(!outbuf || !inbuf) + { + fprintf(stderr, "D'OOM!\n"); return -13; + } off_t intotal = 0; off_t outtotal = 0; @@ -87,18 +91,19 @@ int main(int argc, char **argv) break; } // Determine how many input samples to feed to get block output samples. - ssize_t inblock = syn123_resample_inexpect(syn, block); - if(inblock <= 0 || inblock > maxinblock) + int err; + size_t inblock = syn123_resample_in(syn, block, &err); + if(err || inblock <= 0 || inblock > maxinblock) { - fprintf(stderr, "bad inblock: %zd\n", inblock); + fprintf(stderr, "bad inblock: %zu (%i)\n", inblock, err); ret = -15; break; } - ssize_t outblock = syn123_resample_expect(syn, inblock); + size_t outblock = syn123_resample_out(syn, inblock, &err); fprintf(stderr, "in %zu out %zu\n", inblock, outblock); - if(outblock <= 0 || outblock > maxoutblock || outblock < block) + if(err || outblock <= 0 || outblock > maxoutblock || outblock < block) { - fprintf(stderr, "bad outblock: %zd\n", outblock); + fprintf(stderr, "bad outblock: %zu (%d)\n", outblock, err); ret = -16; break; } diff --git a/src/tests/text.c b/src/tests/text.c index a9e7554..eab070c 100644 --- a/src/tests/text.c +++ b/src/tests/text.c @@ -23,6 +23,21 @@ int string_good(mpg123_string *sb) return 0; } +int chomp_check(const char *in, const char *out) +{ + int ret = 1; + mpg123_string work; + mpg123_init_string(&work); + if( mpg123_set_string(&work, in) && mpg123_chomp_string(&work) + && mpg123_strlen(&work, 0) == strlen(out) + && !strcmp(work.p, out) ) + { + ret = 0; + } + mpg123_free_string(&work); + return ret; +} + int check_string(const char* name, enum mpg123_text_encoding enc, const unsigned char* source, size_t source_size) { int ret = 0; @@ -74,6 +89,16 @@ int main() mpg123_free_string(&trans_utf16le); + printf("Now some basic usage of chomp and strlen.\n"); + ret += chomp_check( + "This is the longest text evaah \n\n\r" + , "This is the longest text evaah " + ); + ret += chomp_check( + "Foo." + , "Foo." + ); + printf("\n%s\n", ret == 0 ? "PASS" : "FAIL"); return ret; diff --git a/src/version.h b/src/version.h new file mode 100644 index 0000000..66b491d --- /dev/null +++ b/src/version.h @@ -0,0 +1,30 @@ +#ifndef MPG123_VERSION_H +#define MPG123_VERSION_H +/* + version: mpg123 distribution version + + This is the main source of mpg123 distribution version information, parsed + by the build system for packaging. + + copyright 2023 by the mpg123 project, + free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org + + initially written by Thomas Orgis +*/ + +// only single spaces as separator to ease parsing by build scripts +#define MPG123_MAJOR 1 +#define MPG123_MINOR 32 +#define MPG123_PATCH 0 +// Don't get too wild with that to avoid confusing m4. No brackets. +// Also, it should fit well into a sane file name for the tarball. +#define MPG123_SUFFIX "" + +#define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c +#define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) + +#define MPG123_VERSION \ + MPG123_VERSION_CAT(MPG123_MAJOR, MPG123_MINOR, MPG123_PATCH) MPG123_SUFFIX + +#endif diff --git a/src/win32_net.c b/src/win32_net.c index 1689213..4965b72 100755 --- a/src/win32_net.c +++ b/src/win32_net.c @@ -1,3 +1,11 @@ +/* + win32_net: Windows-specific network code + + copyright 2009-2023 by the mpg123 project - free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org + initially written by Jonathan Yong (extracting out of httpget.c) +*/ + #include "win32_support.h" #include "mpg123app.h" #include "debug.h" @@ -89,11 +97,11 @@ static void win32_net_block(int sock) msgme_sock_err(ioctlsocket(ws.local_socket, FIONBIO, &mode)); } -ssize_t win32_net_read (int fildes, void *buf, size_t nbyte) +mpg123_ssize_t win32_net_read (int fildes, void *buf, size_t nbyte) { debug1("Attempting to read %"SIZE_P" bytes from network.", (size_p)nbyte); - ssize_t ret; - msgme_sock_err(ret = (ssize_t) recv(ws.local_socket, buf, nbyte, 0)); + mpg123_ssize_t ret; + msgme_sock_err(ret = (mpg123_ssize_t) recv(ws.local_socket, buf, nbyte, 0)); debug1("Read %"SSIZE_P" bytes from network.", (ssize_p)ret); return ret; @@ -111,12 +119,12 @@ static int get_sock_ch (int sock) } */ -ssize_t win32_net_write (int fildes, const void *buf, size_t nbyte) +mpg123_ssize_t win32_net_write (int fildes, const void *buf, size_t nbyte) { debug1("Attempting to write %"SIZE_P" bytes to network.", (size_p)nbyte); - ssize_t ret; - msgme_sock_err((ret = (ssize_t) send(ws.local_socket, buf, nbyte, 0))); - debug1("wrote %"SSIZE_P" bytes to network.", (ssize_t)ret); + mpg123_ssize_t ret; + msgme_sock_err((ret = (mpg123_ssize_t) send(ws.local_socket, buf, nbyte, 0))); + debug1("wrote %"SSIZE_P" bytes to network.", (ssize_p)ret); return ret; } @@ -170,7 +178,7 @@ static int win32_net_timeout_connect(int sockfd, const struct sockaddr *serv_add } else { - /*error1("error from select(): %s", strerror(errno));*/ + /*error1("error from select(): %s", INT123_strerror(errno));*/ debug("error from select():"); msgme1; return -1; @@ -178,7 +186,7 @@ static int win32_net_timeout_connect(int sockfd, const struct sockaddr *serv_add } else { - /*error1("connection failed: %s", strerror(errno));*/ + /*error1("connection failed: %s", INT123_strerror(errno));*/ debug("connection failed: "); msgme1; return err; @@ -188,7 +196,7 @@ static int win32_net_timeout_connect(int sockfd, const struct sockaddr *serv_add { if(connect(ws.local_socket, serv_addr, addrlen) == SOCKET_ERROR) { - /*error1("connection failed: %s", strerror(errno));*/ + /*error1("connection failed: %s", INT123_strerror(errno));*/ debug("connection failed"); msgme1; return -1; diff --git a/src/win32_support.c b/src/win32_support.c index af6dc0c..2e68ed5 100755 --- a/src/win32_support.c +++ b/src/win32_support.c @@ -37,7 +37,7 @@ int win32_cmdline_utf8(int * argc, char *** argv) for(argcounter = 0; argcounter < *argc; argcounter++) { - win32_wide_utf8(argv_wide[argcounter], &argvptr, NULL); + INT123_win32_wide_utf8(argv_wide[argcounter], &argvptr, NULL); (*argv)[argcounter] = argvptr; } return 0; @@ -93,7 +93,7 @@ VOID CALLBACK ReadComplete( return; } -ssize_t win32_fifo_read(void *buf, size_t nbyte) +mpg123_ssize_t win32_fifo_read(void *buf, size_t nbyte) { int check; DWORD readbuff; @@ -166,7 +166,7 @@ int win32_fifo_mkfifo(const char *path) win32_fifo_close(); #ifdef WANT_WIN32_UNICODE wchar_t *str; - if(win32_utf8_wide(path,&str,NULL) == 0) + if(INT123_win32_utf8_wide(path,&str,NULL) == 0) { fprintf(stderr,"Cannot get FIFO name, likely out of memory\n"); return -1; diff --git a/src/win32_support.h b/src/win32_support.h index 498d7e6..8153a85 100755 --- a/src/win32_support.h +++ b/src/win32_support.h @@ -51,7 +51,7 @@ int win32_net_open_connection(mpg123_string *host, mpg123_string *port); * @param[in] nbyte bytes to read. * @return bytes read successfully from socket */ -ssize_t win32_net_read (int fildes, void *buf, size_t nbyte); +mpg123_ssize_t win32_net_read (int fildes, void *buf, size_t nbyte); /** * Writes to network socket @@ -60,7 +60,7 @@ ssize_t win32_net_read (int fildes, void *buf, size_t nbyte); * @param[in] nbyte bytes to write. * @return bytes written successfully to socket */ -ssize_t win32_net_write (int fildes, const void *buf, size_t nbyte); +mpg123_ssize_t win32_net_write (int fildes, const void *buf, size_t nbyte); /** * Writes a whole mpg123_string to the network socket @@ -140,7 +140,7 @@ DWORD win32_fifo_read_peek(struct timeval *tv); * @param[in] nbyte Number of bytes to read up to. * @return Number of bytes actually read. */ -ssize_t win32_fifo_read(void *buf, size_t nbyte); +mpg123_ssize_t win32_fifo_read(void *buf, size_t nbyte); #endif /* #ifdef WANT_WIN32_FIFO */ #endif /* HAVE_WINDOWS_H */ diff --git a/windows-builds.sh b/windows-builds.sh index 535bd7c..2c27954 100755 --- a/windows-builds.sh +++ b/windows-builds.sh @@ -58,8 +58,13 @@ txt="README COPYING NEWS" opts="LDFLAGS=-static-libgcc" #opts="--with-audio=win32 --disable-modules" -# Get the version for the build from configure.ac . -version=`sed -n 's/^AC_INIT([^,]*, \[\([^,]*\)\], .*$/\1/p' < configure.ac` +# Get the version for the build from version.h. +major=$(grep '#define MPG123_MAJOR' src/version.h | cut -f 3 -d ' ') +minor=$(grep '#define MPG123_MINOR' src/version.h | cut -f 3 -d ' ') +patch=$(grep '#define MPG123_PATCH' src/version.h | cut -f 3 -d ' ') +suffix=$(grep '#define MPG123_SUFFIX' src/version.h | cut -f 2 -d '"') +version="$major.$minor.$patch$suffix" + echo "Building binaries for version $version" prepare_dir()