From 04000f00b443808e2e90783845aaf419dc7d60a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 21:22:19 +0100 Subject: rewrite d/watch for github --- debian/watch | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/debian/watch b/debian/watch index 74e6e7b..00bf5ff 100644 --- a/debian/watch +++ b/debian/watch @@ -1,2 +1,14 @@ -version=3 -http://sf.net/uriparser/uriparser-(.*)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) +version=4 +#http://sf.net/uriparser/uriparser-(.*)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) +#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ +# https://github.com/uriparser/uriparser/tags (\d\S+)\.tar\.gz + +#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ +# https://github.com/uriparser/uriparser/tags .*/?(\d{1}\.\d.\d)\.tar\.gz +https://github.com/uriparser/uriparser/releases /uriparser/uriparser/archive/(.+)\.tar\.gz + +#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/-$1\.tar\.gz/ \ +# https://github.com///tags .*/?(\d{1}\.\d.\d)\.tar\.gz + +#opts=filenamemangle=s/.+\/?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ +# https://github.com/uriparser/uriparser/tags .*/?(\d\S+)\.tar\.gz -- cgit v1.2.3 From 0ca227c7ff3be80a64807df27ffe7066cf447e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 22:10:36 +0100 Subject: rewrite d/watch for github --- debian/watch | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/debian/watch b/debian/watch index 00bf5ff..5641bc5 100644 --- a/debian/watch +++ b/debian/watch @@ -1,14 +1,4 @@ version=4 -#http://sf.net/uriparser/uriparser-(.*)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) -#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ -# https://github.com/uriparser/uriparser/tags (\d\S+)\.tar\.gz - -#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ -# https://github.com/uriparser/uriparser/tags .*/?(\d{1}\.\d.\d)\.tar\.gz -https://github.com/uriparser/uriparser/releases /uriparser/uriparser/archive/(.+)\.tar\.gz - -#opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/-$1\.tar\.gz/ \ -# https://github.com///tags .*/?(\d{1}\.\d.\d)\.tar\.gz - -#opts=filenamemangle=s/.+\/?(\d\S+)\.tar\.gz/uriparser-$1\.tar\.gz/ \ -# https://github.com/uriparser/uriparser/tags .*/?(\d\S+)\.tar\.gz +opts=uversionmangle=s/_/./g;s/\.(rc\d*)$/~$1/ \ + https://github.com/uriparser/uriparser/releases \ + .*[^n]/(?:|v|version-|version|release-|r|REL_|rel-|uriparser(?:_|-))(\d[^\s/]*)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz) -- cgit v1.2.3 From 6d05f3e01a26fa416c9d0150163db20abac4b4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 22:11:05 +0100 Subject: New upstream version 0.8.5 --- AUTHORS | 2 +- COPYING | 18 +- ChangeLog | 72 ++++-- Makefile.am | 4 +- Makefile.in | 16 +- THANKS | 1 + aclocal.m4 | 44 ++-- build-aux/compile | 9 +- build-aux/config.guess | 174 ++++++++------ build-aux/config.sub | 72 ++++-- build-aux/depcomp | 457 ++++++++++++++++++++++--------------- build-aux/install-sh | 376 ++++++++++++++---------------- build-aux/ltmain.sh | 77 +++++-- build-aux/missing | 416 ++++++++++++--------------------- build-aux/test-driver | 6 +- configure | 20 +- configure.ac | 2 +- doc/Doxyfile.in | 4 +- doc/Mainpage | 343 ---------------------------- doc/Mainpage.txt | 343 ++++++++++++++++++++++++++++ doc/Makefile.am | 4 +- doc/Makefile.in | 8 +- doc/release.sh.in | 1 - include/uriparser/Uri.h | 10 +- include/uriparser/UriBase.h | 4 +- include/uriparser/UriDefsAnsi.h | 2 +- include/uriparser/UriDefsConfig.h | 4 +- include/uriparser/UriDefsUnicode.h | 2 +- include/uriparser/UriIp4.h | 2 +- liburiparser.pc.in | 2 +- src/UriCommon.c | 2 +- src/UriCommon.h | 2 +- src/UriCompare.c | 2 +- src/UriEscape.c | 2 +- src/UriFile.c | 4 +- src/UriIp4.c | 2 +- src/UriIp4Base.c | 2 +- src/UriIp4Base.h | 2 +- src/UriNormalize.c | 4 +- src/UriNormalizeBase.c | 2 +- src/UriNormalizeBase.h | 2 +- src/UriParse.c | 10 +- src/UriParseBase.c | 2 +- src/UriParseBase.h | 2 +- src/UriQuery.c | 2 +- src/UriRecompose.c | 2 +- src/UriResolve.c | 6 +- src/UriShorten.c | 4 +- test/FourSuite.cpp | 2 +- test/FourSuite.h | 2 +- test/VersionSuite.cpp | 2 +- test/VersionSuite.h | 2 +- test/test.cpp | 23 +- tool/uriparse.c | 11 +- win32/MinGW/Makefile | 2 +- 55 files changed, 1360 insertions(+), 1233 deletions(-) delete mode 100644 doc/Mainpage create mode 100644 doc/Mainpage.txt diff --git a/AUTHORS b/AUTHORS index f920203..5c59de2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1,2 @@ Weijia Song -Sebastian Pipping +Sebastian Pipping diff --git a/COPYING b/COPYING index f7a735f..755e23a 100644 --- a/COPYING +++ b/COPYING @@ -1,13 +1,13 @@ -uriparser - RFC 3986 URI parsing library - -Copyright (C) 2007, Weijia Song -Copyright (C) 2007, Sebastian Pipping -All rights reserved. - +uriparser - RFC 3986 URI parsing library + +Copyright (C) 2007, Weijia Song +Copyright (C) 2007, Sebastian Pipping +All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions -are met: - +are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. @@ -21,7 +21,7 @@ are met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS diff --git a/ChangeLog b/ChangeLog index 74052a0..08ee3ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2018-02-07 -- 0.8.5 + + * Changed: The uriparser project has moved from SourceForge to GitHub: + Code + issue tracker: https://github.com/uriparser/uriparser + New website: https://uriparser.github.io/ + Please update any links of yours, accordingly. Thank you! + * Fixed: Memleak in out-of-memory clean-up code + of URI normalization, related to SF.net bug #28. + Thanks to Chris Hills for the report! + * Fixed: Fix compilation of uriparse(1) on FreeBSD + Thanks to Ed Schouten for the patch! + * Fixed: Fix C90 compilation errors + Thanks to Joel Cunningham for the patches! + * Fixed: Space requirements documented for uriWindowsFilenameToUriStringA + given URI "file://server1/file1.txt" (SF.net bug #31) + Thanks to threedyd for the report! + * Fixed: Compiler warnings + Thanks to Joel Cunningham for the patches! + * Fixed: Stop exporting internal function RemoveBaseUriImpl + Thanks to Joel Cunningham for the report! + * Fixed: API documentation front page no longer empty with Doxygen 1.8.13 + * Fixed: "make -C doc install" fixed for lack of .map files + * Improved: Communicate that absolutePath is always URI_FALSE for URIs + with a host in uriparse CLI tool output and Uri.h header + (GitHub #2, SF.net #30) + * Soname: 1:21:0 + 2015-10-12 -- 0.8.4 * Fixed: Stack overflow on parsing malformed IPv6 addresses with @@ -10,37 +37,38 @@ length zero as equal, by mistake. Thanks to Robert Kausch and his Coverity report. * Fixed: Use-after-free in out-of-memory code of uriMakeOwner. - Thanks to Chris Hills and his Klocwork-based report (bug #28) + Thanks to Chris Hills and his Klocwork-based report (SF.net bug #28) * Soname: 1:19:0 2015-04-27 -- 0.8.2 - * Fixed: Broken conversion from/to Windows network shares (bug #21) + * Fixed: Broken conversion from/to Windows network shares (SF.net bug #21) Thanks to Adam Gross and Dmitry Repkin! - * Fixed: Limit uriCompareRange return values to -1/0/1 (bug #24) + * Fixed: Limit uriCompareRange return values to -1/0/1 (SF.net bug #24) As a side effect, this fixes the test suite for AArch64. Thanks to Marcin Juszkiewicz for the patch! * Fixed: MinGW Makefile: - LIB_DIR fixed from ../../lib leftover to ../../src (bug #27) + LIB_DIR fixed from ../../lib leftover to ../../src (SF.net bug #27) Thanks to Dmytro Zagashev for the report! - * Fixed: Add missing NULL checks to UriStringToFilename (bug #25) + * Fixed: Add missing NULL checks to UriStringToFilename (SF.net bug #25) Thanks to Jerome Custodio for the report! * Changed: Leave inlining decisions to GCC * Soname: 1:18:0 2014-10-20 -- 0.8.1 - * Fixed: Sync URI_VER_* preprocessor defines (were at 0.7.6, bug #23) + * Fixed: Sync URI_VER_* preprocessor defines (were at 0.7.6, SF.net bug #23) * Fixed: Bug in internal function that may flip uriEqualsUri results around * Added: Function uriAddBaseUriEx allowing to resolve URIs with a scheme identical to that of the base URI to resolve against as if the URI to resolve had no scheme specified, when flag - URI_RESOLVE_IDENTICAL_SCHEME_COMPAT is specified (feature request #4) + URI_RESOLVE_IDENTICAL_SCHEME_COMPAT is specified + (SF.net feature request #4) * Soname: 1:17:0 2014-07-12 -- 0.8.0.1 - * Fixed: ISO C90 warnings (bug #20) + * Fixed: ISO C90 warnings (SF.net bug #20) * Changed: No longer ship RFC documents (to make things easier for Debian) * Soname: 1:16:0 @@ -55,32 +83,32 @@ Now the absolutePath flag is set to URI_FALSE and an empty segment is added as necessary * Fixed: .errorCode could end up unset, previously - Thanks to Radu Hociung for the patch! (bug #16) + Thanks to Radu Hociung for the patch! (SF.net bug #16) * Fixed: Resolve use of non-POSIX "sed -r" used when building - documentation (bug #18) + documentation (SF.net bug #18) Thanks to Ryan Schmidt for reporting! * Fixed: Build DLL with -no-undefined on Windows - Thanks to Michel Zou for the patch! (bug #19) + Thanks to Michel Zou for the patch! (SF.net bug #19) * Added: Command line tool "uriparse" - Thanks to Radu Hociung for coding! (feature request #3) + Thanks to Radu Hociung for coding! (SF.net feature request #3) * Soname: 1:15:0 2013-08-24 -- 0.7.9 * Fixed: Error position ended up as NULL for some syntax errors. - Thanks to Daniel Solano Gómez for the patch! (bug #14) + Thanks to Daniel Solano Gómez for the patch! (SF.net bug #14) * Soname: 1:14:0 2013-05-13 -- 0.7.8 - * Fixed: Fix dissection of query string "q=hello&x=&y=" (bug #12) + * Fixed: Fix dissection of query string "q=hello&x=&y=" (SF.net bug #12) Thanks to Marc Novakowski for reporting! * Soname: 1:13:0 2012-04-05 -- 0.7.7 * Fixed: Fix rejection of some valid characters for userinfo - section, e.g. "http://%2Fuser:%2F21@host/" (bug #11) + section, e.g. "http://%2Fuser:%2F21@host/" (SF.net bug #11) * Fixed: Fix rejection of valid double colon in userinfo section, e.g. "http://::@host/" * Soname: 1:12:0 @@ -98,7 +126,7 @@ be included by statements like #include . Thanks to Philip de Nier for reporting! * Fixed: Compilation in context of Eclipse + Cygwin + wchar_t - (bug #10) + (SF.net bug #10) Thanks to Gary Mazzaferro for reporting! * Fixed: Selection of supported character widths at build time: or or both @@ -124,11 +152,11 @@ 2008-12-23 -- 0.7.4 * Fixed: Null pointer de-referencing when dissecting query - strings starting with "&" right after "?" (bug #7). + strings starting with "&" right after "?" (SF.net bug #7). Thanks to Harvey Vrsalovic for reporting! - * Fixed: Memory leak in uriFreeQueryList function (bug #6) + * Fixed: Memory leak in uriFreeQueryList function (SF.net bug #6) Thanks to Daniel Chapiesky for reporting! - * Fixed: Memory leak in uriNormalizeSyntax(Ex) functions (bug #6) + * Fixed: Memory leak in uriNormalizeSyntax(Ex) functions (SF.net bug #6) Thanks to Daniel Chapiesky for reporting! * Improved: Nested configure hacks resolved * Soname: 1:9:0 @@ -139,7 +167,7 @@ Thanks to Sezai Tekin for reporting! * Fixed: uriparser now builds on Cygwin * Fixed: Now shipping gnulib's config.guess from HEAD - which is suitable for Haiku (bug #5) + which is suitable for Haiku (SF.net bug #5) * Changed: swprintf requirement resolved * Changed: Build system changes: - configure option --enable-doc added @@ -165,11 +193,11 @@ 2008-04-27 -- 0.7.1 * Fixed: Bogus syntax error when parsing URIs with port-like - passwords, e.g. "http://user:21@host/" (bug #1) + passwords, e.g. "http://user:21@host/" (SF.net bug #1) Thanks to Friedrich Delgado Friedrichs for reporting! * Fixed: Parser did not handle trailing slashes correctly in some cases, which also made the structures produced from parsing "http://e.com/" - and "http://e.com" indistinguishable. (bug #2) + and "http://e.com" indistinguishable. (SF.net bug #2) Thanks to Edward Z. Yang for reporting! 2008-04-04 -- 0.7.0 diff --git a/Makefile.am b/Makefile.am index 1a41102..7ef28f5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -34,7 +34,7 @@ pkginclude_HEADERS = \ include/uriparser/UriIp4.h -liburiparser_la_LDFLAGS = -version-info 1:20:0 +liburiparser_la_LDFLAGS = -version-info 1:21:0 if WIN32 liburiparser_la_LDFLAGS += -no-undefined endif @@ -78,7 +78,7 @@ endif EXTRA_DIST = \ doc/Doxyfile.in \ - doc/Mainpage \ + doc/Mainpage.txt \ doc/Makefile.am \ doc/Makefile.in \ doc/preprocess.sh \ diff --git a/Makefile.in b/Makefile.in index 587f3cd..b20ac8c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -655,7 +655,7 @@ pkginclude_HEADERS = \ include/uriparser/UriDefsUnicode.h \ include/uriparser/UriIp4.h -liburiparser_la_LDFLAGS = -version-info 1:20:0 $(am__append_1) +liburiparser_la_LDFLAGS = -version-info 1:21:0 $(am__append_1) liburiparser_la_SOURCES = \ src/UriCommon.c \ src/UriCommon.h \ @@ -688,7 +688,7 @@ liburiparser_la_SOURCES = \ EXTRA_DIST = \ doc/Doxyfile.in \ - doc/Mainpage \ + doc/Mainpage.txt \ doc/Makefile.am \ doc/Makefile.in \ doc/preprocess.sh \ @@ -1385,7 +1385,7 @@ distdir: $(DISTFILES) ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 @@ -1410,7 +1410,7 @@ dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip @@ -1427,7 +1427,7 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -1437,7 +1437,7 @@ distcheck: dist *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff --git a/THANKS b/THANKS index 79c61f8..4dc0a5c 100644 --- a/THANKS +++ b/THANKS @@ -19,6 +19,7 @@ Friedrich Delgado Friedrichs Gary Mazzaferro Harvey Vrsalovic Jerome Custodio +Joel Cunningham Juan Pablo González Tognarelli Marc Novakowski Marcin Juszkiewicz diff --git a/aclocal.m4 b/aclocal.m4 index df157e5..b566ff0 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ 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'.])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' 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.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,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.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -408,7 +408,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -605,7 +605,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-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -626,7 +626,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -647,7 +647,7 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -697,7 +697,7 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,7 +736,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -765,7 +765,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -812,7 +812,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -831,7 +831,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -912,7 +912,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -972,7 +972,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1000,7 +1000,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1019,7 +1019,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 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-aux/compile b/build-aux/compile index a85b723..2ab71e4 100755 --- a/build-aux/compile +++ b/build-aux/compile @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -255,7 +255,8 @@ EOF echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -342,6 +343,6 @@ exit $ret # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/config.guess b/build-aux/config.guess index 94fcdfe..83e1e95 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2014-03-23' +timestamp='2017-01-01' # 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 @@ -24,12 +24,12 @@ timestamp='2014-03-23' # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2017 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." @@ -168,19 +168,29 @@ 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=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + 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=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + 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 @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + 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 [ "$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 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -579,8 +603,9 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -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} fi @@ -617,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -662,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -679,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -789,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -878,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + 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 @@ -901,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -932,6 +957,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -944,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -969,6 +1000,9 @@ EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; @@ -1001,6 +1035,9 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1031,7 +1068,7 @@ EOF X86_64_ABI=x32 fi fi - echo x86_64-unknown-linux-gnu${X86_64_ABI} + echo ${UNAME_MACHINE}-pc-linux-${LIBC}${X86_64_ABI} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1110,7 +1147,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1259,6 +1296,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1272,9 +1312,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; 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) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1296,7 +1336,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1327,7 +1367,7 @@ EOF # "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" @@ -1369,7 +1409,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1380,23 +1420,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/build-aux/config.sub b/build-aux/config.sub index 3f5d45d..1ecabe4 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2014-07-28' +timestamp='2017-01-01' # 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 @@ -25,7 +25,7 @@ timestamp='2014-07-28' # of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +33,7 @@ timestamp='2014-07-28' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2014-07-28' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2017 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." @@ -117,8 +116,8 @@ 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* | \ - kopensolaris*-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/'` @@ -255,12 +254,13 @@ case $basic_machine in | 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 | dvp \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ @@ -301,10 +301,12 @@ case $basic_machine in | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | 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[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | 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 \ @@ -312,6 +314,7 @@ case $basic_machine in | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) @@ -326,6 +329,9 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none @@ -371,12 +377,13 @@ case $basic_machine in | 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-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -422,13 +429,15 @@ case $basic_machine in | 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?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -436,6 +445,7 @@ case $basic_machine in | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ + | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -512,6 +522,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -632,6 +645,14 @@ case $basic_machine in 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 @@ -773,6 +794,9 @@ case $basic_machine in 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 @@ -1026,7 +1050,7 @@ case $basic_machine in ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) + ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) @@ -1036,7 +1060,7 @@ case $basic_machine in ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) + ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) @@ -1382,18 +1406,18 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1402,7 +1426,8 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1534,6 +1559,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) @@ -1629,6 +1656,9 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; + pru-*) + os=-elf + ;; *-be) os=-beos ;; diff --git a/build-aux/depcomp b/build-aux/depcomp index 25a39e6..b39f98f 100755 --- a/build-aux/depcomp +++ b/build-aux/depcomp @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 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 @@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -57,11 +56,65 @@ EOF ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + # A tabulation character. tab=' ' # A newline character. nl=' ' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 @@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -86,32 +142,32 @@ if test "$depmode" = hp; then fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 fi if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -134,8 +190,7 @@ gcc3) done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -143,13 +198,17 @@ gcc3) ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -157,15 +216,14 @@ gcc) fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. @@ -174,15 +232,15 @@ gcc) ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -200,8 +258,7 @@ sgi) "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -209,7 +266,6 @@ sgi) if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in @@ -217,19 +273,15 @@ sgi) # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; @@ -247,9 +299,8 @@ aix) # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -262,9 +313,7 @@ aix) "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -273,65 +322,113 @@ aix) do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -342,9 +439,8 @@ hp2) # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -355,8 +451,7 @@ hp2) "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -366,76 +461,61 @@ hp2) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -446,8 +526,7 @@ msvc7) "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -473,6 +552,7 @@ $ { G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -524,13 +604,14 @@ dashmstdout) # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -583,10 +664,12 @@ makedepend) # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -622,10 +705,10 @@ cpp) esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -657,15 +740,15 @@ msvisualcpp) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | @@ -703,6 +786,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/install-sh b/build-aux/install-sh index a9244eb..0360b79 100755 --- a/build-aux/install-sh +++ b/build-aux/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2016-01-11.22; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,25 +35,21 @@ scriptversion=2011-01-19.21; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -190,7 +186,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,11 +198,20 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -223,16 +228,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -240,7 +245,7 @@ fi for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -269,41 +274,15 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,74 @@ 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 - mkdir_mode=-m$mode - else - mkdir_mode= - 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. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # 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 + mkdir_mode=-m$mode + else + mkdir_mode= + 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. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +370,51 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (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 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (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 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +449,12 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +467,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -522,6 +496,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh index a48cb26..b2549ee 100644 --- a/build-aux/ltmain.sh +++ b/build-aux/ltmain.sh @@ -64,7 +64,7 @@ package_revision=2.4.6 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2015-01-20.17; # UTC +scriptversion=2015-10-04.22; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 @@ -1091,6 +1091,57 @@ func_relative_path () } +# func_quote ARG +# -------------- +# Aesthetically quote one ARG, store the result into $func_quote_result. Note +# that we keep attention to performance here (so far O(N) complexity as long as +# func_append is O(1)). +func_quote () +{ + $debug_cmd + + func_quote_result=$1 + + case $func_quote_result in + *[\\\`\"\$]*) + case $func_quote_result in + *[\[\*\?]*) + func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"` + return 0 + ;; + esac + + func_quote_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_result + do + case $1 in + quote) + func_append func_quote_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + IFS=$func_quote_old_IFS + done + ;; + *) ;; + esac +} + + # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. @@ -1107,12 +1158,8 @@ func_quote_for_eval () func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac + func_quote "$1" + _G_unquoted_arg=$func_quote_result if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else @@ -5258,7 +5305,8 @@ else if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + func_quote "$ECHO" + qECHO=$func_quote_result $ECHO "\ # A function that is used when there is no print builtin or printf. @@ -7272,12 +7320,14 @@ func_mode_link () # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -fuse-ld=* Linker select flags for GCC + # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -fuse-ld=*) + -specs=*|-fsanitize=*|-fuse-ld=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" @@ -10508,8 +10558,8 @@ EOF relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + func_quote "(cd `pwd`; $relink_command)" + relink_command=$func_quote_result fi # Only actually do things if not in dry run mode. @@ -10755,7 +10805,8 @@ EOF done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + func_quote "$relink_command" + relink_command=$func_quote_result if test yes = "$hardcode_automatic"; then relink_command= fi diff --git a/build-aux/missing b/build-aux/missing index 86a8fc3..c6e3795 100755 --- a/build-aux/missing +++ b/build-aux/missing @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.13; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -99,233 +70,146 @@ Send bug reports to ." ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" ;; -esac - -exit 0 + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/test-driver b/build-aux/test-driver index 8e575b0..0218a01 100755 --- a/build-aux/test-driver +++ b/build-aux/test-driver @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2013-07-13.22; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2017 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 @@ -143,6 +143,6 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/configure b/configure index e2e4bbc..1aeed5f 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for uriparser 0.8.4. +# Generated by GNU Autoconf 2.69 for uriparser 0.8.5. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='uriparser' PACKAGE_TARNAME='uriparser' -PACKAGE_VERSION='0.8.4' -PACKAGE_STRING='uriparser 0.8.4' +PACKAGE_VERSION='0.8.5' +PACKAGE_STRING='uriparser 0.8.5' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1346,7 +1346,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 uriparser 0.8.4 to adapt to many kinds of systems. +\`configure' configures uriparser 0.8.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1416,7 +1416,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of uriparser 0.8.4:";; + short | recursive ) echo "Configuration of uriparser 0.8.5:";; esac cat <<\_ACEOF @@ -1548,7 +1548,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -uriparser configure 0.8.4 +uriparser configure 0.8.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1947,7 +1947,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by uriparser $as_me 0.8.4, which was +It was created by uriparser $as_me 0.8.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2810,7 +2810,7 @@ fi # Define the identity of the package. PACKAGE='uriparser' - VERSION='0.8.4' + VERSION='0.8.5' cat >>confdefs.h <<_ACEOF @@ -16883,7 +16883,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by uriparser $as_me 0.8.4, which was +This file was extended by uriparser $as_me 0.8.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16949,7 +16949,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -uriparser config.status 0.8.4 +uriparser config.status 0.8.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fda2d5e..5385470 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.61) -AC_INIT([uriparser], [0.8.4]) +AC_INIT([uriparser], [0.8.5]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.10.1 foreign dist-zip dist-bzip2 no-dist-gzip subdir-objects]) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 0fe524f..dd0926f 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -2,7 +2,7 @@ # .qhp output GENERATE_QHP = yes -QHP_NAMESPACE = "net.sourceforge.uriparser" +QHP_NAMESPACE = "io.github.uriparser" QHP_VIRTUAL_FOLDER = "uriparser-@VERSION@" # .qch output @@ -280,7 +280,7 @@ WARN_FORMAT = "WARNING: $text ($line, $file)" ############################################################### -INPUT = @ac_abs_confdir@/include @ac_abs_confdir@/doc/Mainpage +INPUT = @ac_abs_confdir@/include @ac_abs_confdir@/doc/Mainpage.txt # The INPUT tag is used to specify the files and/or directories that contain documented source files. You may enter file names like myfile.cpp or directories like /usr/src/myproject. Separate the files or directories with spaces. # # Note: If this tag is empty the current directory is searched. diff --git a/doc/Mainpage b/doc/Mainpage deleted file mode 100644 index 3a80e30..0000000 --- a/doc/Mainpage +++ /dev/null @@ -1,343 +0,0 @@ -/** - * @mainpage - * - * @section SEC_TOC Table of Contents - * - Introduction - * - Algorithms and Examples - * - Parsing URIs (from string to object) - * - Recomposing URIs (from object back to string) - * - Resolving References - * - Creating References - * - Filenames and URIs - * - Normalizing URIs - * - Working with query strings - * - Ansi and Unicode - * - Autoconf Check - * - * - * @section intro Introduction - * Welcome to the short uriparser integration tutorial. - * It is intended to answer upcoming questions and to shed light - * where function prototypes alone are not enough. - * Please drop me a line if you need further assistance and I will - * see what I can do for you. Good luck with uriparser! - * - * - * @subsection parsing Parsing URIs (from string to object) - * Parsing a URI with uriparser looks like this: - * - * @code - * UriParserStateA state; - * UriUriA uri; - * - * state.uri = &uri; - * if (uriParseUriA(&state, "file:///home/user/song.mp3") != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * uriFreeUriMembersA(&uri); - * ... - * } - * ... - * uriFreeUriMembersA(&uri); - * @endcode - * - * While the URI object (::UriUriA) holds information about the recogized - * parts of the given URI string, the parser state object (::UriParserStateA) - * keeps error code and position. This information does not belong to - * the URI itself, which is why there are two seperate objects. - * - * You can reuse parser state objects for parsing several URIs like this: - * - * @code - * UriParserStateA state; - * UriUriA uriOne; - * UriUriA uriTwo; - * - * state.uri = &uriOne; - * if (uriParseUriA(&state, "file:///home/user/one") != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * uriFreeUriMembersA(&uriOne); - * ... - * } - * ... - * state.uri = &uriTwo; - * if (uriParseUriA(&state, "file:///home/user/two") != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * uriFreeUriMembersA(&uriOne); - * uriFreeUriMembersA(&uriTwo); - * ... - * } - * ... - * uriFreeUriMembersA(&uriOne); - * uriFreeUriMembersA(&uriTwo); - * @endcode - * - * - * @subsection recomposition Recomposing URIs (from object back to string) - * According to RFC 3986 - * glueing parts of a URI together to form a string is called recomposition. - * Before we can recompose a URI object we have to know how much - * space the resulting string will take: - * - * @code - * UriUriA uri; - * char * uriString; - * int charsRequired; - * ... - * if (uriToStringCharsRequiredA(&uri, &charsRequired) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * charsRequired++; - * @endcode - * - * Now we can tell uriToStringA() to write the string to a given buffer: - * - * @code - * uriString = malloc(charsRequired * sizeof(char)); - * if (uriString == NULL) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * if (uriToStringA(uriString, &uri, charsRequired, NULL) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * @endcode - * - * @remarks - * Incrementing charsRequired by 1 is required since - * uriToStringCharsRequiredA() returns the length of the string - * as strlen() does, but uriToStringA() works with the number - * of maximum characters to be written including the - * zero-terminator. - * - * - * @subsection resolution Resolving References - * Reference Resolution - * is the process of turning a (relative) URI reference into an absolute URI by applying a base - * URI to it. In code it looks like this: - * - * @code - * UriUriA absoluteDest; - * UriUriA relativeSource; - * UriUriA absoluteBase; - * ... - * /COMMENT_HACK* relativeSource holds "../TWO" now *COMMENT_HACK/ - * /COMMENT_HACK* absoluteBase holds "file:///one/two/three" now *COMMENT_HACK/ - * if (uriAddBaseUriA(&absoluteDest, &relativeSource, &absoluteBase) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * uriFreeUriMembersA(&absoluteDest); - * ... - * } - * /COMMENT_HACK* absoluteDest holds "file:///one/TWO" now *COMMENT_HACK/ - * ... - * uriFreeUriMembersA(&absoluteDest); - * @endcode - * - * @remarks - * uriAddBaseUriA() does not normalize the resulting URI. - * Usually you might want to pass it through uriNormalizeSyntaxA() after. - * - * - * @subsection shortening Creating References - * Reference Creation is the inverse process of Reference Resolution: A common base URI - * is "substracted" from an absolute URI to make a (relative) reference. - * If the base URI is not common the remaining URI will still be absolute, i.e. will - * carry a scheme - * - * @code - * UriUriA dest; - * UriUriA absoluteSource; - * UriUriA absoluteBase; - * ... - * /COMMENT_HACK* absoluteSource holds "file:///one/TWO" now *COMMENT_HACK/ - * /COMMENT_HACK* absoluteBase holds "file:///one/two/three" now *COMMENT_HACK/ - * if (uriRemoveBaseUriA(&dest, &absoluteSource, &absoluteBase, URI_FALSE) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * uriFreeUriMembersA(&dest); - * ... - * } - * /COMMENT_HACK* dest holds "../TWO" now *COMMENT_HACK/ - * ... - * uriFreeUriMembersA(&dest); - * @endcode - * - * The fourth parameter is the domain root mode. With URI_FALSE as above this will produce - * URIs relative to the base URI. With URI_TRUE the resulting URI will be relative to the - * domain root instead, e.g. "/one/TWO" in this case. - * - * - * @subsection filenames Filenames and URIs - * Converting filenames to and from URIs works on strings directly, - * i.e. without creating an URI object. - * - * @code - * const char * const absFilename = "E:\\Documents and Settings"; - * const int bytesNeeded = 8 + 3 * strlen(absFilename) + 1; - * char * absUri = malloc(bytesNeeded * sizeof(char)); - * if (uriWindowsFilenameToUriStringA(absFilename, absUri) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * free(absUri); - * ... - * } - * /COMMENT_HACK* absUri is "file:///E:/Documents%20and%20Settings" now *COMMENT_HACK/ - * ... - * free(absUri); - * @endcode - * - * Conversion works .. - * - for relative or absolute values, - * - in both directions (filenames <--> URIs) and - * - with Unix and Windows filenames. - * - * All you have to do is to choose the right function for the task and allocate - * the required space (in characters) for the target buffer. - * Let me present you an overview: - * - * - Filename --> URI - * - uriUnixFilenameToUriStringA()\n - * Space required: [7 +] 3 * len(filename) + 1 - * - uriWindowsFilenameToUriStringA()\n - * Space required: [8 +] 3 * len(filename) + 1 - * - URI --> filename - * - uriUriStringToUnixFilenameA()\n - * Space required: len(uriString) + 1 [- 7] - * - uriUriStringToWindowsFilenameA()\n - * Space required: len(uriString) + 1 [- 8] - * - * - * @subsection normalization Normalizing URIs - * Sometimes we come accross unnecessarily long URIs like "http://example.org/one/two/../../one". - * The algorithm we can use to shorten this URI down to "http://example.org/one" is called - * Syntax-Based Normalization. - * Note that normalizing a URI does more than just "stripping dot segments". Please have a look at - * Section 6.2.2 of RFC 3986 - * for the full description. - * - * As we asked uriToStringCharsRequiredA() for the required space when converting - * a URI object back to a sring, we can ask uriNormalizeSyntaxMaskRequiredA() for - * the parts of a URI that require normalization and then pass this normalization - * mask to uriNormalizeSyntaxExA(): - * - * @code - * const unsigned int dirtyParts = uriNormalizeSyntaxMaskRequiredA(&uri); - * if (uriNormalizeSyntaxExA(&uri, dirtyParts) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * @endcode - * - * If you don't want to normalize all parts of the URI you can pass a custom - * mask as well: - * - * @code - * const unsigned int normMask = URI_NORMALIZE_SCHEME | URI_NORMALIZE_USER_INFO; - * if (uriNormalizeSyntaxExA(&uri, normMask) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * @endcode - * - * Please see ::UriNormalizationMaskEnum for the complete set of flags. - * - * On the other hand calling plain uriNormalizeSyntaxA() (without the "Ex") - * saves you thinking about single parts, as it queries uriNormalizeSyntaxMaskRequiredA() - * internally: - * - * @code - * if (uriNormalizeSyntaxA(&uri) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * @endcode - * - * - * @section querystrings Working with query strings - * RFC 3986 - * itself does not understand the query part of a URI as a list of key/value pairs. - * But HTML 2.0 does and defines a media type application/x-www-form-urlencoded - * in in section 8.2.1 - * of RFC 1866. - * uriparser allows you to dissect (or parse) a query string into unescaped key/value pairs - * and back. - * - * To dissect the query part of a just-parsed URI you could write code like this: - * - * @code - * UriUriA uri; - * UriQueryListA * queryList; - * int itemCount; - * ... - * if (uriDissectQueryMallocA(&queryList, &itemCount, uri.query.first, - * uri.query.afterLast) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * ... - * uriFreeQueryListA(queryList); - * @endcode - * - * @remarks - * - NULL in the value member means there was no '=' in the item text as with "?abc&def". - * - An empty string in the value member means there was '=' in the item as with "?abc=&def". - * - * - * To compose a query string from a query list you could write code like this: - * - * @code - * int charsRequired; - * int charsWritten; - * char * queryString; - * ... - * if (uriComposeQueryCharsRequiredA(queryList, &charsRequired) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * queryString = malloc((charsRequired + 1) * sizeof(char)); - * if (queryString == NULL) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * if (uriComposeQueryA(queryString, queryList, charsRequired + 1, &charsWritten) != URI_SUCCESS) { - * /COMMENT_HACK* Failure *COMMENT_HACK/ - * ... - * } - * ... - * free(queryString); - * @endcode - * - * - * @section chartypes Ansi and Unicode - * uriparser comes with two versions of every structure and function: - * one handling Ansi text (char *) and one working with Unicode text (wchar_t *), - * for instance - * - uriParseUriA() for Ansi and - * - uriParseUriW() for Unicode. - * - * This tutorial only shows the usage of the Ansi editions but - * their Unicode counterparts work in the very same way. - * - * - * @section autoconf Autoconf Check - * You can use the code below to make ./configure test for presence - * of uriparser 0.6.4 or later. - * - *
URIPARSER_MISSING="Please install uriparser 0.6.4 or later.
- *   On a Debian-based system enter 'sudo apt-get install liburiparser-dev'."
- *AC_CHECK_LIB(uriparser, uriParseUriA,, AC_MSG_ERROR(${URIPARSER_MISSING}))
- *AC_CHECK_HEADER(uriparser/Uri.h,, AC_MSG_ERROR(${URIPARSER_MISSING}))
- *
- *URIPARSER_TOO_OLD="uriparser 0.6.4 or later is required, your copy is too old."
- *AC_COMPILE_IFELSE([
- *\#include 
- *\#if (defined(URI_VER_MAJOR) && defined(URI_VER_MINOR) && defined(URI_VER_RELEASE) \\
- *&& ((URI_VER_MAJOR > 0) \\
- *|| ((URI_VER_MAJOR == 0) && (URI_VER_MINOR > 6)) \\
- *|| ((URI_VER_MAJOR == 0) && (URI_VER_MINOR == 6) && (URI_VER_RELEASE >= 4)) \\
- *))
- */* FINE */
- *\#else
- *\# error uriparser not recent enough
- *\#endif
- *],,AC_MSG_ERROR(${URIPARSER_TOO_OLD}))
- */ diff --git a/doc/Mainpage.txt b/doc/Mainpage.txt new file mode 100644 index 0000000..3a80e30 --- /dev/null +++ b/doc/Mainpage.txt @@ -0,0 +1,343 @@ +/** + * @mainpage + * + * @section SEC_TOC Table of Contents + * - Introduction + * - Algorithms and Examples + * - Parsing URIs (from string to object) + * - Recomposing URIs (from object back to string) + * - Resolving References + * - Creating References + * - Filenames and URIs + * - Normalizing URIs + * - Working with query strings + * - Ansi and Unicode + * - Autoconf Check + * + * + * @section intro Introduction + * Welcome to the short uriparser integration tutorial. + * It is intended to answer upcoming questions and to shed light + * where function prototypes alone are not enough. + * Please drop me a line if you need further assistance and I will + * see what I can do for you. Good luck with uriparser! + * + * + * @subsection parsing Parsing URIs (from string to object) + * Parsing a URI with uriparser looks like this: + * + * @code + * UriParserStateA state; + * UriUriA uri; + * + * state.uri = &uri; + * if (uriParseUriA(&state, "file:///home/user/song.mp3") != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * uriFreeUriMembersA(&uri); + * ... + * } + * ... + * uriFreeUriMembersA(&uri); + * @endcode + * + * While the URI object (::UriUriA) holds information about the recogized + * parts of the given URI string, the parser state object (::UriParserStateA) + * keeps error code and position. This information does not belong to + * the URI itself, which is why there are two seperate objects. + * + * You can reuse parser state objects for parsing several URIs like this: + * + * @code + * UriParserStateA state; + * UriUriA uriOne; + * UriUriA uriTwo; + * + * state.uri = &uriOne; + * if (uriParseUriA(&state, "file:///home/user/one") != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * uriFreeUriMembersA(&uriOne); + * ... + * } + * ... + * state.uri = &uriTwo; + * if (uriParseUriA(&state, "file:///home/user/two") != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * uriFreeUriMembersA(&uriOne); + * uriFreeUriMembersA(&uriTwo); + * ... + * } + * ... + * uriFreeUriMembersA(&uriOne); + * uriFreeUriMembersA(&uriTwo); + * @endcode + * + * + * @subsection recomposition Recomposing URIs (from object back to string) + * According to RFC 3986 + * glueing parts of a URI together to form a string is called recomposition. + * Before we can recompose a URI object we have to know how much + * space the resulting string will take: + * + * @code + * UriUriA uri; + * char * uriString; + * int charsRequired; + * ... + * if (uriToStringCharsRequiredA(&uri, &charsRequired) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * charsRequired++; + * @endcode + * + * Now we can tell uriToStringA() to write the string to a given buffer: + * + * @code + * uriString = malloc(charsRequired * sizeof(char)); + * if (uriString == NULL) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * if (uriToStringA(uriString, &uri, charsRequired, NULL) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * @endcode + * + * @remarks + * Incrementing charsRequired by 1 is required since + * uriToStringCharsRequiredA() returns the length of the string + * as strlen() does, but uriToStringA() works with the number + * of maximum characters to be written including the + * zero-terminator. + * + * + * @subsection resolution Resolving References + * Reference Resolution + * is the process of turning a (relative) URI reference into an absolute URI by applying a base + * URI to it. In code it looks like this: + * + * @code + * UriUriA absoluteDest; + * UriUriA relativeSource; + * UriUriA absoluteBase; + * ... + * /COMMENT_HACK* relativeSource holds "../TWO" now *COMMENT_HACK/ + * /COMMENT_HACK* absoluteBase holds "file:///one/two/three" now *COMMENT_HACK/ + * if (uriAddBaseUriA(&absoluteDest, &relativeSource, &absoluteBase) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * uriFreeUriMembersA(&absoluteDest); + * ... + * } + * /COMMENT_HACK* absoluteDest holds "file:///one/TWO" now *COMMENT_HACK/ + * ... + * uriFreeUriMembersA(&absoluteDest); + * @endcode + * + * @remarks + * uriAddBaseUriA() does not normalize the resulting URI. + * Usually you might want to pass it through uriNormalizeSyntaxA() after. + * + * + * @subsection shortening Creating References + * Reference Creation is the inverse process of Reference Resolution: A common base URI + * is "substracted" from an absolute URI to make a (relative) reference. + * If the base URI is not common the remaining URI will still be absolute, i.e. will + * carry a scheme + * + * @code + * UriUriA dest; + * UriUriA absoluteSource; + * UriUriA absoluteBase; + * ... + * /COMMENT_HACK* absoluteSource holds "file:///one/TWO" now *COMMENT_HACK/ + * /COMMENT_HACK* absoluteBase holds "file:///one/two/three" now *COMMENT_HACK/ + * if (uriRemoveBaseUriA(&dest, &absoluteSource, &absoluteBase, URI_FALSE) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * uriFreeUriMembersA(&dest); + * ... + * } + * /COMMENT_HACK* dest holds "../TWO" now *COMMENT_HACK/ + * ... + * uriFreeUriMembersA(&dest); + * @endcode + * + * The fourth parameter is the domain root mode. With URI_FALSE as above this will produce + * URIs relative to the base URI. With URI_TRUE the resulting URI will be relative to the + * domain root instead, e.g. "/one/TWO" in this case. + * + * + * @subsection filenames Filenames and URIs + * Converting filenames to and from URIs works on strings directly, + * i.e. without creating an URI object. + * + * @code + * const char * const absFilename = "E:\\Documents and Settings"; + * const int bytesNeeded = 8 + 3 * strlen(absFilename) + 1; + * char * absUri = malloc(bytesNeeded * sizeof(char)); + * if (uriWindowsFilenameToUriStringA(absFilename, absUri) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * free(absUri); + * ... + * } + * /COMMENT_HACK* absUri is "file:///E:/Documents%20and%20Settings" now *COMMENT_HACK/ + * ... + * free(absUri); + * @endcode + * + * Conversion works .. + * - for relative or absolute values, + * - in both directions (filenames <--> URIs) and + * - with Unix and Windows filenames. + * + * All you have to do is to choose the right function for the task and allocate + * the required space (in characters) for the target buffer. + * Let me present you an overview: + * + * - Filename --> URI + * - uriUnixFilenameToUriStringA()\n + * Space required: [7 +] 3 * len(filename) + 1 + * - uriWindowsFilenameToUriStringA()\n + * Space required: [8 +] 3 * len(filename) + 1 + * - URI --> filename + * - uriUriStringToUnixFilenameA()\n + * Space required: len(uriString) + 1 [- 7] + * - uriUriStringToWindowsFilenameA()\n + * Space required: len(uriString) + 1 [- 8] + * + * + * @subsection normalization Normalizing URIs + * Sometimes we come accross unnecessarily long URIs like "http://example.org/one/two/../../one". + * The algorithm we can use to shorten this URI down to "http://example.org/one" is called + * Syntax-Based Normalization. + * Note that normalizing a URI does more than just "stripping dot segments". Please have a look at + * Section 6.2.2 of RFC 3986 + * for the full description. + * + * As we asked uriToStringCharsRequiredA() for the required space when converting + * a URI object back to a sring, we can ask uriNormalizeSyntaxMaskRequiredA() for + * the parts of a URI that require normalization and then pass this normalization + * mask to uriNormalizeSyntaxExA(): + * + * @code + * const unsigned int dirtyParts = uriNormalizeSyntaxMaskRequiredA(&uri); + * if (uriNormalizeSyntaxExA(&uri, dirtyParts) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * @endcode + * + * If you don't want to normalize all parts of the URI you can pass a custom + * mask as well: + * + * @code + * const unsigned int normMask = URI_NORMALIZE_SCHEME | URI_NORMALIZE_USER_INFO; + * if (uriNormalizeSyntaxExA(&uri, normMask) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * @endcode + * + * Please see ::UriNormalizationMaskEnum for the complete set of flags. + * + * On the other hand calling plain uriNormalizeSyntaxA() (without the "Ex") + * saves you thinking about single parts, as it queries uriNormalizeSyntaxMaskRequiredA() + * internally: + * + * @code + * if (uriNormalizeSyntaxA(&uri) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * @endcode + * + * + * @section querystrings Working with query strings + * RFC 3986 + * itself does not understand the query part of a URI as a list of key/value pairs. + * But HTML 2.0 does and defines a media type application/x-www-form-urlencoded + * in in section 8.2.1 + * of RFC 1866. + * uriparser allows you to dissect (or parse) a query string into unescaped key/value pairs + * and back. + * + * To dissect the query part of a just-parsed URI you could write code like this: + * + * @code + * UriUriA uri; + * UriQueryListA * queryList; + * int itemCount; + * ... + * if (uriDissectQueryMallocA(&queryList, &itemCount, uri.query.first, + * uri.query.afterLast) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * ... + * uriFreeQueryListA(queryList); + * @endcode + * + * @remarks + * - NULL in the value member means there was no '=' in the item text as with "?abc&def". + * - An empty string in the value member means there was '=' in the item as with "?abc=&def". + * + * + * To compose a query string from a query list you could write code like this: + * + * @code + * int charsRequired; + * int charsWritten; + * char * queryString; + * ... + * if (uriComposeQueryCharsRequiredA(queryList, &charsRequired) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * queryString = malloc((charsRequired + 1) * sizeof(char)); + * if (queryString == NULL) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * if (uriComposeQueryA(queryString, queryList, charsRequired + 1, &charsWritten) != URI_SUCCESS) { + * /COMMENT_HACK* Failure *COMMENT_HACK/ + * ... + * } + * ... + * free(queryString); + * @endcode + * + * + * @section chartypes Ansi and Unicode + * uriparser comes with two versions of every structure and function: + * one handling Ansi text (char *) and one working with Unicode text (wchar_t *), + * for instance + * - uriParseUriA() for Ansi and + * - uriParseUriW() for Unicode. + * + * This tutorial only shows the usage of the Ansi editions but + * their Unicode counterparts work in the very same way. + * + * + * @section autoconf Autoconf Check + * You can use the code below to make ./configure test for presence + * of uriparser 0.6.4 or later. + * + *
URIPARSER_MISSING="Please install uriparser 0.6.4 or later.
+ *   On a Debian-based system enter 'sudo apt-get install liburiparser-dev'."
+ *AC_CHECK_LIB(uriparser, uriParseUriA,, AC_MSG_ERROR(${URIPARSER_MISSING}))
+ *AC_CHECK_HEADER(uriparser/Uri.h,, AC_MSG_ERROR(${URIPARSER_MISSING}))
+ *
+ *URIPARSER_TOO_OLD="uriparser 0.6.4 or later is required, your copy is too old."
+ *AC_COMPILE_IFELSE([
+ *\#include 
+ *\#if (defined(URI_VER_MAJOR) && defined(URI_VER_MINOR) && defined(URI_VER_RELEASE) \\
+ *&& ((URI_VER_MAJOR > 0) \\
+ *|| ((URI_VER_MAJOR == 0) && (URI_VER_MINOR > 6)) \\
+ *|| ((URI_VER_MAJOR == 0) && (URI_VER_MINOR == 6) && (URI_VER_RELEASE >= 4)) \\
+ *))
+ */* FINE */
+ *\#else
+ *\# error uriparser not recent enough
+ *\#endif
+ *],,AC_MSG_ERROR(${URIPARSER_TOO_OLD}))
+ */ diff --git a/doc/Makefile.am b/doc/Makefile.am index fb9e035..012f0bc 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -4,7 +4,7 @@ all-local: html/index.html html/index.html: $(srcdir)/../include/uriparser/*.h \ $(srcdir)/../src/*.c \ $(srcdir)/../src/*.h \ - $(srcdir)/Mainpage + $(srcdir)/Mainpage.txt rm -Rf "$(builddir)/html" doxygen Doxyfile touch html/index.html @@ -24,7 +24,7 @@ distclean-local: ## Install doc files install-data-local: $(MKDIR_P) "$(DESTDIR)$(docdir)/html/search" ## Didn't work with installdirs-local - $(INSTALL_DATA) html/*.css html/*.html html/*.js html/*.map html/*.md5 html/*.png "$(DESTDIR)$(docdir)/html/" + $(INSTALL_DATA) html/*.css html/*.html html/*.js html/*.md5 html/*.png "$(DESTDIR)$(docdir)/html/" $(INSTALL_DATA) html/search/* "$(DESTDIR)$(docdir)/html/search/" -$(INSTALL_DATA) *.qch "$(DESTDIR)$(docdir)/" diff --git a/doc/Makefile.in b/doc/Makefile.in index d6c8bd7..b8bbff5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -454,7 +454,7 @@ all-local: html/index.html html/index.html: $(srcdir)/../include/uriparser/*.h \ $(srcdir)/../src/*.c \ $(srcdir)/../src/*.h \ - $(srcdir)/Mainpage + $(srcdir)/Mainpage.txt rm -Rf "$(builddir)/html" doxygen Doxyfile touch html/index.html @@ -468,7 +468,7 @@ distclean-local: install-data-local: $(MKDIR_P) "$(DESTDIR)$(docdir)/html/search" ## Didn't work with installdirs-local - $(INSTALL_DATA) html/*.css html/*.html html/*.js html/*.map html/*.md5 html/*.png "$(DESTDIR)$(docdir)/html/" + $(INSTALL_DATA) html/*.css html/*.html html/*.js html/*.md5 html/*.png "$(DESTDIR)$(docdir)/html/" $(INSTALL_DATA) html/search/* "$(DESTDIR)$(docdir)/html/search/" -$(INSTALL_DATA) *.qch "$(DESTDIR)$(docdir)/" diff --git a/doc/release.sh.in b/doc/release.sh.in index d970773..70a52b4 100755 --- a/doc/release.sh.in +++ b/doc/release.sh.in @@ -17,7 +17,6 @@ cp \ html/*.css \ html/*.html \ html/*.js \ - html/*.map \ html/*.md5 \ html/*.png \ \ diff --git a/include/uriparser/Uri.h b/include/uriparser/Uri.h index 4a18580..a3f7914 100644 --- a/include/uriparser/Uri.h +++ b/include/uriparser/Uri.h @@ -1,8 +1,9 @@ -/* +/* f9ca23a99fc1c8ff610e2bdc0bff3c4bb4d883ccbff5851fe7a1398f9b6aca57 (0.8.5+) + * * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -157,7 +158,8 @@ typedef struct URI_TYPE(UriStruct) { URI_TYPE(PathSegment) * pathTail; /**< Tail of the list behind pathHead */ URI_TYPE(TextRange) query; /**< Query without leading "?" */ URI_TYPE(TextRange) fragment; /**< Query without leading "#" */ - UriBool absolutePath; /**< Absolute path flag, distincting "a" and "/a" */ + UriBool absolutePath; /**< Absolute path flag, distincting "a" and "/a"; + always URI_FALSE for URIs with host */ UriBool owner; /**< Memory owner flag */ void * reserved; /**< Reserved to the parser */ @@ -567,7 +569,7 @@ int URI_FUNC(UriStringToUnixFilename)(const URI_CHAR * uriString, /** * Extracts a Windows filename from a %URI string. - * The destination buffer must be large enough to hold len(uriString) + 1 - 8 + * The destination buffer must be large enough to hold len(uriString) + 1 - 5 * characters in case of an absolute %URI or len(uriString) + 1 in case * of a relative %URI. * diff --git a/include/uriparser/UriBase.h b/include/uriparser/UriBase.h index bc63b05..45ba5ab 100644 --- a/include/uriparser/UriBase.h +++ b/include/uriparser/UriBase.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -55,7 +55,7 @@ /* Version */ #define URI_VER_MAJOR 0 #define URI_VER_MINOR 8 -#define URI_VER_RELEASE 4 +#define URI_VER_RELEASE 5 #define URI_VER_SUFFIX_ANSI "" #define URI_VER_SUFFIX_UNICODE URI_ANSI_TO_UNICODE(URI_VER_SUFFIX_ANSI) diff --git a/include/uriparser/UriDefsAnsi.h b/include/uriparser/UriDefsAnsi.h index deaefaa..d6dbcad 100644 --- a/include/uriparser/UriDefsAnsi.h +++ b/include/uriparser/UriDefsAnsi.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/include/uriparser/UriDefsConfig.h b/include/uriparser/UriDefsConfig.h index d87ccb6..9f7ac65 100644 --- a/include/uriparser/UriDefsConfig.h +++ b/include/uriparser/UriDefsConfig.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -88,7 +88,7 @@ /* http://predef.sourceforge.net/precomp.html#sec32 */ /* http://msdn2.microsoft.com/en-us/library/ms882281.aspx */ # define URI_INLINE __forceinline -#elif (__STDC_VERSION__ >= 199901L) +#elif (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99, "inline" is a keyword */ # define URI_INLINE inline #else diff --git a/include/uriparser/UriDefsUnicode.h b/include/uriparser/UriDefsUnicode.h index fa4befc..8bb8bc2 100644 --- a/include/uriparser/UriDefsUnicode.h +++ b/include/uriparser/UriDefsUnicode.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/include/uriparser/UriIp4.h b/include/uriparser/UriIp4.h index 885a35c..9251c49 100644 --- a/include/uriparser/UriIp4.h +++ b/include/uriparser/UriIp4.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/liburiparser.pc.in b/liburiparser.pc.in index ac6292d..40fde70 100644 --- a/liburiparser.pc.in +++ b/liburiparser.pc.in @@ -7,6 +7,6 @@ Name: liburiparser Description: URI parsing and handling library Version: @VERSION@ -URL: http://uriparser.sourceforge.net/ +URL: https://uriparser.github.io/ Libs: -L${libdir} -luriparser Cflags: -I${includedir} diff --git a/src/UriCommon.c b/src/UriCommon.c index 37d6b39..571d6d4 100644 --- a/src/UriCommon.c +++ b/src/UriCommon.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriCommon.h b/src/UriCommon.h index f6bc2cc..b062fcc 100644 --- a/src/UriCommon.h +++ b/src/UriCommon.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriCompare.c b/src/UriCompare.c index 6896f64..35f5a13 100644 --- a/src/UriCompare.c +++ b/src/UriCompare.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriEscape.c b/src/UriEscape.c index 79ee3a6..17f8bad 100644 --- a/src/UriEscape.c +++ b/src/UriEscape.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriFile.c b/src/UriFile.c index 9cf788f..332f6a9 100644 --- a/src/UriFile.c +++ b/src/UriFile.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -83,7 +83,7 @@ static URI_INLINE int URI_FUNC(FilenameToUriString)(const URI_CHAR * filename, is_windows_network = (filename[0] == _UT('\\')) && (filename[1] == _UT('\\')); absolute = fromUnix ? (filename[0] == _UT('/')) - : ((filename[0] != _UT('\0')) && (filename[1] == _UT(':')) + : (((filename[0] != _UT('\0')) && (filename[1] == _UT(':'))) || is_windows_network); if (absolute) { diff --git a/src/UriIp4.c b/src/UriIp4.c index c00910b..ee067d3 100644 --- a/src/UriIp4.c +++ b/src/UriIp4.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriIp4Base.c b/src/UriIp4Base.c index 5cd298f..f066246 100644 --- a/src/UriIp4Base.c +++ b/src/UriIp4Base.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriIp4Base.h b/src/UriIp4Base.h index 23b838e..bef028f 100644 --- a/src/UriIp4Base.h +++ b/src/UriIp4Base.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriNormalize.c b/src/UriNormalize.c index 49db9ff..d68c371 100644 --- a/src/UriNormalize.c +++ b/src/UriNormalize.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -434,8 +434,8 @@ static URI_INLINE UriBool URI_FUNC(MakeOwner)(URI_TYPE(Uri) * uri, && (ranger->text.afterLast != NULL) && (ranger->text.afterLast > ranger->text.first)) { free((URI_CHAR *)ranger->text.first); - free(ranger); } + free(ranger); ranger = next; } diff --git a/src/UriNormalizeBase.c b/src/UriNormalizeBase.c index bac5888..8dbe7fd 100644 --- a/src/UriNormalizeBase.c +++ b/src/UriNormalizeBase.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriNormalizeBase.h b/src/UriNormalizeBase.h index 9f3abd5..c9de968 100644 --- a/src/UriNormalizeBase.h +++ b/src/UriNormalizeBase.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriParse.c b/src/UriParse.c index e3cdc68..5eee16d 100644 --- a/src/UriParse.c +++ b/src/UriParse.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -193,7 +193,7 @@ static UriBool URI_FUNC(OnExitOwnPortUserInfo)(URI_TYPE(ParserState) * state, co static UriBool URI_FUNC(OnExitSegmentNzNcOrScheme2)(URI_TYPE(ParserState) * state, const URI_CHAR * first); static void URI_FUNC(OnExitPartHelperTwo)(URI_TYPE(ParserState) * state); -static void URI_FUNC(ResetParserState)(URI_TYPE(ParserState) * state); +static void URI_FUNC(ResetParserStateExceptUri)(URI_TYPE(ParserState) * state); static UriBool URI_FUNC(PushPathSegment)(URI_TYPE(ParserState) * state, const URI_CHAR * first, const URI_CHAR * afterLast); @@ -2022,7 +2022,7 @@ static const URI_CHAR * URI_FUNC(ParseZeroMoreSlashSegs)(URI_TYPE(ParserState) * -static URI_INLINE void URI_FUNC(ResetParserState)(URI_TYPE(ParserState) * state) { +static URI_INLINE void URI_FUNC(ResetParserStateExceptUri)(URI_TYPE(ParserState) * state) { URI_TYPE(Uri) * const uriBackup = state->uri; memset(state, 0, sizeof(URI_TYPE(ParserState))); state->uri = uriBackup; @@ -2071,7 +2071,7 @@ int URI_FUNC(ParseUriEx)(URI_TYPE(ParserState) * state, const URI_CHAR * first, uri = state->uri; /* Init parser */ - URI_FUNC(ResetParserState)(state); + URI_FUNC(ResetParserStateExceptUri)(state); URI_FUNC(ResetUri)(uri); /* Parse */ @@ -2211,9 +2211,9 @@ UriBool URI_FUNC(_TESTING_ONLY_ParseIpSix)(const URI_CHAR * text) { const URI_CHAR * const afterIpSix = text + URI_STRLEN(text); const URI_CHAR * res; - URI_FUNC(ResetParserState)(&parser); URI_FUNC(ResetUri)(&uri); parser.uri = &uri; + URI_FUNC(ResetParserStateExceptUri)(&parser); parser.uri->hostData.ip6 = malloc(1 * sizeof(UriIp6)); res = URI_FUNC(ParseIPv6address2)(&parser, text, afterIpSix); URI_FUNC(FreeUriMembers)(&uri); diff --git a/src/UriParseBase.c b/src/UriParseBase.c index 75e4761..1d4ef6e 100644 --- a/src/UriParseBase.c +++ b/src/UriParseBase.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriParseBase.h b/src/UriParseBase.h index dea5c81..384946b 100644 --- a/src/UriParseBase.h +++ b/src/UriParseBase.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriQuery.c b/src/UriQuery.c index 7adb073..f0cd4f8 100644 --- a/src/UriQuery.c +++ b/src/UriQuery.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriRecompose.c b/src/UriRecompose.c index 09daee0..9678aac 100644 --- a/src/UriRecompose.c +++ b/src/UriRecompose.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/UriResolve.c b/src/UriResolve.c index 3660b6b..bb1d21a 100644 --- a/src/UriResolve.c +++ b/src/UriResolve.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -152,6 +152,8 @@ static int URI_FUNC(AddBaseUriImpl)(URI_TYPE(Uri) * absDest, const URI_TYPE(Uri) * relSource, const URI_TYPE(Uri) * absBase, UriResolutionOptions options) { + UriBool relSourceHasScheme; + if (absDest == NULL) { return URI_ERROR_NULL; } @@ -169,7 +171,7 @@ static int URI_FUNC(AddBaseUriImpl)(URI_TYPE(Uri) * absDest, /* [00/32] -- A non-strict parser may ignore a scheme in the reference */ /* [00/32] -- if it is identical to the base URI's scheme. */ /* [00/32] if ((not strict) and (R.scheme == Base.scheme)) then */ - UriBool relSourceHasScheme = (relSource->scheme.first != NULL) ? URI_TRUE : URI_FALSE; + relSourceHasScheme = (relSource->scheme.first != NULL) ? URI_TRUE : URI_FALSE; if ((options & URI_RESOLVE_IDENTICAL_SCHEME_COMPAT) && (absBase->scheme.first != NULL) && (relSource->scheme.first != NULL) diff --git a/src/UriShorten.c b/src/UriShorten.c index c839ae5..0145f68 100644 --- a/src/UriShorten.c +++ b/src/UriShorten.c @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -131,7 +131,7 @@ static URI_INLINE UriBool URI_FUNC(EqualsAuthority)(const URI_TYPE(Uri) * first, -int URI_FUNC(RemoveBaseUriImpl)(URI_TYPE(Uri) * dest, +static int URI_FUNC(RemoveBaseUriImpl)(URI_TYPE(Uri) * dest, const URI_TYPE(Uri) * absSource, const URI_TYPE(Uri) * absBase, UriBool domainRootMode) { diff --git a/test/FourSuite.cpp b/test/FourSuite.cpp index 706ee56..5ecdcb4 100644 --- a/test/FourSuite.cpp +++ b/test/FourSuite.cpp @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/test/FourSuite.h b/test/FourSuite.h index 24144cc..9a33c16 100644 --- a/test/FourSuite.h +++ b/test/FourSuite.h @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/test/VersionSuite.cpp b/test/VersionSuite.cpp index 82deddc..1c2d072 100644 --- a/test/VersionSuite.cpp +++ b/test/VersionSuite.cpp @@ -1,7 +1,7 @@ /* * uriparser - RFC 3986 URI parsing library * - * Copyright (C) 2014, Sebastian Pipping + * Copyright (C) 2014, Sebastian Pipping * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/test/VersionSuite.h b/test/VersionSuite.h index 495d3fc..f0276c5 100644 --- a/test/VersionSuite.h +++ b/test/VersionSuite.h @@ -1,7 +1,7 @@ /* * uriparser - RFC 3986 URI parsing library * - * Copyright (C) 2014, Sebastian Pipping + * Copyright (C) 2014, Sebastian Pipping * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/test/test.cpp b/test/test.cpp index d6f14cb..0b1290c 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -2,7 +2,7 @@ * uriparser - RFC 3986 URI parsing library * * Copyright (C) 2007, Weijia Song - * Copyright (C) 2007, Sebastian Pipping + * Copyright (C) 2007, Sebastian Pipping * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -98,6 +98,7 @@ public: TEST_ADD(UriSuite::testCrash_FreeUriMembers_Bug20080116) TEST_ADD(UriSuite::testCrash_Report2418192) TEST_ADD(UriSuite::testPervertedQueryString); + TEST_ADD(UriSuite::testQueryStringEndingInEqualSign_NonBug32); TEST_ADD(UriSuite::testCrash_MakeOwner_Bug20080207) TEST_ADD(UriSuite::testQueryList) TEST_ADD(UriSuite::testQueryListPair) @@ -1576,6 +1577,26 @@ Rule | Example | hostSet | absPath | emptySeg helperTestQueryString("http://example.org/?&&=&&&=&&&&==&===&====", 5); } + void testQueryStringEndingInEqualSign_NonBug32() { + const char * queryString = "firstname=sdsd&lastname="; + + UriQueryListA * queryList = NULL; + int itemCount = 0; + const int res = uriDissectQueryMallocA(&queryList, &itemCount, + queryString, queryString + strlen(queryString)); + + TEST_ASSERT(res == URI_SUCCESS); + TEST_ASSERT(itemCount == 2); + TEST_ASSERT(queryList != NULL); + TEST_ASSERT(strcmp(queryList->key, "firstname") == 0); + TEST_ASSERT(strcmp(queryList->value, "sdsd") == 0); + TEST_ASSERT(strcmp(queryList->next->key, "lastname") == 0); + TEST_ASSERT(strcmp(queryList->next->value, "") == 0); + TEST_ASSERT(queryList->next->next == NULL); + + uriFreeQueryListA(queryList); + } + void helperTestQueryString(char const * uriString, int pairsExpected) { UriParserStateA state; UriUriA uri; diff --git a/tool/uriparse.c b/tool/uriparse.c index c844ec6..e9c1218 100644 --- a/tool/uriparse.c +++ b/tool/uriparse.c @@ -36,6 +36,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -110,7 +111,15 @@ int main(int argc, char *argv[]) { if (uri.fragment.first) { printf("fragment: %.*s\n", RANGE(uri.fragment)); } - printf("absolutePath: %s\n", (uri.absolutePath == URI_TRUE) ? "true" : "false"); + { + const char * const absolutePathLabel = "absolutePath: "; + printf("%s%s\n", absolutePathLabel, + (uri.absolutePath == URI_TRUE) ? "true" : "false"); + if (uri.hostText.first != NULL) { + printf("%*s%s\n", (int)strlen(absolutePathLabel), "", + "(always false for URIs with host)"); + } + } } printf("\n"); diff --git a/win32/MinGW/Makefile b/win32/MinGW/Makefile index 9dfd13f..16e361d 100644 --- a/win32/MinGW/Makefile +++ b/win32/MinGW/Makefile @@ -2,7 +2,7 @@ # To use with mingw32-make.exe while running in cmd.exe # # Copyright (C) 2008, Michael Anthony Puls II -# Copyright (C) 2008, Sebastian Pipping +# Copyright (C) 2008, Sebastian Pipping # All rights reserved. # # Redistribution and use in source and binary forms, with or without -- cgit v1.2.3 From 7accc6a2acfbfce2e9f4a25bd1a8ef9bfec4783a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 22:34:07 +0100 Subject: Refresh symbols file --- debian/changelog | 7 +++++++ debian/liburiparser1.symbols | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 481bb31..757c772 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +uriparser (0.8.5-1) UNRELEASED; urgency=medium + + * New upstream release. + - Refresh symbols file. + + -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 + uriparser (0.8.4-1) unstable; urgency=medium * New upstream release. diff --git a/debian/liburiparser1.symbols b/debian/liburiparser1.symbols index 4e5f406..51a2188 100644 --- a/debian/liburiparser1.symbols +++ b/debian/liburiparser1.symbols @@ -67,8 +67,6 @@ liburiparser.so.1 liburiparser1 #MINVER# uriParseUriW@Base 0.6.0 uriPushToStack@Base 0.6.0 uriRemoveBaseUriA@Base 0.6.0 - uriRemoveBaseUriImplA@Base 0.7.2 - uriRemoveBaseUriImplW@Base 0.7.2 uriRemoveBaseUriW@Base 0.6.0 uriRemoveDotSegmentsA@Base 0.6.0 uriRemoveDotSegmentsAbsoluteA@Base 0.6.4 -- cgit v1.2.3 From abd3d9186a6f0ee15688f91a416aaabc98f129a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 22:40:40 +0100 Subject: Remove trailing whitespaces --- debian/changelog | 6 +++++- debian/control | 2 +- debian/rules | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 757c772..3f207f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,10 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium * New upstream release. - Refresh symbols file. + * Remove trailing whitespaces: + - debian/changelog + - debian/control + - debian/rules -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 @@ -162,7 +166,7 @@ uriparser (0.6.3-1) unstable; urgency=low uriparser (0.6.1-1) unstable; urgency=low - * New upstream version. + * New upstream version. * Add a watch file. diff --git a/debian/control b/debian/control index ec9ae66..bf6fb38 100644 --- a/debian/control +++ b/debian/control @@ -62,5 +62,5 @@ Description: documentation files for uriparser uriparser is a library that parses Uniform Resource Identifiers (URIs), strictly adhering to RFC 3986 where syntax for URIs is defined. URIs are used to identify resources, like http://www.debian.org/ or - urn:isbn:0-395-36341-1. This package provides the documentation + urn:isbn:0-395-36341-1. This package provides the documentation files for uriparser. diff --git a/debian/rules b/debian/rules index 713b782..2df6d7e 100755 --- a/debian/rules +++ b/debian/rules @@ -16,7 +16,7 @@ confflags += --build $(DEB_BUILD_GNU_TYPE) ifneq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) confflags += --host $(DEB_HOST_GNU_TYPE) endif - + ### %: -- cgit v1.2.3 From ad5e91c097bbf1b92a6f825103e06d92bb2e85e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 22:49:56 +0100 Subject: Migrate to debhelper 11 --- debian/changelog | 4 ++++ debian/compat | 2 +- debian/control | 3 +-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3f207f7..9b9be89 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,10 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium - debian/changelog - debian/control - debian/rules + * Migrate to debhelper 11: + - Change debian/compat to 11. + - Bump minimum debhelper version in debian/control to >= 11. + - Remove dh-autoreconf from Build-Depends. -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 diff --git a/debian/compat b/debian/compat index ec63514..b4de394 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +11 diff --git a/debian/control b/debian/control index bf6fb38..2a8b993 100644 --- a/debian/control +++ b/debian/control @@ -3,8 +3,7 @@ Section: libs Priority: optional Maintainer: Jörg Frings-Fürst Build-Depends: - debhelper (>= 9), - dh-autoreconf, + debhelper (>= 11), dh-exec (>=0.3) Build-Depends-Indep: doxygen, -- cgit v1.2.3 From 9e37b9830a0893ab0f80f5ec1517e150af4356b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 21 Mar 2018 23:01:32 +0100 Subject: Declare compliance with Debian Policy 4.1.3; Change to my new email address --- .bzrignore | 3 +++ debian/changelog | 4 ++++ debian/control | 4 ++-- debian/copyright | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .bzrignore diff --git a/.bzrignore b/.bzrignore new file mode 100644 index 0000000..2386f62 --- /dev/null +++ b/.bzrignore @@ -0,0 +1,3 @@ +.git +**/.git +**/.pc diff --git a/debian/changelog b/debian/changelog index 9b9be89..4f41e22 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,10 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium - Change debian/compat to 11. - Bump minimum debhelper version in debian/control to >= 11. - Remove dh-autoreconf from Build-Depends. + * Declare compliance with Debian Policy 4.1.3 (No changes needed). + * Change to my new email address: + - debian/control + - debian/copyright -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 diff --git a/debian/control b/debian/control index 2a8b993..04daf1a 100644 --- a/debian/control +++ b/debian/control @@ -1,7 +1,7 @@ Source: uriparser Section: libs Priority: optional -Maintainer: Jörg Frings-Fürst +Maintainer: Jörg Frings-Fürst Build-Depends: debhelper (>= 11), dh-exec (>=0.3) @@ -11,7 +11,7 @@ Build-Depends-Indep: qttools5-dev-tools, qtbase5-dev, libqt5sql5-sqlite -Standards-Version: 3.9.6 +Standards-Version: 4.1.3 Homepage: http://uriparser.sourceforge.net Vcs-Git: git://anonscm.debian.org/collab-maint/uriparser.git Vcs-Browser: http://anonscm.debian.org/cgit/collab-maint/uriparser.git diff --git a/debian/copyright b/debian/copyright index 5d1d263..086f569 100644 --- a/debian/copyright +++ b/debian/copyright @@ -19,7 +19,7 @@ Copyright: 2014-2015 Sebastian Pipping License: LGPL-2.1+ Files: debian/* -Copyright: 2014-2015 Jörg Frings-Fürst +Copyright: 2014-2018 Jörg Frings-Fürst License: GPL-3+ License: BSD-3-clause -- cgit v1.2.3 From f5db3e225f650873b63d3a9078ddfcdf02062ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Thu, 22 Mar 2018 07:22:48 +0100 Subject: Refresh debian/copyright; Rewrite debian/upstream/metadata --- debian/changelog | 2 ++ debian/copyright | 4 ++-- debian/upstream/metadata | 9 ++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4f41e22..b13ab27 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium * New upstream release. - Refresh symbols file. + - Refresh debian/copyright. + - Rewrite debian/upstream/metadata. * Remove trailing whitespaces: - debian/changelog - debian/control diff --git a/debian/copyright b/debian/copyright index 086f569..5a52f3d 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,6 +1,6 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: uriparser -Source: http://uriparser.sourceforge.net +Source: https://github.com/uriparser/uriparser Files: * Copyright: 2007 Weijia Song diff --git a/debian/upstream/metadata b/debian/upstream/metadata index 965e62e..60c70b2 100644 --- a/debian/upstream/metadata +++ b/debian/upstream/metadata @@ -1,6 +1,5 @@ -Bug-Database: http://sourceforge.net/p/uriparser/bugs/ -Bug-Submit: https://sourceforge.net/p/uriparser/bugs/new/ -Contact: https://sourceforge.net/p/uriparser/mailman/uriparser-users +Bug-Database: https://github.com/uriparser/uriparser/issues +Bug-Submit: https://github.com/uriparser/uriparser/issues/new Name: uriparser -Repository: git://git.code.sf.net/p/uriparser/git uriparser-git -Repository-Browse: https://sourceforge.net/p/uriparser/git/ci/master/tree/ +Repository: https://github.com/uriparser/uriparser.git +Repository-Browse: https://github.com/uriparser/uriparser -- cgit v1.2.3 From 52052c161e3230d27658d819be68abd4597aa6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Thu, 22 Mar 2018 07:24:59 +0100 Subject: New README.source to explain the branching model used --- debian/README.source | 18 ++++++++++++++++++ debian/changelog | 1 + 2 files changed, 19 insertions(+) create mode 100644 debian/README.source diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..e4f2b3d --- /dev/null +++ b/debian/README.source @@ -0,0 +1,18 @@ +Hello, + +now I use the branching model from Vincent Driessen[1]. + +I use the gitflow-avh[2]. with the Documentation[3]. +The Debian package can be found here[4]. + +Please upload unattended uploads use a branch feature/. + + +Many thanks. + + -- Jörg Frings-Fürst Fri, 02 Jun 2017 19:00:40 +0200 + +[1] http://nvie.com/posts/a-successful-git-branching-model/ +[2] https://github.com/petervanderdoes/gitflow-avh +[3] https://github.com/petervanderdoes/gitflow-avh/wiki +[4] https://tracker.debian.org/pkg/git-flow diff --git a/debian/changelog b/debian/changelog index b13ab27..50132b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,7 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium * Change to my new email address: - debian/control - debian/copyright + * New README.source to explain the branching model used. -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 -- cgit v1.2.3 From a3cfc95b3851fc7405c54e11c0371664c73d2003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 5 May 2018 10:02:19 +0200 Subject: Declare compliance with Debian Policy 4.1.4; d/rules: Switch to --- debian/changelog | 4 +++- debian/control | 2 +- debian/rules | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 50132b8..bd55809 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,11 +12,13 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium - Change debian/compat to 11. - Bump minimum debhelper version in debian/control to >= 11. - Remove dh-autoreconf from Build-Depends. - * Declare compliance with Debian Policy 4.1.3 (No changes needed). + * Declare compliance with Debian Policy 4.1.4 (No changes needed). * Change to my new email address: - debian/control - debian/copyright * New README.source to explain the branching model used. + * debian/rules: + - Switch to $(DEB_UPSTREAM_VERSION). -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 diff --git a/debian/control b/debian/control index 04daf1a..179c8f7 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,7 @@ Build-Depends-Indep: qttools5-dev-tools, qtbase5-dev, libqt5sql5-sqlite -Standards-Version: 4.1.3 +Standards-Version: 4.1.4 Homepage: http://uriparser.sourceforge.net Vcs-Git: git://anonscm.debian.org/collab-maint/uriparser.git Vcs-Browser: http://anonscm.debian.org/cgit/collab-maint/uriparser.git diff --git a/debian/rules b/debian/rules index 2df6d7e..3245017 100755 --- a/debian/rules +++ b/debian/rules @@ -1,5 +1,7 @@ #!/usr/bin/make -f +include /usr/share/dpkg/default.mk + # hardening export DEB_BUILD_MAINT_OPTIONS = hardening=+all @@ -34,10 +36,8 @@ override_dh_installdocs-indep: $(RM) debian/liburiparser-doc/usr/share/doc/liburiparser-doc/html/*.md5 dh_installdocs -UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -n '/\(Version:\)/{s/^Version:[[:space:]]\+\([0-9]\+:\)\?\(.*\)/\2/p}' | rev | cut -d- -f 2- | rev) - override_dh_makeshlibs: - dh_makeshlibs -- -v$(UPSTREAM_VERSION) -Pdebian/liburiparser1 -pliburiparser1 + dh_makeshlibs -- -v$(DEB_VERSION_UPSTREAM) -Pdebian/liburiparser1 -pliburiparser1 override_dh_compress: dh_compress -X.qhp -- cgit v1.2.3 From c05df21ac38991cf787437d76c04964813a110fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 5 May 2018 10:11:01 +0200 Subject: change date/time to upload --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bd55809..61a9cfb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -uriparser (0.8.5-1) UNRELEASED; urgency=medium +uriparser (0.8.5-1) unstable; urgency=medium * New upstream release. - Refresh symbols file. @@ -20,7 +20,7 @@ uriparser (0.8.5-1) UNRELEASED; urgency=medium * debian/rules: - Switch to $(DEB_UPSTREAM_VERSION). - -- Jörg Frings-Fürst Wed, 21 Mar 2018 22:11:26 +0100 + -- Jörg Frings-Fürst Sat, 05 May 2018 10:10:13 +0200 uriparser (0.8.4-1) unstable; urgency=medium -- cgit v1.2.3 From 2caebcc925936531fe252530b9319cef23bd5baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 5 May 2018 10:15:02 +0200 Subject: Add bug # to close --- debian/changelog | 4 ++-- debian/files | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 debian/files diff --git a/debian/changelog b/debian/changelog index 61a9cfb..44ec9ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ uriparser (0.8.5-1) unstable; urgency=medium - * New upstream release. + * New upstream release (Closes: #893316). - Refresh symbols file. - Refresh debian/copyright. - Rewrite debian/upstream/metadata. @@ -20,7 +20,7 @@ uriparser (0.8.5-1) unstable; urgency=medium * debian/rules: - Switch to $(DEB_UPSTREAM_VERSION). - -- Jörg Frings-Fürst Sat, 05 May 2018 10:10:13 +0200 + -- Jörg Frings-Fürst Sat, 05 May 2018 10:14:09 +0200 uriparser (0.8.4-1) unstable; urgency=medium diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..65d017f --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +uriparser_0.8.5-1_source.buildinfo libs optional -- cgit v1.2.3 From 35936d9f32ae19e3f069c0e1ca4c49e73ad69d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 1 Jul 2018 07:45:48 +0200 Subject: Add NMU 0.8.5-1.1 --- debian/changelog | 14 ++++++++++++++ debian/files | 1 - debian/liburiparser-dev.install | 1 + debian/liburiparser-dev.links | 3 --- 4 files changed, 15 insertions(+), 4 deletions(-) delete mode 100644 debian/files delete mode 100755 debian/liburiparser-dev.links diff --git a/debian/changelog b/debian/changelog index 44ec9ee..b340c05 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +uriparser (0.8.5-2) UNRELEASED; urgency=medium + + * + + -- Jörg Frings-Fürst Sun, 01 Jul 2018 07:43:51 +0200 + +uriparser (0.8.5-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Fix broken symlink: liburiparser.so -> liburiparser.so.1.0.21 + (closes: #901955) + + -- Bas Couwenberg Fri, 22 Jun 2018 17:00:15 +0200 + uriparser (0.8.5-1) unstable; urgency=medium * New upstream release (Closes: #893316). diff --git a/debian/files b/debian/files deleted file mode 100644 index 65d017f..0000000 --- a/debian/files +++ /dev/null @@ -1 +0,0 @@ -uriparser_0.8.5-1_source.buildinfo libs optional diff --git a/debian/liburiparser-dev.install b/debian/liburiparser-dev.install index 68e5a87..8ea08d4 100644 --- a/debian/liburiparser-dev.install +++ b/debian/liburiparser-dev.install @@ -1,2 +1,3 @@ usr/include usr/lib/*/pkgconfig/* +usr/lib/*/*.so diff --git a/debian/liburiparser-dev.links b/debian/liburiparser-dev.links deleted file mode 100755 index 5ec7658..0000000 --- a/debian/liburiparser-dev.links +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/dh-exec - -usr/lib/${DEB_HOST_MULTIARCH}/liburiparser.so.1.0.20 usr/lib/${DEB_HOST_MULTIARCH}/liburiparser.so -- cgit v1.2.3 From 7339374ef99e18f7bd3824e67c8fc559e47164ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 1 Jul 2018 08:54:46 +0200 Subject: Switch Vcs-* to new loacation; Remove now useless debian/liburiparser-doc.lintian-overrides --- debian/changelog | 4 +++- debian/control | 4 ++-- debian/liburiparser-doc.lintian-overrides | 7 ------- 3 files changed, 5 insertions(+), 10 deletions(-) delete mode 100644 debian/liburiparser-doc.lintian-overrides diff --git a/debian/changelog b/debian/changelog index b340c05..fe0cd1d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ uriparser (0.8.5-2) UNRELEASED; urgency=medium - * + * debian/control: + - Switch Vcs-* to new loacation. + * Remove now useless debian/liburiparser-doc.lintian-overrides. -- Jörg Frings-Fürst Sun, 01 Jul 2018 07:43:51 +0200 diff --git a/debian/control b/debian/control index 179c8f7..b191fab 100644 --- a/debian/control +++ b/debian/control @@ -13,8 +13,8 @@ Build-Depends-Indep: libqt5sql5-sqlite Standards-Version: 4.1.4 Homepage: http://uriparser.sourceforge.net -Vcs-Git: git://anonscm.debian.org/collab-maint/uriparser.git -Vcs-Browser: http://anonscm.debian.org/cgit/collab-maint/uriparser.git +Vcs-Git: git://jff.email/opt/git/uriparser.git +Vcs-Browser: https://jff.email/cgit/uriparser.git Package: liburiparser1 Architecture: any diff --git a/debian/liburiparser-doc.lintian-overrides b/debian/liburiparser-doc.lintian-overrides deleted file mode 100644 index 3b05f63..0000000 --- a/debian/liburiparser-doc.lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -# The lintian warning "liburiparser-doc: embedded-javascript-library -# usr/share/doc/liburiparser-doc/html/jquery.js please use libjs-jquery" -# was overridden. -# The file jquery.js comes from the with doxygen-generated documentation. -# The built-in jquery.js in doxygen is not going to be removed (see Debian bug #736432). -# -liburiparser-doc binary: embedded-javascript-library -- cgit v1.2.3 From 86fee0b29894235a4a9a5e64afe0a643841f500f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 8 Jul 2018 14:17:28 +0200 Subject: Declare compliance with Debian Policy 4.1.5 --- debian/changelog | 5 +++-- debian/control | 2 +- debian/files | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 debian/files diff --git a/debian/changelog b/debian/changelog index fe0cd1d..09e7c88 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,11 @@ -uriparser (0.8.5-2) UNRELEASED; urgency=medium +uriparser (0.8.5-2) unstable; urgency=medium * debian/control: - Switch Vcs-* to new loacation. * Remove now useless debian/liburiparser-doc.lintian-overrides. + * Declare compliance with Debian Policy 4.1.5 (No changes needed). - -- Jörg Frings-Fürst Sun, 01 Jul 2018 07:43:51 +0200 + -- Jörg Frings-Fürst Sun, 08 Jul 2018 14:16:31 +0200 uriparser (0.8.5-1.1) unstable; urgency=medium diff --git a/debian/control b/debian/control index b191fab..68d11b1 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,7 @@ Build-Depends-Indep: qttools5-dev-tools, qtbase5-dev, libqt5sql5-sqlite -Standards-Version: 4.1.4 +Standards-Version: 4.1.5 Homepage: http://uriparser.sourceforge.net Vcs-Git: git://jff.email/opt/git/uriparser.git Vcs-Browser: https://jff.email/cgit/uriparser.git diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..bf254b1 --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +uriparser_0.8.5-2_source.buildinfo libs optional -- cgit v1.2.3