summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2020-05-03 06:47:41 +0000
committer Eric Hameleers <alien@slackware.com>2020-05-03 17:59:53 +0200
commitdf4c9b091989c5fbea58f5b42abbb5e6c545a931 (patch)
tree59337ea7d5df4f2ede731af6f97d535b699ca1a3
parent5d2f3453069f478671957b6476e301229df533fa (diff)
downloadcurrent-df4c9b091989c5fbea58f5b42abbb5e6c545a931.tar.gz
current-df4c9b091989c5fbea58f5b42abbb5e6c545a931.tar.xz
Sun May 3 06:47:41 UTC 202020200503064741
a/kernel-generic-5.4.38-x86_64-1.txz: Upgraded. a/kernel-huge-5.4.38-x86_64-1.txz: Upgraded. a/kernel-modules-5.4.38-x86_64-1.txz: Upgraded. d/kernel-headers-5.4.38-x86-1.txz: Upgraded. d/mercurial-5.4-x86_64-1.txz: Upgraded. k/kernel-source-5.4.38-noarch-1.txz: Upgraded. l/mozilla-nss-3.52-x86_64-1.txz: Upgraded. l/python-distro-1.5.0-x86_64-1.txz: Upgraded. l/python-pillow-7.1.2-x86_64-1.txz: Upgraded. l/v4l-utils-1.18.1-x86_64-1.txz: Upgraded. xap/seamonkey-2.53.2-x86_64-1.txz: Upgraded. This update contains security fixes and improvements. For more information, see: https://www.seamonkey-project.org/releases/seamonkey2.53.2 (* Security fix *) isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
-rw-r--r--ChangeLog.rss32
-rw-r--r--ChangeLog.txt20
-rw-r--r--FILELIST.TXT211
-rw-r--r--README.initrd14
-rw-r--r--isolinux/message.txt2
-rw-r--r--kernels/VERSIONS.TXT2
-rwxr-xr-xrecompress.sh4
-rw-r--r--slackware64/a/maketag6
-rw-r--r--slackware64/a/maketag.ez6
-rw-r--r--slackware64/k/maketag2
-rw-r--r--slackware64/k/maketag.ez2
-rw-r--r--source/k/kernel-configs/config-generic-5.4.38 (renamed from source/k/kernel-configs/config-generic-5.4.36)2
-rw-r--r--source/k/kernel-configs/config-generic-5.4.38.x64 (renamed from source/k/kernel-configs/config-generic-5.4.36.x64)2
-rw-r--r--source/k/kernel-configs/config-generic-smp-5.4.38-smp (renamed from source/k/kernel-configs/config-generic-smp-5.4.36-smp)2
-rw-r--r--source/k/kernel-configs/config-huge-5.4.38 (renamed from source/k/kernel-configs/config-huge-5.4.36)2
-rw-r--r--source/k/kernel-configs/config-huge-5.4.38.x64 (renamed from source/k/kernel-configs/config-huge-5.4.36.x64)2
-rw-r--r--source/k/kernel-configs/config-huge-smp-5.4.38-smp (renamed from source/k/kernel-configs/config-huge-smp-5.4.36-smp)2
-rwxr-xr-xsource/l/mozilla-nss/mozilla-nss.SlackBuild2
-rwxr-xr-xsource/l/python-distro/python-distro.SlackBuild2
-rw-r--r--source/l/python-pillow/python-pillow.url1
-rwxr-xr-xsource/l/v4l-utils/v4l-utils.SlackBuild2
-rwxr-xr-xsource/xap/seamonkey/seamonkey.SlackBuild12
-rw-r--r--source/xap/seamonkey/seamonkey.gettid.patch35
-rw-r--r--source/xap/seamonkey/seamonkey.nsstring.patch24
-rw-r--r--source/xap/seamonkey/seamonkey.rust.encoding_rs.diff17
-rw-r--r--source/xap/seamonkey/seamonkey.rust14x.diff4279
26 files changed, 182 insertions, 4505 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index c4bd38c1a..a2d6752b9 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,38 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Fri, 1 May 2020 18:05:38 GMT</pubDate>
- <lastBuildDate>Sat, 2 May 2020 06:59:47 GMT</lastBuildDate>
+ <pubDate>Sun, 3 May 2020 06:47:41 GMT</pubDate>
+ <lastBuildDate>Sun, 3 May 2020 15:59:47 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.11</generator>
<item>
+ <title>Sun, 3 May 2020 06:47:41 GMT</title>
+ <pubDate>Sun, 3 May 2020 06:47:41 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20200503064741</link>
+ <guid isPermaLink="false">20200503064741</guid>
+ <description>
+ <![CDATA[<pre>
+a/kernel-generic-5.4.38-x86_64-1.txz: Upgraded.
+a/kernel-huge-5.4.38-x86_64-1.txz: Upgraded.
+a/kernel-modules-5.4.38-x86_64-1.txz: Upgraded.
+d/kernel-headers-5.4.38-x86-1.txz: Upgraded.
+d/mercurial-5.4-x86_64-1.txz: Upgraded.
+k/kernel-source-5.4.38-noarch-1.txz: Upgraded.
+l/mozilla-nss-3.52-x86_64-1.txz: Upgraded.
+l/python-distro-1.5.0-x86_64-1.txz: Upgraded.
+l/python-pillow-7.1.2-x86_64-1.txz: Upgraded.
+l/v4l-utils-1.18.1-x86_64-1.txz: Upgraded.
+xap/seamonkey-2.53.2-x86_64-1.txz: Upgraded.
+ This update contains security fixes and improvements.
+ For more information, see:
+ https://www.seamonkey-project.org/releases/seamonkey2.53.2
+ (* Security fix *)
+isolinux/initrd.img: Rebuilt.
+kernels/*: Upgraded.
+usb-and-pxe-installers/usbboot.img: Rebuilt.
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Fri, 1 May 2020 18:05:38 GMT</title>
<pubDate>Fri, 1 May 2020 18:05:38 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20200501180538</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 5bd4cf25f..7cdd7c842 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,23 @@
+Sun May 3 06:47:41 UTC 2020
+a/kernel-generic-5.4.38-x86_64-1.txz: Upgraded.
+a/kernel-huge-5.4.38-x86_64-1.txz: Upgraded.
+a/kernel-modules-5.4.38-x86_64-1.txz: Upgraded.
+d/kernel-headers-5.4.38-x86-1.txz: Upgraded.
+d/mercurial-5.4-x86_64-1.txz: Upgraded.
+k/kernel-source-5.4.38-noarch-1.txz: Upgraded.
+l/mozilla-nss-3.52-x86_64-1.txz: Upgraded.
+l/python-distro-1.5.0-x86_64-1.txz: Upgraded.
+l/python-pillow-7.1.2-x86_64-1.txz: Upgraded.
+l/v4l-utils-1.18.1-x86_64-1.txz: Upgraded.
+xap/seamonkey-2.53.2-x86_64-1.txz: Upgraded.
+ This update contains security fixes and improvements.
+ For more information, see:
+ https://www.seamonkey-project.org/releases/seamonkey2.53.2
+ (* Security fix *)
+isolinux/initrd.img: Rebuilt.
+kernels/*: Upgraded.
+usb-and-pxe-installers/usbboot.img: Rebuilt.
++--------------------------+
Fri May 1 18:05:38 UTC 2020
a/cryptsetup-2.3.2-x86_64-1.txz: Upgraded.
a/sysvinit-scripts-2.1-noarch-30.txz: Rebuilt.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index 301b2ed31..d8b4d3e36 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,35 +1,35 @@
-Fri May 1 18:18:43 UTC 2020
+Sun May 3 07:05:35 UTC 2020
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2020-05-01 18:05 .
+drwxr-xr-x 12 root root 4096 2020-05-03 06:47 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 14975 2020-02-08 21:06 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 963105 2020-04-30 05:10 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-04-30 05:10 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 965477 2020-05-01 18:19 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-01 18:19 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 868968 2020-05-01 18:05 ./ChangeLog.txt
+-rw-r--r-- 1 root root 869801 2020-05-03 06:47 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
-drwxr-xr-x 2 root root 4096 2020-04-30 04:57 ./EFI/BOOT
+drwxr-xr-x 2 root root 4096 2020-05-03 06:47 ./EFI/BOOT
-rw-r--r-- 1 root root 1417216 2019-07-05 18:54 ./EFI/BOOT/bootx64.efi
-rw-r--r-- 1 root root 78 2013-09-23 20:35 ./EFI/BOOT/grub-embedded.cfg
-rw-r--r-- 1 root root 893 2018-04-17 21:17 ./EFI/BOOT/grub.cfg
--rw-r--r-- 2 root root 10033536 2020-04-30 03:58 ./EFI/BOOT/huge.s
--rw-r--r-- 2 root root 44383948 2020-04-30 04:45 ./EFI/BOOT/initrd.img
+-rw-r--r-- 2 root root 10029440 2020-05-02 20:10 ./EFI/BOOT/huge.s
+-rw-r--r-- 2 root root 44374752 2020-05-03 06:42 ./EFI/BOOT/initrd.img
-rwxr-xr-x 1 root root 2504 2019-07-05 18:54 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1265352 2020-04-30 05:10 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1268182 2020-05-01 18:18 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 747167 2020-05-01 18:16 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 747163 2020-05-03 07:03 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
--rw-r--r-- 1 root root 3629 2020-04-30 04:11 ./README.initrd
+-rw-r--r-- 1 root root 3629 2020-05-03 06:27 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
-rw-r--r-- 1 root root 8751 2016-06-28 21:44 ./README_LVM.TXT
-rw-r--r-- 1 root root 19658 2013-06-18 04:34 ./README_RAID.TXT
@@ -758,16 +758,16 @@ drwxr-xr-x 2 root root 4096 2019-10-18 18:28 ./extra/xv
-rw-r--r-- 1 root root 233 2018-04-13 18:00 ./extra/xv/xv-3.10a-x86_64-9.txt
-rw-r--r-- 1 root root 953308 2018-04-13 18:00 ./extra/xv/xv-3.10a-x86_64-9.txz
-rw-r--r-- 1 root root 163 2018-04-13 18:00 ./extra/xv/xv-3.10a-x86_64-9.txz.asc
-drwxr-xr-x 3 root root 4096 2020-04-30 04:57 ./isolinux
+drwxr-xr-x 3 root root 4096 2020-05-03 06:47 ./isolinux
-rw-r--r-- 1 root root 6183 2017-11-18 18:47 ./isolinux/README.TXT
-rw-r--r-- 1 root root 788 2007-03-17 19:50 ./isolinux/README_SPLIT.TXT
-rw-r--r-- 1 root root 1474560 2019-07-05 18:54 ./isolinux/efiboot.img
-rw-r--r-- 1 root root 574 2013-10-24 00:19 ./isolinux/f2.txt
--rw-r--r-- 2 root root 44383948 2020-04-30 04:45 ./isolinux/initrd.img
+-rw-r--r-- 2 root root 44374752 2020-05-03 06:42 ./isolinux/initrd.img
-rw-r--r-- 1 root root 50 2003-01-18 00:02 ./isolinux/iso.sort
-rw-r--r-- 1 root root 24576 2016-05-27 20:36 ./isolinux/isolinux.bin
-rw-r--r-- 1 root root 578 2013-03-27 03:29 ./isolinux/isolinux.cfg
--rw-r--r-- 1 root root 682 2020-04-30 04:11 ./isolinux/message.txt
+-rw-r--r-- 1 root root 682 2020-05-03 06:27 ./isolinux/message.txt
drwxr-xr-x 2 root root 4096 2003-03-17 07:31 ./isolinux/sbootmgr
-rwxr-xr-x 1 root root 36064 1995-05-12 01:23 ./isolinux/sbootmgr/RAWRITE.EXE
-rw-r--r-- 1 root root 2138 1997-12-01 01:21 ./isolinux/sbootmgr/RAWRITE12.DOC
@@ -778,12 +778,12 @@ lrwxrwxrwx 1 root root 11 2009-08-23 23:37 ./isolinux/sbootmgr/RAWRITE13
-rw-r--r-- 1 root root 1291 2003-03-17 07:31 ./isolinux/sbootmgr/README.TXT
-rw-r--r-- 1 root root 110592 2003-03-16 08:38 ./isolinux/sbootmgr/sbootmgr.dsk
-rw-r--r-- 1 root root 3024 2018-03-03 01:37 ./isolinux/setpkg
-drwxr-xr-x 5 root root 4096 2020-04-30 04:11 ./kernels
--rw-r--r-- 1 root root 36 2020-04-30 04:11 ./kernels/VERSIONS.TXT
-drwxr-xr-x 2 root root 4096 2020-04-30 03:58 ./kernels/huge.s
--rw-r--r-- 1 root root 1082045 2020-04-30 03:58 ./kernels/huge.s/System.map.gz
--rw-r--r-- 2 root root 10033536 2020-04-30 03:58 ./kernels/huge.s/bzImage
--rw-r--r-- 1 root root 217665 2020-04-30 01:38 ./kernels/huge.s/config
+drwxr-xr-x 5 root root 4096 2020-05-03 06:27 ./kernels
+-rw-r--r-- 1 root root 36 2020-05-03 06:27 ./kernels/VERSIONS.TXT
+drwxr-xr-x 2 root root 4096 2020-05-02 20:10 ./kernels/huge.s
+-rw-r--r-- 1 root root 1081957 2020-05-02 20:09 ./kernels/huge.s/System.map.gz
+-rw-r--r-- 2 root root 10029440 2020-05-02 20:10 ./kernels/huge.s/bzImage
+-rw-r--r-- 1 root root 217665 2020-05-02 17:48 ./kernels/huge.s/config
drwxr-xr-x 2 root root 4096 2011-03-25 03:15 ./kernels/memtest
-rw-r--r-- 1 root root 60 2011-03-24 00:19 ./kernels/memtest/README
-rw-r--r-- 1 root root 150024 2013-10-17 04:15 ./kernels/memtest/memtest
@@ -828,13 +828,13 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
-drwxr-xr-x 18 root root 4096 2020-05-01 18:16 ./slackware64
--rw-r--r-- 1 root root 295591 2020-05-01 18:16 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-05-01 18:16 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 368070 2020-05-01 18:13 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 3820541 2020-05-01 18:14 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2020-05-03 07:04 ./slackware64
+-rw-r--r-- 1 root root 295579 2020-05-03 07:04 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-03 07:04 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 368058 2020-05-03 07:00 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 3821152 2020-05-03 07:01 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 28672 2020-05-01 18:13 ./slackware64/a
+drwxr-xr-x 2 root root 28672 2020-05-03 07:00 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt
-rw-r--r-- 1 root root 10820 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz
-rw-r--r-- 1 root root 163 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz.asc
@@ -987,15 +987,15 @@ drwxr-xr-x 2 root root 28672 2020-05-01 18:13 ./slackware64/a
-rw-r--r-- 1 root root 422 2020-04-25 17:41 ./slackware64/a/kernel-firmware-20200424_b2cad6a-noarch-1.txt
-rw-r--r-- 1 root root 98336264 2020-04-25 17:41 ./slackware64/a/kernel-firmware-20200424_b2cad6a-noarch-1.txz
-rw-r--r-- 1 root root 163 2020-04-25 17:41 ./slackware64/a/kernel-firmware-20200424_b2cad6a-noarch-1.txz.asc
--rw-r--r-- 1 root root 624 2020-04-30 04:00 ./slackware64/a/kernel-generic-5.4.36-x86_64-1.txt
--rw-r--r-- 1 root root 6939896 2020-04-30 04:00 ./slackware64/a/kernel-generic-5.4.36-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 04:00 ./slackware64/a/kernel-generic-5.4.36-x86_64-1.txz.asc
--rw-r--r-- 1 root root 636 2020-04-30 03:58 ./slackware64/a/kernel-huge-5.4.36-x86_64-1.txt
--rw-r--r-- 1 root root 10648496 2020-04-30 03:58 ./slackware64/a/kernel-huge-5.4.36-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 03:58 ./slackware64/a/kernel-huge-5.4.36-x86_64-1.txz.asc
--rw-r--r-- 1 root root 567 2020-04-30 04:08 ./slackware64/a/kernel-modules-5.4.36-x86_64-1.txt
--rw-r--r-- 1 root root 43875308 2020-04-30 04:08 ./slackware64/a/kernel-modules-5.4.36-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 04:08 ./slackware64/a/kernel-modules-5.4.36-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 624 2020-05-02 20:11 ./slackware64/a/kernel-generic-5.4.38-x86_64-1.txt
+-rw-r--r-- 1 root root 6941988 2020-05-02 20:11 ./slackware64/a/kernel-generic-5.4.38-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-02 20:11 ./slackware64/a/kernel-generic-5.4.38-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 636 2020-05-02 20:10 ./slackware64/a/kernel-huge-5.4.38-x86_64-1.txt
+-rw-r--r-- 1 root root 10647388 2020-05-02 20:10 ./slackware64/a/kernel-huge-5.4.38-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-02 20:10 ./slackware64/a/kernel-huge-5.4.38-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 567 2020-05-02 20:20 ./slackware64/a/kernel-modules-5.4.38-x86_64-1.txt
+-rw-r--r-- 1 root root 43894432 2020-05-02 20:20 ./slackware64/a/kernel-modules-5.4.38-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-02 20:20 ./slackware64/a/kernel-modules-5.4.38-x86_64-1.txz.asc
-rw-r--r-- 1 root root 508 2020-03-05 07:03 ./slackware64/a/kmod-27-x86_64-1.txt
-rw-r--r-- 1 root root 112556 2020-03-05 07:03 ./slackware64/a/kmod-27-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-03-05 07:03 ./slackware64/a/kmod-27-x86_64-1.txz.asc
@@ -1032,8 +1032,8 @@ drwxr-xr-x 2 root root 28672 2020-05-01 18:13 ./slackware64/a
-rw-r--r-- 1 root root 405 2019-01-11 20:05 ./slackware64/a/lzlib-1.11-x86_64-1.txt
-rw-r--r-- 1 root root 56396 2019-01-11 20:05 ./slackware64/a/lzlib-1.11-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-01-11 20:05 ./slackware64/a/lzlib-1.11-x86_64-1.txz.asc
--rw-r--r-- 1 root root 9157 2020-04-30 04:11 ./slackware64/a/maketag
--rw-r--r-- 1 root root 9157 2020-04-30 04:11 ./slackware64/a/maketag.ez
+-rw-r--r-- 1 root root 9157 2020-05-03 06:27 ./slackware64/a/maketag
+-rw-r--r-- 1 root root 9157 2020-05-03 06:27 ./slackware64/a/maketag.ez
-rw-r--r-- 1 root root 591 2020-04-24 17:54 ./slackware64/a/mcelog-169-x86_64-1.txt
-rw-r--r-- 1 root root 342888 2020-04-24 17:54 ./slackware64/a/mcelog-169-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-04-24 17:54 ./slackware64/a/mcelog-169-x86_64-1.txz.asc
@@ -1136,7 +1136,7 @@ drwxr-xr-x 2 root root 28672 2020-05-01 18:13 ./slackware64/a
-rw-r--r-- 1 root root 378 2020-04-30 17:54 ./slackware64/a/sysvinit-scripts-2.1-noarch-30.txt
-rw-r--r-- 1 root root 22436 2020-04-30 17:54 ./slackware64/a/sysvinit-scripts-2.1-noarch-30.txz
-rw-r--r-- 1 root root 163 2020-04-30 17:54 ./slackware64/a/sysvinit-scripts-2.1-noarch-30.txz.asc
--rw-r--r-- 1 root root 1418 2020-04-30 04:11 ./slackware64/a/tagfile
+-rw-r--r-- 1 root root 1418 2020-05-03 06:27 ./slackware64/a/tagfile
-rw-r--r-- 1 root root 395 2019-02-23 18:03 ./slackware64/a/tar-1.32-x86_64-1.txt
-rw-r--r-- 1 root root 844396 2019-02-23 18:03 ./slackware64/a/tar-1.32-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-02-23 18:03 ./slackware64/a/tar-1.32-x86_64-1.txz.asc
@@ -1440,7 +1440,7 @@ drwxr-xr-x 2 root root 20480 2020-04-29 20:26 ./slackware64/ap
-rw-r--r-- 1 root root 506 2020-02-16 18:00 ./slackware64/ap/zsh-5.8-x86_64-1.txt
-rw-r--r-- 1 root root 3053312 2020-02-16 18:00 ./slackware64/ap/zsh-5.8-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-02-16 18:00 ./slackware64/ap/zsh-5.8-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 20480 2020-05-01 18:13 ./slackware64/d
+drwxr-xr-x 2 root root 20480 2020-05-03 07:00 ./slackware64/d
-rw-r--r-- 1 root root 360 2020-05-01 03:35 ./slackware64/d/Cython-0.29.17-x86_64-1.txt
-rw-r--r-- 1 root root 2486836 2020-05-01 03:35 ./slackware64/d/Cython-0.29.17-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-05-01 03:35 ./slackware64/d/Cython-0.29.17-x86_64-1.txz.asc
@@ -1542,9 +1542,9 @@ drwxr-xr-x 2 root root 20480 2020-05-01 18:13 ./slackware64/d
-rw-r--r-- 1 root root 279 2018-04-13 13:53 ./slackware64/d/intltool-0.51.0-x86_64-4.txt
-rw-r--r-- 1 root root 48112 2018-04-13 13:53 ./slackware64/d/intltool-0.51.0-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:53 ./slackware64/d/intltool-0.51.0-x86_64-4.txz.asc
--rw-r--r-- 1 root root 332 2020-04-30 04:09 ./slackware64/d/kernel-headers-5.4.36-x86-1.txt
--rw-r--r-- 1 root root 964184 2020-04-30 04:09 ./slackware64/d/kernel-headers-5.4.36-x86-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 04:09 ./slackware64/d/kernel-headers-5.4.36-x86-1.txz.asc
+-rw-r--r-- 1 root root 332 2020-05-02 20:21 ./slackware64/d/kernel-headers-5.4.38-x86-1.txt
+-rw-r--r-- 1 root root 964144 2020-05-02 20:21 ./slackware64/d/kernel-headers-5.4.38-x86-1.txz
+-rw-r--r-- 1 root root 163 2020-05-02 20:21 ./slackware64/d/kernel-headers-5.4.38-x86-1.txz.asc
-rw-r--r-- 1 root root 498 2020-03-12 20:59 ./slackware64/d/libtool-2.4.6-x86_64-13.txt
-rw-r--r-- 1 root root 428492 2020-03-12 20:59 ./slackware64/d/libtool-2.4.6-x86_64-13.txz
-rw-r--r-- 1 root root 163 2020-03-12 20:59 ./slackware64/d/libtool-2.4.6-x86_64-13.txz.asc
@@ -1559,9 +1559,9 @@ drwxr-xr-x 2 root root 20480 2020-05-01 18:13 ./slackware64/d
-rw-r--r-- 1 root root 163 2020-01-16 19:17 ./slackware64/d/make-4.2.1-x86_64-5.txz.asc
-rw-r--r-- 1 root root 5091 2020-04-21 02:41 ./slackware64/d/maketag
-rw-r--r-- 1 root root 5091 2020-04-21 02:41 ./slackware64/d/maketag.ez
--rw-r--r-- 1 root root 659 2020-04-03 04:13 ./slackware64/d/mercurial-5.3.2-x86_64-1.txt
--rw-r--r-- 1 root root 4330988 2020-04-03 04:13 ./slackware64/d/mercurial-5.3.2-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-03 04:13 ./slackware64/d/mercurial-5.3.2-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 659 2020-05-03 01:43 ./slackware64/d/mercurial-5.4-x86_64-1.txt
+-rw-r--r-- 1 root root 4398616 2020-05-03 01:43 ./slackware64/d/mercurial-5.4-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 01:43 ./slackware64/d/mercurial-5.4-x86_64-1.txz.asc
-rw-r--r-- 1 root root 410 2020-04-26 18:17 ./slackware64/d/meson-0.54.1-x86_64-1.txt
-rw-r--r-- 1 root root 883956 2020-04-26 18:17 ./slackware64/d/meson-0.54.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-04-26 18:17 ./slackware64/d/meson-0.54.1-x86_64-1.txz.asc
@@ -1662,15 +1662,15 @@ drwxr-xr-x 2 root root 4096 2016-04-01 21:41 ./slackware64/f
-rw-r--r-- 1 root root 1075 2018-03-01 07:54 ./slackware64/f/maketag
-rw-r--r-- 1 root root 1075 2018-03-01 07:54 ./slackware64/f/maketag.ez
-rw-r--r-- 1 root root 32 2018-03-01 07:54 ./slackware64/f/tagfile
-drwxr-xr-x 2 root root 4096 2020-04-30 05:05 ./slackware64/k
+drwxr-xr-x 2 root root 4096 2020-05-03 07:00 ./slackware64/k
-rwxr-xr-x 1 root root 2897 2009-06-24 22:06 ./slackware64/k/install-packages
-rw-r--r-- 1 root root 446 2006-09-18 10:41 ./slackware64/k/install.end
--rw-r--r-- 1 root root 317 2020-04-30 03:53 ./slackware64/k/kernel-source-5.4.36-noarch-1.txt
--rw-r--r-- 1 root root 109938608 2020-04-30 03:53 ./slackware64/k/kernel-source-5.4.36-noarch-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 03:53 ./slackware64/k/kernel-source-5.4.36-noarch-1.txz.asc
--rw-r--r-- 1 root root 1170 2020-04-30 04:11 ./slackware64/k/maketag
--rw-r--r-- 1 root root 1170 2020-04-30 04:11 ./slackware64/k/maketag.ez
--rw-r--r-- 1 root root 18 2020-04-30 04:11 ./slackware64/k/tagfile
+-rw-r--r-- 1 root root 317 2020-05-02 20:05 ./slackware64/k/kernel-source-5.4.38-noarch-1.txt
+-rw-r--r-- 1 root root 109937852 2020-05-02 20:05 ./slackware64/k/kernel-source-5.4.38-noarch-1.txz
+-rw-r--r-- 1 root root 163 2020-05-02 20:05 ./slackware64/k/kernel-source-5.4.38-noarch-1.txz.asc
+-rw-r--r-- 1 root root 1170 2020-05-03 06:27 ./slackware64/k/maketag
+-rw-r--r-- 1 root root 1170 2020-05-03 06:27 ./slackware64/k/maketag.ez
+-rw-r--r-- 1 root root 18 2020-05-03 06:27 ./slackware64/k/tagfile
drwxr-xr-x 2 root root 45056 2020-04-05 21:10 ./slackware64/kde
-rw-r--r-- 1 root root 319 2018-06-02 22:05 ./slackware64/kde/amarok-2.9.0-x86_64-3.txt
-rw-r--r-- 1 root root 47003780 2018-06-02 22:05 ./slackware64/kde/amarok-2.9.0-x86_64-3.txz
@@ -2511,7 +2511,7 @@ drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag.ez
-rw-r--r-- 1 root root 1500 2018-03-01 07:54 ./slackware64/kdei/tagfile
-drwxr-xr-x 2 root root 69632 2020-05-01 18:13 ./slackware64/l
+drwxr-xr-x 2 root root 69632 2020-05-03 07:00 ./slackware64/l
-rw-r--r-- 1 root root 338 2020-02-15 20:39 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-3.txt
-rw-r--r-- 1 root root 191012 2020-02-15 20:39 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-3.txz
-rw-r--r-- 1 root root 163 2020-02-15 20:39 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-3.txz.asc
@@ -3218,9 +3218,9 @@ drwxr-xr-x 2 root root 69632 2020-05-01 18:13 ./slackware64/l
-rw-r--r-- 1 root root 548 2018-04-13 15:08 ./slackware64/l/mm-1.4.2-x86_64-3.txt
-rw-r--r-- 1 root root 32916 2018-04-13 15:08 ./slackware64/l/mm-1.4.2-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:08 ./slackware64/l/mm-1.4.2-x86_64-3.txz.asc
--rw-r--r-- 1 root root 564 2020-04-08 21:35 ./slackware64/l/mozilla-nss-3.51.1-x86_64-1.txt
--rw-r--r-- 1 root root 1890960 2020-04-08 21:35 ./slackware64/l/mozilla-nss-3.51.1-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-08 21:35 ./slackware64/l/mozilla-nss-3.51.1-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 564 2020-05-03 02:13 ./slackware64/l/mozilla-nss-3.52-x86_64-1.txt
+-rw-r--r-- 1 root root 1913092 2020-05-03 02:13 ./slackware64/l/mozilla-nss-3.52-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 02:13 ./slackware64/l/mozilla-nss-3.52-x86_64-1.txz.asc
-rw-r--r-- 1 root root 397 2019-12-11 20:07 ./slackware64/l/mozjs60-60.9.0esr-x86_64-1.txt
-rw-r--r-- 1 root root 8098188 2019-12-11 20:07 ./slackware64/l/mozjs60-60.9.0esr-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-12-11 20:07 ./slackware64/l/mozjs60-60.9.0esr-x86_64-1.txz.asc
@@ -3338,9 +3338,9 @@ drwxr-xr-x 2 root root 69632 2020-05-01 18:13 ./slackware64/l
-rw-r--r-- 1 root root 365 2020-05-01 03:54 ./slackware64/l/python-chardet-3.0.4-x86_64-5.txt
-rw-r--r-- 1 root root 150052 2020-05-01 03:54 ./slackware64/l/python-chardet-3.0.4-x86_64-5.txz
-rw-r--r-- 1 root root 163 2020-05-01 03:54 ./slackware64/l/python-chardet-3.0.4-x86_64-5.txz.asc
--rw-r--r-- 1 root root 381 2020-04-16 20:44 ./slackware64/l/python-distro-1.4.0-x86_64-2.txt
--rw-r--r-- 1 root root 24440 2020-04-16 20:44 ./slackware64/l/python-distro-1.4.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-04-16 20:44 ./slackware64/l/python-distro-1.4.0-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 381 2020-05-03 01:46 ./slackware64/l/python-distro-1.5.0-x86_64-1.txt
+-rw-r--r-- 1 root root 24864 2020-05-03 01:46 ./slackware64/l/python-distro-1.5.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 01:46 ./slackware64/l/python-distro-1.5.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 560 2020-05-01 03:55 ./slackware64/l/python-docutils-0.16-x86_64-3.txt
-rw-r--r-- 1 root root 656896 2020-05-01 03:55 ./slackware64/l/python-docutils-0.16-x86_64-3.txz
-rw-r--r-- 1 root root 163 2020-05-01 03:55 ./slackware64/l/python-docutils-0.16-x86_64-3.txz.asc
@@ -3356,9 +3356,9 @@ drwxr-xr-x 2 root root 69632 2020-05-01 18:13 ./slackware64/l
-rw-r--r-- 1 root root 333 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txt
-rw-r--r-- 1 root root 48548 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txz
-rw-r--r-- 1 root root 163 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txz.asc
--rw-r--r-- 1 root root 526 2020-01-02 19:49 ./slackware64/l/python-pillow-7.0.0-x86_64-1.txt
--rw-r--r-- 1 root root 623892 2020-01-02 19:49 ./slackware64/l/python-pillow-7.0.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-01-02 19:49 ./slackware64/l/python-pillow-7.0.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 526 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txt
+-rw-r--r-- 1 root root 633852 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 280 2020-05-01 04:02 ./slackware64/l/python-ply-3.11-x86_64-3.txt
-rw-r--r-- 1 root root 71948 2020-05-01 04:02 ./slackware64/l/python-ply-3.11-x86_64-3.txz
-rw-r--r-- 1 root root 163 2020-05-01 04:02 ./slackware64/l/python-ply-3.11-x86_64-3.txz.asc
@@ -3498,9 +3498,9 @@ drwxr-xr-x 2 root root 69632 2020-05-01 18:13 ./slackware64/l
-rw-r--r-- 1 root root 590 2020-04-01 20:06 ./slackware64/l/utf8proc-2.5.0-x86_64-1.txt
-rw-r--r-- 1 root root 57212 2020-04-01 20:06 ./slackware64/l/utf8proc-2.5.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-04-01 20:06 ./slackware64/l/utf8proc-2.5.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 550 2020-02-15 05:58 ./slackware64/l/v4l-utils-1.18.0-x86_64-2.txt
--rw-r--r-- 1 root root 1164168 2020-02-15 05:58 ./slackware64/l/v4l-utils-1.18.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-02-15 05:58 ./slackware64/l/v4l-utils-1.18.0-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 550 2020-05-03 01:54 ./slackware64/l/v4l-utils-1.18.1-x86_64-1.txt
+-rw-r--r-- 1 root root 1163960 2020-05-03 01:54 ./slackware64/l/v4l-utils-1.18.1-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 01:54 ./slackware64/l/v4l-utils-1.18.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 255 2020-04-26 18:19 ./slackware64/l/vte-0.60.2-x86_64-1.txt
-rw-r--r-- 1 root root 303836 2020-04-26 18:19 ./slackware64/l/vte-0.60.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-04-26 18:19 ./slackware64/l/vte-0.60.2-x86_64-1.txz.asc
@@ -4875,7 +4875,7 @@ drwxr-xr-x 2 root root 65536 2020-05-01 18:13 ./slackware64/x
-rw-r--r-- 1 root root 213 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txt
-rw-r--r-- 1 root root 25288 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txz.asc
-drwxr-xr-x 2 root root 12288 2020-05-01 18:13 ./slackware64/xap
+drwxr-xr-x 2 root root 12288 2020-05-03 07:00 ./slackware64/xap
-rw-r--r-- 1 root root 625 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txt
-rw-r--r-- 1 root root 2733304 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txz
-rw-r--r-- 1 root root 163 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txz.asc
@@ -4973,9 +4973,9 @@ drwxr-xr-x 2 root root 12288 2020-05-01 18:13 ./slackware64/xap
-rw-r--r-- 1 root root 321 2020-02-03 19:57 ./slackware64/xap/sane-1.0.29-x86_64-1.txt
-rw-r--r-- 1 root root 3627928 2020-02-03 19:57 ./slackware64/xap/sane-1.0.29-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-02-03 19:57 ./slackware64/xap/sane-1.0.29-x86_64-1.txz.asc
--rw-r--r-- 1 root root 392 2020-03-04 01:10 ./slackware64/xap/seamonkey-2.53.1-x86_64-2.txt
--rw-r--r-- 1 root root 41967840 2020-03-04 01:10 ./slackware64/xap/seamonkey-2.53.1-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-03-04 01:10 ./slackware64/xap/seamonkey-2.53.1-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 392 2020-05-03 03:09 ./slackware64/xap/seamonkey-2.53.2-x86_64-1.txt
+-rw-r--r-- 1 root root 42056480 2020-05-03 03:09 ./slackware64/xap/seamonkey-2.53.2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-03 03:09 ./slackware64/xap/seamonkey-2.53.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 602 2018-04-13 17:38 ./slackware64/xap/seyon-2.20c-x86_64-4.txt
-rw-r--r-- 1 root root 115596 2018-04-13 17:38 ./slackware64/xap/seyon-2.20c-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-13 17:38 ./slackware64/xap/seyon-2.20c-x86_64-4.txz.asc
@@ -5115,11 +5115,11 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
-drwxr-xr-x 19 root root 4096 2020-05-01 18:18 ./source
--rw-r--r-- 1 root root 490500 2020-05-01 18:18 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-05-01 18:18 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 690933 2020-05-01 18:18 ./source/FILE_LIST
--rw-r--r-- 1 root root 20750971 2020-05-01 18:18 ./source/MANIFEST.bz2
+drwxr-xr-x 19 root root 4096 2020-05-03 07:05 ./source
+-rw-r--r-- 1 root root 490251 2020-05-03 07:05 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-03 07:05 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 690658 2020-05-03 07:05 ./source/FILE_LIST
+-rw-r--r-- 1 root root 20764053 2020-05-03 07:05 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
drwxr-xr-x 112 root root 4096 2020-04-01 23:41 ./source/a
-rw-r--r-- 1 root root 1034 2019-05-04 17:56 ./source/a/FTBFSlog
@@ -6909,9 +6909,9 @@ drwxr-xr-x 2 root root 4096 2020-01-16 18:56 ./source/d/make
-rw-r--r-- 1 root root 438 2018-02-16 20:42 ./source/d/make/make.glibc-2.27.glob.diff.gz
-rw-r--r-- 1 root root 323 2020-01-16 18:56 ./source/d/make/make.guile30.diff.gz
-rw-r--r-- 1 root root 918 2018-02-27 06:13 ./source/d/make/slack-desc
-drwxr-xr-x 2 root root 4096 2020-04-03 04:10 ./source/d/mercurial
+drwxr-xr-x 2 root root 4096 2020-05-03 01:42 ./source/d/mercurial
-rw-r--r-- 1 root root 279 2010-05-18 06:20 ./source/d/mercurial/doinst.sh.gz
--rw-r--r-- 1 root root 4386553 2020-04-02 16:14 ./source/d/mercurial/mercurial-5.3.2.tar.lz
+-rw-r--r-- 1 root root 4487217 2020-05-01 16:20 ./source/d/mercurial/mercurial-5.4.tar.lz
-rwxr-xr-x 1 root root 4114 2020-03-05 07:10 ./source/d/mercurial/mercurial.SlackBuild
-rw-r--r-- 1 root root 38 2017-12-02 19:13 ./source/d/mercurial/mercurial.url
-rw-r--r-- 1 root root 1245 2018-02-27 06:13 ./source/d/mercurial/slack-desc
@@ -7132,21 +7132,21 @@ drwxr-xr-x 2 root root 4096 2020-04-08 17:05 ./source/installer/sources/n
-rw-r--r-- 1 root root 1517276 2020-04-07 09:29 ./source/installer/sources/nano/nano-4.9.2.tar.xz
-rw-r--r-- 1 root root 833 2020-04-07 09:29 ./source/installer/sources/nano/nano-4.9.2.tar.xz.sig
-rw-r--r-- 1 root root 16894 2012-09-03 20:53 ./source/installer/usbimg2disk.sh
-drwxr-xr-x 4 root root 4096 2020-04-30 01:26 ./source/k
+drwxr-xr-x 4 root root 4096 2020-05-02 17:42 ./source/k
-rwxr-xr-x 1 root root 7861 2019-12-27 22:39 ./source/k/build-all-kernels.sh
-drwxr-xr-x 2 root root 4096 2020-04-30 01:38 ./source/k/kernel-configs
--rw-r--r-- 1 root root 216130 2020-04-30 01:34 ./source/k/kernel-configs/config-generic-5.4.36
--rw-r--r-- 1 root root 217665 2020-04-30 01:38 ./source/k/kernel-configs/config-generic-5.4.36.x64
--rw-r--r-- 1 root root 217807 2020-04-30 01:34 ./source/k/kernel-configs/config-generic-smp-5.4.36-smp
--rw-r--r-- 1 root root 216130 2020-04-30 01:35 ./source/k/kernel-configs/config-huge-5.4.36
--rw-r--r-- 1 root root 217665 2020-04-30 01:38 ./source/k/kernel-configs/config-huge-5.4.36.x64
--rw-r--r-- 1 root root 217807 2020-04-30 01:34 ./source/k/kernel-configs/config-huge-smp-5.4.36-smp
+drwxr-xr-x 2 root root 4096 2020-05-02 17:49 ./source/k/kernel-configs
+-rw-r--r-- 1 root root 216130 2020-05-02 17:46 ./source/k/kernel-configs/config-generic-5.4.38
+-rw-r--r-- 1 root root 217665 2020-05-02 17:48 ./source/k/kernel-configs/config-generic-5.4.38.x64
+-rw-r--r-- 1 root root 217807 2020-05-02 17:46 ./source/k/kernel-configs/config-generic-smp-5.4.38-smp
+-rw-r--r-- 1 root root 216130 2020-05-02 17:46 ./source/k/kernel-configs/config-huge-5.4.38
+-rw-r--r-- 1 root root 217665 2020-05-02 17:48 ./source/k/kernel-configs/config-huge-5.4.38.x64
+-rw-r--r-- 1 root root 217807 2020-05-02 17:46 ./source/k/kernel-configs/config-huge-smp-5.4.38-smp
-rwxr-xr-x 1 root root 7416 2019-11-15 20:12 ./source/k/kernel-generic.SlackBuild
-rwxr-xr-x 1 root root 3779 2019-09-29 23:48 ./source/k/kernel-headers.SlackBuild
-rwxr-xr-x 1 root root 5979 2019-11-15 20:12 ./source/k/kernel-modules.SlackBuild
-rwxr-xr-x 1 root root 7952 2019-11-15 18:40 ./source/k/kernel-source.SlackBuild
--rw-r--r-- 1 root root 989 2020-04-29 14:39 ./source/k/linux-5.4.36.tar.sign
--rw-r--r-- 1 root root 109524684 2020-04-29 14:39 ./source/k/linux-5.4.36.tar.xz
+-rw-r--r-- 1 root root 989 2020-05-02 15:36 ./source/k/linux-5.4.38.tar.sign
+-rw-r--r-- 1 root root 109518904 2020-05-02 15:36 ./source/k/linux-5.4.38.tar.xz
drwxr-xr-x 2 root root 4096 2018-03-05 18:29 ./source/k/slack-desc
-rw-r--r-- 1 root root 1138 2018-02-27 06:16 ./source/k/slack-desc/slack-desc.kernel-generic-smp.i686
-rw-r--r-- 1 root root 1041 2018-02-27 06:16 ./source/k/slack-desc/slack-desc.kernel-generic.i586
@@ -9548,14 +9548,14 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/mm
-rw-r--r-- 1 root root 248658 2006-08-15 07:05 ./source/l/mm/mm-1.4.2.tar.bz2
-rwxr-xr-x 1 root root 4602 2019-09-29 23:48 ./source/l/mm/mm.SlackBuild
-rw-r--r-- 1 root root 998 2018-02-27 06:12 ./source/l/mm/slack-desc
-drwxr-xr-x 2 root root 4096 2020-04-08 21:19 ./source/l/mozilla-nss
+drwxr-xr-x 2 root root 4096 2020-05-03 01:44 ./source/l/mozilla-nss
-rw-r--r-- 1 root root 25755 2008-02-27 08:35 ./source/l/mozilla-nss/MPL-1.1.txt
-rw-r--r-- 1 root root 18152 2009-01-01 08:10 ./source/l/mozilla-nss/faq.html
-rw-r--r-- 1 root root 17987 2007-06-28 20:04 ./source/l/mozilla-nss/gpl-2.0.txt
-rw-r--r-- 1 root root 26434 2009-04-08 16:39 ./source/l/mozilla-nss/lgpl-2.1.txt
--rwxr-xr-- 1 root root 6270 2020-04-08 21:20 ./source/l/mozilla-nss/mozilla-nss.SlackBuild
+-rwxr-xr-- 1 root root 6268 2020-05-03 01:59 ./source/l/mozilla-nss/mozilla-nss.SlackBuild
-rw-r--r-- 1 root root 715317 2020-01-31 22:11 ./source/l/mozilla-nss/nspr-4.25.tar.lz
--rw-r--r-- 1 root root 43202966 2020-04-08 15:13 ./source/l/mozilla-nss/nss-3.51.1.tar.lz
+-rw-r--r-- 1 root root 45746194 2020-05-01 21:14 ./source/l/mozilla-nss/nss-3.52.tar.lz
-rw-r--r-- 1 root root 2488 2012-04-29 21:05 ./source/l/mozilla-nss/nss-config.in
-rw-r--r-- 1 root root 1023 2018-02-27 06:12 ./source/l/mozilla-nss/slack-desc
drwxr-xr-x 4 root root 4096 2019-12-11 19:57 ./source/l/mozjs60
@@ -9805,9 +9805,9 @@ drwxr-xr-x 2 root root 4096 2019-12-29 19:15 ./source/l/python-chardet
-rw-r--r-- 1 root root 1439832 2017-06-08 14:32 ./source/l/python-chardet/chardet-3.0.4.tar.xz
-rwxr-xr-x 1 root root 2573 2020-05-01 03:54 ./source/l/python-chardet/python-chardet.SlackBuild
-rw-r--r-- 1 root root 859 2018-02-27 06:12 ./source/l/python-chardet/slack-desc
-drwxr-xr-x 2 root root 4096 2020-01-04 19:04 ./source/l/python-distro
--rw-r--r-- 1 root root 39662 2019-02-04 08:52 ./source/l/python-distro/distro-1.4.0.tar.lz
--rwxr-xr-x 1 root root 2684 2020-04-16 20:44 ./source/l/python-distro/python-distro.SlackBuild
+drwxr-xr-x 2 root root 4096 2020-05-03 01:46 ./source/l/python-distro
+-rw-r--r-- 1 root root 40158 2020-03-30 21:10 ./source/l/python-distro/distro-1.5.0.tar.lz
+-rwxr-xr-x 1 root root 2684 2020-05-03 01:46 ./source/l/python-distro/python-distro.SlackBuild
-rw-r--r-- 1 root root 32 2020-01-04 19:02 ./source/l/python-distro/python-distro.url
-rw-r--r-- 1 root root 874 2020-01-04 19:14 ./source/l/python-distro/slack-desc
drwxr-xr-x 2 root root 4096 2020-01-13 18:48 ./source/l/python-docutils
@@ -9835,9 +9835,10 @@ drwxr-xr-x 2 root root 4096 2020-03-06 01:41 ./source/l/python-packaging
-rw-r--r-- 1 root root 36 2020-01-25 18:33 ./source/l/python-packaging/packaging.url
-rwxr-xr-x 1 root root 2904 2020-05-01 04:00 ./source/l/python-packaging/python-packaging.SlackBuild
-rw-r--r-- 1 root root 829 2018-08-27 18:22 ./source/l/python-packaging/slack-desc
-drwxr-xr-x 2 root root 4096 2020-01-02 19:47 ./source/l/python-pillow
--rw-r--r-- 1 root root 472665 2020-01-02 05:19 ./source/l/python-pillow/Pillow-7.0.0.tar.lz
+drwxr-xr-x 2 root root 4096 2020-05-03 01:49 ./source/l/python-pillow
+-rw-r--r-- 1 root root 572136 2020-05-03 01:48 ./source/l/python-pillow/Pillow-7.1.2.tar.lz
-rwxr-xr-x 1 root root 3337 2020-01-02 19:48 ./source/l/python-pillow/python-pillow.SlackBuild
+-rw-r--r-- 1 root root 40 2020-05-03 01:46 ./source/l/python-pillow/python-pillow.url
-rw-r--r-- 1 root root 987 2019-10-02 22:29 ./source/l/python-pillow/slack-desc
drwxr-xr-x 2 root root 4096 2019-12-29 21:06 ./source/l/python-ply
-rw-r--r-- 1 root root 121069 2018-02-15 19:01 ./source/l/python-ply/ply-3.11.tar.lz
@@ -10189,10 +10190,10 @@ drwxr-xr-x 2 root root 4096 2020-04-01 20:06 ./source/l/utf8proc
-rw-r--r-- 1 root root 95048 2020-03-28 00:36 ./source/l/utf8proc/utf8proc-2.5.0.tar.lz
-rwxr-xr-x 1 root root 4483 2019-09-29 23:48 ./source/l/utf8proc/utf8proc.SlackBuild
-rw-r--r-- 1 root root 41 2018-07-14 21:26 ./source/l/utf8proc/utf8proc.url
-drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/v4l-utils
+drwxr-xr-x 2 root root 4096 2020-05-03 01:52 ./source/l/v4l-utils
-rw-r--r-- 1 root root 1006 2018-02-27 06:12 ./source/l/v4l-utils/slack-desc
--rw-r--r-- 1 root root 1368463 2019-09-22 10:13 ./source/l/v4l-utils/v4l-utils-1.18.0.tar.lz
--rwxr-xr-x 1 root root 4239 2020-02-15 05:56 ./source/l/v4l-utils/v4l-utils.SlackBuild
+-rw-r--r-- 1 root root 1368953 2020-05-02 12:23 ./source/l/v4l-utils/v4l-utils-1.18.1.tar.lz
+-rwxr-xr-x 1 root root 4239 2020-05-03 01:52 ./source/l/v4l-utils/v4l-utils.SlackBuild
-rw-r--r-- 1 root root 41 2018-02-16 22:14 ./source/l/v4l-utils/v4l-utils.url
drwxr-xr-x 2 root root 4096 2020-04-26 18:18 ./source/l/vte
-rw-r--r-- 1 root root 706 2018-02-27 06:12 ./source/l/vte/slack-desc
@@ -12408,7 +12409,7 @@ drwxr-xr-x 2 root root 12288 2020-02-19 20:30 ./source/x/x11/slack-desc
-rw-r--r-- 1 root root 880 2012-04-08 04:32 ./source/x/x11/slack-desc/xfsinfo
-rw-r--r-- 1 root root 718 2013-08-20 21:51 ./source/x/x11/slack-desc/xfwp
-rw-r--r-- 1 root root 706 2012-04-08 04:33 ./source/x/x11/slack-desc/xgamma
--rw-r--r-- 1 root root 633 2012-04-08 04:33 ./source/x/x11/slack-desc/xgc
+-rw-r--r-- 1 root root 633 2012-04-08 04:33 ./source/x/x11/slack-desc/xgc
-rw-r--r-- 1 root root 673 2012-04-08 04:33 ./source/x/x11/slack-desc/xhost
-rw-r--r-- 1 root root 867 2012-04-08 04:34 ./source/x/x11/slack-desc/xineramaproto
-rw-r--r-- 1 root root 769 2018-02-26 23:01 ./source/x/x11/slack-desc/xinit
@@ -12989,22 +12990,18 @@ drwxr-xr-x 2 root root 4096 2020-02-03 19:54 ./source/xap/sane
-rw-r--r-- 1 root root 172596 2005-09-18 07:21 ./source/xap/sane/sane-frontends-1.0.14.tar.xz
-rwxr-xr-x 1 root root 5743 2020-02-03 19:54 ./source/xap/sane/sane.SlackBuild
-rw-r--r-- 1 root root 773 2018-02-27 06:13 ./source/xap/sane/slack-desc
-drwxr-xr-x 3 root root 4096 2020-03-02 05:31 ./source/xap/seamonkey
+drwxr-xr-x 3 root root 4096 2020-05-03 02:21 ./source/xap/seamonkey
drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/seamonkey/autoconf
-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz
-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/seamonkey/autoconf/autoconf-2.13.tar.xz
-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./source/xap/seamonkey/autoconf/autoconf.build
-rw-r--r-- 1 root root 248 2019-09-08 19:23 ./source/xap/seamonkey/doinst.sh.gz
--rw-r--r-- 1 root root 290149116 2020-02-29 08:34 ./source/xap/seamonkey/seamonkey-2.53.1.source.tar.xz
+-rw-r--r-- 1 root root 291744036 2020-05-03 00:17 ./source/xap/seamonkey/seamonkey-2.53.2.source.tar.xz
-rw-r--r-- 1 root root 12796 2006-02-09 03:17 ./source/xap/seamonkey/seamonkey-icon.png
-rw-r--r-- 1 root root 185 2006-02-09 03:40 ./source/xap/seamonkey/seamonkey-mail-icon.png
-rw-r--r-- 1 root root 207 2006-02-09 03:23 ./source/xap/seamonkey/seamonkey-mail.desktop
--rwxr-xr-x 1 root root 8984 2020-03-03 23:59 ./source/xap/seamonkey/seamonkey.SlackBuild
+-rwxr-xr-x 1 root root 8571 2020-05-03 02:21 ./source/xap/seamonkey/seamonkey.SlackBuild
-rw-r--r-- 1 root root 315 2013-08-13 03:23 ./source/xap/seamonkey/seamonkey.desktop
--rw-r--r-- 1 root root 483 2020-03-01 04:44 ./source/xap/seamonkey/seamonkey.gettid.patch.gz
--rw-r--r-- 1 root root 584 2020-03-01 00:11 ./source/xap/seamonkey/seamonkey.nsstring.patch.gz
--rw-r--r-- 1 root root 3254 2020-03-01 02:38 ./source/xap/seamonkey/seamonkey.rust.encoding_rs.diff.gz
--rw-r--r-- 1 root root 24552 2020-03-01 03:17 ./source/xap/seamonkey/seamonkey.rust14x.diff.gz
-rw-r--r-- 1 root root 849 2020-03-01 04:26 ./source/xap/seamonkey/slack-desc
-rw-r--r-- 1 root root 341 2017-07-21 16:21 ./source/xap/seamonkey/sm.ui.scrollToClick.diff.gz
drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/xap/seyon
@@ -13483,9 +13480,9 @@ drwxr-xr-x 2 root root 4096 2020-01-02 20:41 ./testing/source/PAM/a/pam/pa
-rw-r--r-- 1 root root 337 2020-02-15 20:34 ./testing/source/PAM/buildlist-fix-lib-security-location
-rwxr-xr-x 1 root root 14025 2018-11-20 03:08 ./testing/source/PAM/make_world.sh
lrwxrwxrwx 1 root root 15 2020-02-05 04:56 ./testing/source/PAM/source -> ../../../source
-drwxr-xr-x 2 root root 4096 2020-04-30 04:57 ./usb-and-pxe-installers
+drwxr-xr-x 2 root root 4096 2020-05-03 06:47 ./usb-and-pxe-installers
-rw-r--r-- 1 root root 31203 2011-03-21 21:21 ./usb-and-pxe-installers/README_PXE.TXT
-rw-r--r-- 1 root root 9197 2013-09-25 04:33 ./usb-and-pxe-installers/README_USB.TXT
-rw-r--r-- 1 root root 574 2013-03-27 04:59 ./usb-and-pxe-installers/pxelinux.cfg_default
--rw-r--r-- 1 root root 55477248 2020-04-30 04:45 ./usb-and-pxe-installers/usbboot.img
+-rw-r--r-- 1 root root 55464960 2020-05-03 06:42 ./usb-and-pxe-installers/usbboot.img
-rw-r--r-- 1 root root 16042 2019-08-05 07:08 ./usb-and-pxe-installers/usbimg2disk.sh
diff --git a/README.initrd b/README.initrd
index 9b958a716..46ea4ef83 100644
--- a/README.initrd
+++ b/README.initrd
@@ -1,7 +1,7 @@
Slackware initrd mini HOWTO
by Patrick Volkerding, volkerdi@slackware.com
-Thu Apr 30 04:11:04 UTC 2020
+Sun May 3 06:27:35 UTC 2020
This document describes how to create and install an initrd, which may be
required to use the 4.x kernel. Also see "man mkinitrd".
@@ -33,15 +33,15 @@ flexible to ship a generic kernel and a set of kernel modules for it.
The easiest way to make the initrd is to use the mkinitrd script included
in Slackware's mkinitrd package. We'll walk through the process of
-upgrading to the generic 5.4.36 Linux kernel using the packages
+upgrading to the generic 5.4.38 Linux kernel using the packages
found in Slackware's slackware/a/ directory.
First, make sure the kernel, kernel modules, and mkinitrd package are
installed (the current version numbers might be a little different, so
this is just an example):
- installpkg kernel-generic-5.4.36-x86_64-1.txz
- installpkg kernel-modules-5.4.36-x86_64-1.txz
+ installpkg kernel-generic-5.4.38-x86_64-1.txz
+ installpkg kernel-modules-5.4.38-x86_64-1.txz
installpkg mkinitrd-1.4.11-x86_64-15.txz
Change into the /boot directory:
@@ -52,7 +52,7 @@ Now you'll want to run "mkinitrd". I'm using ext4 for my root filesystem,
and since the disk controller requires no special support the ext4 module
will be the only one I need to load:
- mkinitrd -c -k 5.4.36 -m ext4
+ mkinitrd -c -k 5.4.38 -m ext4
This should do two things. First, it will create a directory
/boot/initrd-tree containing the initrd's filesystem. Then it will
@@ -61,10 +61,10 @@ you could make some additional changes in /boot/initrd-tree/ and
then run mkinitrd again without options to rebuild the image. That's
optional, though, and only advanced users will need to think about that.
-Here's another example: Build an initrd image using Linux 5.4.36
+Here's another example: Build an initrd image using Linux 5.4.38
kernel modules for a system with an ext4 root partition on /dev/sdb3:
- mkinitrd -c -k 5.4.36 -m ext4 -f ext4 -r /dev/sdb3
+ mkinitrd -c -k 5.4.38 -m ext4 -f ext4 -r /dev/sdb3
4. Now that I've built an initrd, how do I use it?
diff --git a/isolinux/message.txt b/isolinux/message.txt
index 9e171e5df..301f8fb72 100644
--- a/isolinux/message.txt
+++ b/isolinux/message.txt
@@ -1,5 +1,5 @@
-Welcome to 09Slackware6407 version 15.0 (Linux kernel 5.4.36)!
+Welcome to 09Slackware6407 version 15.0 (Linux kernel 5.4.38)!
If you need to pass extra parameters to the kernel, enter them at the prompt
below after the name of the kernel to boot (e.g., huge.s).
diff --git a/kernels/VERSIONS.TXT b/kernels/VERSIONS.TXT
index 928b71374..386c6124e 100644
--- a/kernels/VERSIONS.TXT
+++ b/kernels/VERSIONS.TXT
@@ -1,3 +1,3 @@
-These kernels are version 5.4.36.
+These kernels are version 5.4.38.
diff --git a/recompress.sh b/recompress.sh
index 36f2f5608..42220228f 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -1136,11 +1136,7 @@ gzip ./source/xap/xgames/xlander-2009-07-18.diff
gzip ./source/xap/xgames/xcuckoo.diff
gzip ./source/xap/xgames/xcolormap.diff
gzip ./source/xap/xgames/spider.diff
-gzip ./source/xap/seamonkey/seamonkey.rust.encoding_rs.diff
gzip ./source/xap/seamonkey/autoconf/autoconf-2.13-consolidated_fixes-1.patch
-gzip ./source/xap/seamonkey/seamonkey.rust14x.diff
-gzip ./source/xap/seamonkey/seamonkey.gettid.patch
-gzip ./source/xap/seamonkey/seamonkey.nsstring.patch
gzip ./source/xap/seamonkey/doinst.sh
gzip ./source/xap/seamonkey/sm.ui.scrollToClick.diff
gzip ./source/xap/gucharmap/doinst.sh
diff --git a/slackware64/a/maketag b/slackware64/a/maketag
index 32500b39f..8c6622310 100644
--- a/slackware64/a/maketag
+++ b/slackware64/a/maketag
@@ -61,9 +61,9 @@ system. :^) Press ENTER when you are done." 21 76 10 \
"jfsutils" "Utilities for IBM's Journaled Filesystem" "on" \
"kbd" "Change keyboard and console mappings" "on" \
"kernel-firmware" "Linux kernel firmware -- REQUIRED" "on" \
-"kernel-generic" "Generic 5.4.36 kernel (needs an initrd)" "on" \
-"kernel-huge" "Loaded 5.4.36 Linux kernel" "on" \
-"kernel-modules" "Linux 5.4.36 kernel modules -- REQUIRED" "on" \
+"kernel-generic" "Generic 5.4.38 kernel (needs an initrd)" "on" \
+"kernel-huge" "Loaded 5.4.38 Linux kernel" "on" \
+"kernel-modules" "Linux 5.4.38 kernel modules -- REQUIRED" "on" \
"kmod" "Kernel module utilities -- REQUIRED" "on" \
"lbzip2" "Parallel bzip2 compressor" "on" \
"less" "A text pager utility - REQUIRED" "on" \
diff --git a/slackware64/a/maketag.ez b/slackware64/a/maketag.ez
index 32500b39f..8c6622310 100644
--- a/slackware64/a/maketag.ez
+++ b/slackware64/a/maketag.ez
@@ -61,9 +61,9 @@ system. :^) Press ENTER when you are done." 21 76 10 \
"jfsutils" "Utilities for IBM's Journaled Filesystem" "on" \
"kbd" "Change keyboard and console mappings" "on" \
"kernel-firmware" "Linux kernel firmware -- REQUIRED" "on" \
-"kernel-generic" "Generic 5.4.36 kernel (needs an initrd)" "on" \
-"kernel-huge" "Loaded 5.4.36 Linux kernel" "on" \
-"kernel-modules" "Linux 5.4.36 kernel modules -- REQUIRED" "on" \
+"kernel-generic" "Generic 5.4.38 kernel (needs an initrd)" "on" \
+"kernel-huge" "Loaded 5.4.38 Linux kernel" "on" \
+"kernel-modules" "Linux 5.4.38 kernel modules -- REQUIRED" "on" \
"kmod" "Kernel module utilities -- REQUIRED" "on" \
"lbzip2" "Parallel bzip2 compressor" "on" \
"less" "A text pager utility - REQUIRED" "on" \
diff --git a/slackware64/k/maketag b/slackware64/k/maketag
index 849cc53d2..d342804c7 100644
--- a/slackware64/k/maketag
+++ b/slackware64/k/maketag
@@ -21,7 +21,7 @@ from series K. Use the UP/DOWN keys to scroll through the list, and \
the SPACE key to deselect any items you don't want to install. \
Press ENTER when you are \
done." 11 70 1 \
-"kernel-source" "Linux 5.4.36 kernel source" "on" \
+"kernel-source" "Linux 5.4.38 kernel source" "on" \
2> $TMP/SeTpkgs
if [ $? = 1 -o $? = 255 ]; then
rm -f $TMP/SeTpkgs
diff --git a/slackware64/k/maketag.ez b/slackware64/k/maketag.ez
index 849cc53d2..d342804c7 100644
--- a/slackware64/k/maketag.ez
+++ b/slackware64/k/maketag.ez
@@ -21,7 +21,7 @@ from series K. Use the UP/DOWN keys to scroll through the list, and \
the SPACE key to deselect any items you don't want to install. \
Press ENTER when you are \
done." 11 70 1 \
-"kernel-source" "Linux 5.4.36 kernel source" "on" \
+"kernel-source" "Linux 5.4.38 kernel source" "on" \
2> $TMP/SeTpkgs
if [ $? = 1 -o $? = 255 ]; then
rm -f $TMP/SeTpkgs
diff --git a/source/k/kernel-configs/config-generic-5.4.36 b/source/k/kernel-configs/config-generic-5.4.38
index 5fa90c9cf..62b4c813b 100644
--- a/source/k/kernel-configs/config-generic-5.4.36
+++ b/source/k/kernel-configs/config-generic-5.4.38
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/k/kernel-configs/config-generic-5.4.36.x64 b/source/k/kernel-configs/config-generic-5.4.38.x64
index eb2ee8155..bbb5177c2 100644
--- a/source/k/kernel-configs/config-generic-5.4.36.x64
+++ b/source/k/kernel-configs/config-generic-5.4.38.x64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/k/kernel-configs/config-generic-smp-5.4.36-smp b/source/k/kernel-configs/config-generic-smp-5.4.38-smp
index d2eaec8c2..3f60751ad 100644
--- a/source/k/kernel-configs/config-generic-smp-5.4.36-smp
+++ b/source/k/kernel-configs/config-generic-smp-5.4.38-smp
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/k/kernel-configs/config-huge-5.4.36 b/source/k/kernel-configs/config-huge-5.4.38
index 7f9c9d9ec..62ac67a2a 100644
--- a/source/k/kernel-configs/config-huge-5.4.36
+++ b/source/k/kernel-configs/config-huge-5.4.38
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/k/kernel-configs/config-huge-5.4.36.x64 b/source/k/kernel-configs/config-huge-5.4.38.x64
index 4ce198ad5..5a54643a1 100644
--- a/source/k/kernel-configs/config-huge-5.4.36.x64
+++ b/source/k/kernel-configs/config-huge-5.4.38.x64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/k/kernel-configs/config-huge-smp-5.4.36-smp b/source/k/kernel-configs/config-huge-smp-5.4.38-smp
index df96f73e5..847121d3c 100644
--- a/source/k/kernel-configs/config-huge-smp-5.4.36-smp
+++ b/source/k/kernel-configs/config-huge-smp-5.4.38-smp
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.36 Kernel Configuration
+# Linux/x86 5.4.38 Kernel Configuration
#
#
diff --git a/source/l/mozilla-nss/mozilla-nss.SlackBuild b/source/l/mozilla-nss/mozilla-nss.SlackBuild
index 69f32772b..4f153de07 100755
--- a/source/l/mozilla-nss/mozilla-nss.SlackBuild
+++ b/source/l/mozilla-nss/mozilla-nss.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=mozilla-nss
SRCNAM=nss
-VERSION=${VERSION:-3.51.1}
+VERSION=${VERSION:-3.52}
NSPR=${NSPR:-4.25}
BUILD=${BUILD:-1}
diff --git a/source/l/python-distro/python-distro.SlackBuild b/source/l/python-distro/python-distro.SlackBuild
index c6ac2d182..ca273b50d 100755
--- a/source/l/python-distro/python-distro.SlackBuild
+++ b/source/l/python-distro/python-distro.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=python-distro
SRCNAM=distro
VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
diff --git a/source/l/python-pillow/python-pillow.url b/source/l/python-pillow/python-pillow.url
new file mode 100644
index 000000000..ec278221f
--- /dev/null
+++ b/source/l/python-pillow/python-pillow.url
@@ -0,0 +1 @@
+https://github.com/python-pillow/Pillow
diff --git a/source/l/v4l-utils/v4l-utils.SlackBuild b/source/l/v4l-utils/v4l-utils.SlackBuild
index 47b6cc513..9fc5dd8d7 100755
--- a/source/l/v4l-utils/v4l-utils.SlackBuild
+++ b/source/l/v4l-utils/v4l-utils.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=v4l-utils
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/xap/seamonkey/seamonkey.SlackBuild b/source/xap/seamonkey/seamonkey.SlackBuild
index 817221bf6..feacb5c11 100755
--- a/source/xap/seamonkey/seamonkey.SlackBuild
+++ b/source/xap/seamonkey/seamonkey.SlackBuild
@@ -26,7 +26,7 @@ PKGNAM=seamonkey
TARBALLVER=${VERSION:-$(basename $(ls seamonkey-*.tar.* | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)}
# Strip the end from beta versions:
VERSION=$(echo $TARBALLVER | cut -f 1 -d b)
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -122,16 +122,6 @@ cd seamonkey-${TARBALLVER} || exit 1
# Retain GTK+ v2 scrolling behavior:
zcat $CWD/sm.ui.scrollToClick.diff.gz | patch -p1 --verbose || exit 1
-# Fix for glibc-2.30's included gettid():
-zcat $CWD/seamonkey.gettid.patch.gz | patch -p1 --verbose || exit 1
-
-# Don't fail on a Rust warning due to deprecated syntax:
-zcat $CWD/seamonkey.nsstring.patch.gz | patch -p0 --verbose || exit 1
-
-# More Rust syntax changes:
-zcat $CWD/seamonkey.rust14x.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/seamonkey.rust.encoding_rs.diff.gz | patch -p1 --verbose || exit 1
-
# Make sure the perms/ownerships are sane:
chown -R root:root .
find . \
diff --git a/source/xap/seamonkey/seamonkey.gettid.patch b/source/xap/seamonkey/seamonkey.gettid.patch
deleted file mode 100644
index 42a39247b..000000000
--- a/source/xap/seamonkey/seamonkey.gettid.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- ./mozilla/tools/profiler/core/platform.h.orig 2020-02-17 17:39:44.000000000 -0600
-+++ ./mozilla/tools/profiler/core/platform.h 2020-02-29 22:43:51.381996340 -0600
-@@ -43,32 +43,6 @@
- #include <vector>
- #include "StackTop.h"
-
--// We need a definition of gettid(), but glibc doesn't provide a
--// wrapper for it.
--#if defined(__GLIBC__)
--#include <unistd.h>
--#include <sys/syscall.h>
--static inline pid_t gettid()
--{
-- return (pid_t) syscall(SYS_gettid);
--}
--#elif defined(GP_OS_darwin)
--#include <unistd.h>
--#include <sys/syscall.h>
--static inline pid_t gettid()
--{
-- return (pid_t) syscall(SYS_thread_selfid);
--}
--#elif defined(GP_OS_android)
--#include <unistd.h>
--#elif defined(GP_OS_windows)
--#include <windows.h>
--#include <process.h>
--#ifndef getpid
--#define getpid _getpid
--#endif
--#endif
--
- extern mozilla::LazyLogModule gProfilerLog;
-
- // These are for MOZ_LOG="prof:3" or higher. It's the default logging level for
diff --git a/source/xap/seamonkey/seamonkey.nsstring.patch b/source/xap/seamonkey/seamonkey.nsstring.patch
deleted file mode 100644
index 83f5dd87e..000000000
--- a/source/xap/seamonkey/seamonkey.nsstring.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-# rust-1.39 deprecated the "try!" call in favor of "?" which then breaks
-# nsstring because it treats warnings as errors.
-
-diff -Nrup -U 8 mozilla/xpcom/rust/nsstring/src/lib.rs mozilla-OK/xpcom/rust/nsstring/src/lib.rs
---- mozilla/xpcom/rust/nsstring/src/lib.rs 2020-02-25 03:10:53.802918476 +0300
-+++ mozilla-OK/xpcom/rust/nsstring/src/lib.rs 2020-02-25 00:30:21.593463335 +0300
-@@ -108,17 +108,16 @@
- //! similar to an `ns[C]String<'static>`, however, it does not have a `Drop`
- //! implementation.
- //!
- //! If this type is dropped in rust, it will not free its backing storage. This
- //! can be useful when implementing FFI types which contain `ns[C]String` members
- //! which invoke their member's destructors through C++ code.
-
- #![allow(non_camel_case_types)]
--#![deny(warnings)]
-
- #[macro_use]
- extern crate bitflags;
-
- use std::ops::{Deref, DerefMut};
- use std::marker::PhantomData;
- use std::borrow;
- use std::slice;
diff --git a/source/xap/seamonkey/seamonkey.rust.encoding_rs.diff b/source/xap/seamonkey/seamonkey.rust.encoding_rs.diff
deleted file mode 100644
index cf96490dc..000000000
--- a/source/xap/seamonkey/seamonkey.rust.encoding_rs.diff
+++ /dev/null
@@ -1,17 +0,0 @@
---- ./mozilla/third_party/rust/encoding_rs/src/utf_16.rs.orig 2020-02-17 17:39:16.000000000 -0600
-+++ ./mozilla/third_party/rust/encoding_rs/src/utf_16.rs 2020-02-29 18:36:54.760363683 -0600
-@@ -30,7 +30,7 @@
- )
- }
-
-- pub fn additional_from_state(&self) -> usize() {
-+ pub fn additional_from_state(&self) -> usize {
- 1 + if self.lead_byte.is_some() { 1 } else { 0 } +
- if self.lead_surrogate == 0 { 0 } else { 2 }
- }
---- ./mozilla/third_party/rust/encoding_rs/.cargo-checksum.json.orig 2020-02-17 17:39:16.000000000 -0600
-+++ ./mozilla/third_party/rust/encoding_rs/.cargo-checksum.json 2020-02-29 20:36:51.768670989 -0600
-@@ -1 +1 @@
--{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".travis.yml":"4d1af7257c9619f7ae66fc271ba2c1be5f063640ae8ceaa235c8c8aaf32f44ea","CONTRIBUTING.md":"e4ffa92c979c7e6ca7b676842a708ea05b84181327fcde43dfcd8038b678a057","COPYRIGHT":"20d4fff11cca11529df3f02096fbe8ffe350219cdb07cdedea34e6a762866da5","Cargo.toml":"b74676e1affb0a2b528507be488bd9588db646b3b05807dada63cbe7b0747fc6","Ideas.md":"c1be4cc91621f52f38ea7febda7a4bb68086189cacc834c7edac4ba1a9da02fe","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"74aa8b6d04c36bb640ee81187a3f24a2fa94e36d4c1d4f2ca164c3784ae87a83","README.md":"276d801faf4d6347c3ea32ae252cab95df653c846beaac535c5d70cf32094f5e","generate-encoding-data.py":"0b62de6d3b6368166b78a9259f06dc8d0f558504a0ed866dbe75dc2efb4bf464","rustfmt.toml":"c01c06dfbdfcf30730535aab911d69068febb921e2faef9571ceeb6a5c2a3eab","src/ascii.rs":"240c607d3bad850c57d1e96871d5c0371278ed3923c38354bbb4c8a876c9a515","src/big5.rs":"614d479aabc63007f778d1f776a37b885e13d20b7c6c7a2818a729bde342f8a6","src/data.rs":"412c842c698c3ce1cec4a27ab19ca275372ac28940ac49cdf3e0dad71a2c2812","src/euc_jp.rs":"feda0ade5e1c3e4abd7637c59373b977662007990fd164ea7db1acc502ba3534","src/euc_kr.rs":"23e08359ccbe7602f3a90fce78dc76fd4065c236820ac0d11c9d9325045da0e6","src/gb18030.rs":"aa9de27a41715dfb02a3b9161d86e3775f635f625f70d3abaadcd583ee7022c0","src/handles.rs":"8b0691ab21d638bd20078e33247f13afbc8012ff4b843a2fd03e3314353e8520","src/iso_2022_jp.rs":"285e7cea6df41d182a345a0f394a2348b1c313f0d55ed48c349824f2a6aff526","src/lib.rs":"dad6465f541ccdb171312879999d842dcbf11bc09119d81963df3a20f7d4e474","src/macros.rs":"9ab30e7194f61f268cd7d899cabb06ff9ca7717663926fd583b20334f49ac8d3","src/replacement.rs":"782f03f04d110e9a0656262bf4296aa0ab8199e196cb63239c30d9649996caa4","src/shift_jis.rs":"84df4ff58b60e0827d6c0c7049f2cf19033f2b9e25a9186bcfb0bbb05e87b380","src/simd_funcs.rs":"ff30e10bfb58fb8f56f0cc0b4dbcc4af6b343487562ee279ace8b31afd7bcccc","src/single_byte.rs":"0342a921427ed160f5cbe4532490aff5db00886a36b70273f54d8f6a9dcf6974","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"0bcf7eeb8bb33cbc88bd3bd8462437501a43055db02c40a12a15fae8e68dd1cb","src/testing.rs":"60f85c6fb63fd4ab62e90dfa005920e79e0e1885795dc13a7a3c1980507925b1","src/utf_16.rs":"8155c1c0acaab2826ee9f99ba911fbd3125707d797327e630977bc2f3f9b1064","src/utf_8.rs":"14cd64de87d8fc5f814f52f76390bda0b4c705da98e73e376fb424ca02119ba5","src/utf_8_core.rs":"0229de223eef17ad16751a646bcd3839c24f24069d660a4dc61b8a5fad19d16f","src/variant.rs":"93dfec2dcfc9fd9711bb55d48177f4a0e9479c7fbd055f08db3853338569da83","src/x_user_defined.rs":"420fae797ea94e7a51eb005b97621ab32d68a8532c565afc60ecce6bdd84b6bd"},"package":"e00a1b1e95eb46988805ceee6f34cd95c46a6753e290cb3ff0486931989d4a4c"}
-\ No newline at end of file
-+{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".travis.yml":"4d1af7257c9619f7ae66fc271ba2c1be5f063640ae8ceaa235c8c8aaf32f44ea","CONTRIBUTING.md":"e4ffa92c979c7e6ca7b676842a708ea05b84181327fcde43dfcd8038b678a057","COPYRIGHT":"20d4fff11cca11529df3f02096fbe8ffe350219cdb07cdedea34e6a762866da5","Cargo.toml":"b74676e1affb0a2b528507be488bd9588db646b3b05807dada63cbe7b0747fc6","Ideas.md":"c1be4cc91621f52f38ea7febda7a4bb68086189cacc834c7edac4ba1a9da02fe","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"74aa8b6d04c36bb640ee81187a3f24a2fa94e36d4c1d4f2ca164c3784ae87a83","README.md":"276d801faf4d6347c3ea32ae252cab95df653c846beaac535c5d70cf32094f5e","generate-encoding-data.py":"0b62de6d3b6368166b78a9259f06dc8d0f558504a0ed866dbe75dc2efb4bf464","rustfmt.toml":"c01c06dfbdfcf30730535aab911d69068febb921e2faef9571ceeb6a5c2a3eab","src/ascii.rs":"240c607d3bad850c57d1e96871d5c0371278ed3923c38354bbb4c8a876c9a515","src/big5.rs":"614d479aabc63007f778d1f776a37b885e13d20b7c6c7a2818a729bde342f8a6","src/data.rs":"412c842c698c3ce1cec4a27ab19ca275372ac28940ac49cdf3e0dad71a2c2812","src/euc_jp.rs":"feda0ade5e1c3e4abd7637c59373b977662007990fd164ea7db1acc502ba3534","src/euc_kr.rs":"23e08359ccbe7602f3a90fce78dc76fd4065c236820ac0d11c9d9325045da0e6","src/gb18030.rs":"aa9de27a41715dfb02a3b9161d86e3775f635f625f70d3abaadcd583ee7022c0","src/handles.rs":"8b0691ab21d638bd20078e33247f13afbc8012ff4b843a2fd03e3314353e8520","src/iso_2022_jp.rs":"285e7cea6df41d182a345a0f394a2348b1c313f0d55ed48c349824f2a6aff526","src/lib.rs":"dad6465f541ccdb171312879999d842dcbf11bc09119d81963df3a20f7d4e474","src/macros.rs":"9ab30e7194f61f268cd7d899cabb06ff9ca7717663926fd583b20334f49ac8d3","src/replacement.rs":"782f03f04d110e9a0656262bf4296aa0ab8199e196cb63239c30d9649996caa4","src/shift_jis.rs":"84df4ff58b60e0827d6c0c7049f2cf19033f2b9e25a9186bcfb0bbb05e87b380","src/simd_funcs.rs":"ff30e10bfb58fb8f56f0cc0b4dbcc4af6b343487562ee279ace8b31afd7bcccc","src/single_byte.rs":"0342a921427ed160f5cbe4532490aff5db00886a36b70273f54d8f6a9dcf6974","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"0bcf7eeb8bb33cbc88bd3bd8462437501a43055db02c40a12a15fae8e68dd1cb","src/testing.rs":"60f85c6fb63fd4ab62e90dfa005920e79e0e1885795dc13a7a3c1980507925b1","src/utf_16.rs":"1d2c40857c946f6eecf724efc60a196865b4d84a59b08b42fbe4576fa8308fd0","src/utf_8.rs":"14cd64de87d8fc5f814f52f76390bda0b4c705da98e73e376fb424ca02119ba5","src/utf_8_core.rs":"0229de223eef17ad16751a646bcd3839c24f24069d660a4dc61b8a5fad19d16f","src/variant.rs":"93dfec2dcfc9fd9711bb55d48177f4a0e9479c7fbd055f08db3853338569da83","src/x_user_defined.rs":"420fae797ea94e7a51eb005b97621ab32d68a8532c565afc60ecce6bdd84b6bd"},"package":"e00a1b1e95eb46988805ceee6f34cd95c46a6753e290cb3ff0486931989d4a4c"}
diff --git a/source/xap/seamonkey/seamonkey.rust14x.diff b/source/xap/seamonkey/seamonkey.rust14x.diff
deleted file mode 100644
index 3287eed0b..000000000
--- a/source/xap/seamonkey/seamonkey.rust14x.diff
+++ /dev/null
@@ -1,4279 +0,0 @@
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/netwerk/base/rust-url-capi/Cargo.toml seamonkey-2.53.1/mozilla/netwerk/base/rust-url-capi/Cargo.toml
---- seamonkey-2.53.1.orig/mozilla/netwerk/base/rust-url-capi/Cargo.toml 2020-02-17 17:37:59.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/netwerk/base/rust-url-capi/Cargo.toml 2020-02-29 21:16:23.109772243 -0600
-@@ -8,6 +8,6 @@
-
- [dependencies]
- libc = "0.2.0"
--url = "1.5.1"
-+url = "1.7.2"
- nsstring = { path = "../../../xpcom/rust/nsstring" }
- nserror = { path = "../../../xpcom/rust/nserror" }
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/.cargo-checksum.json seamonkey-2.53.1/mozilla/third_party/rust/url/.cargo-checksum.json
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/.cargo-checksum.json 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/.cargo-checksum.json 2020-02-29 21:15:43.797770564 -0600
-@@ -1 +1 @@
--{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".travis.yml":"890af214187ffcba4732acb2d1af30d7adb9aade0679e9fdb06baae363240b8e","Cargo.toml":"ec586106c4d0625919a3591fe3ae915043e82c8bfdd1c9e747171ba5e21047e1","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","Makefile":"bffd75d34654b2955d4f005f1a5e85c821c90becf1a8a52cbe10121972f43148","README.md":"eb3f4694003f408cbe3c7f3e9fbbc71241defb940cc55a816981f0f0f144c8eb","UPGRADING.md":"fbcc2d39bdf17db0745793db6626fcd5c909dddd4ce13b27566cfabece22c368","appveyor.yml":"c78486dbfbe6ebbf3d808afb9a19f7ec18c4704ce451c6305f0716999b70a1a6","docs/.nojekyll":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","docs/404.html":"f61e6271c1ea1aa113b64b356e994595fa548f0433f89948d747503ad22195cd","docs/index.html":"f61e6271c1ea1aa113b64b356e994595fa548f0433f89948d747503ad22195cd","github.png":"b432fd855efe7c430fe6a57ccf83935c1996f03a7cdc8d6e1b34154b8c43f6ec","rust-url-todo":"1192cee7b6cedf2133d97dc6074b593a1d19b0ee13fff6f28d6329855044e575","src/encoding.rs":"f3e109ca8ec5a9130da50cdfb3003530aedb6dd5a440f0790d76b71f6981119c","src/form_urlencoded.rs":"7ccaef7148e4bc2577154c50f8705db3a055b641269e24c22770f06222321e1e","src/host.rs":"281165d732ea87b6f01a98f7c68ffcb284c41f84b3ab6ed674fb8e57022d1019","src/lib.rs":"bd156e8bcfbd44f0cd52c8b394e03ec63fea012c0bf5ca554521352714838605","src/origin.rs":"7071dcc1070ccfae84cdcd43586b84a9706e35a9a099ff4dde128da0909bd0bc","src/parser.rs":"9d30868f0900586fec6f122a0322598a08116ab0b4c4d8caf5c35a720381a73a","src/path_segments.rs":"7bd3142eaa568863ef44e2255c181239141f9eeee337f889b9ffaaeab4ca669d","src/quirks.rs":"1231f965e22bb3632c22993e2a8d4c7470bcb4a8de25d049f31784303f0def03","src/slicing.rs":"4e539886b23945a92094625f3e531a4bff40daa44240b5d19ee8577478c4f7fe","tests/data.rs":"c333766897f6492fb6583ab5c8a511973b7a55f58ca550799432343da64d5ca7","tests/setters_tests.json":"ebcbdb52e9a4b5a565f8806d52ebc610d46a34df883e10b0be080d026468ff73","tests/unit.rs":"c2f206f433be619414d761d358a2a4a5a46cfe8a4fea5339adec5e9937d78de2","tests/urltestdata.json":"430c74aa3a31afaa57a92805544e00825f4dffe2def98c1e3c212c3db80268af"},"package":"eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"80d575ae6adad93cb0910b385b871e2d92d558078f58a3c8eafe95940d459f6b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","README.md":"eb3f4694003f408cbe3c7f3e9fbbc71241defb940cc55a816981f0f0f144c8eb","UPGRADING.md":"fbcc2d39bdf17db0745793db6626fcd5c909dddd4ce13b27566cfabece22c368","appveyor.yml":"c78486dbfbe6ebbf3d808afb9a19f7ec18c4704ce451c6305f0716999b70a1a6","benches/parse_url.rs":"821ecb051c3c6c40eb3b268ba7337b2988333627d0af0c8e1afc84734ffbbf2b","docs/404.html":"f61e6271c1ea1aa113b64b356e994595fa548f0433f89948d747503ad22195cd","docs/index.html":"f61e6271c1ea1aa113b64b356e994595fa548f0433f89948d747503ad22195cd","src/encoding.rs":"f3e109ca8ec5a9130da50cdfb3003530aedb6dd5a440f0790d76b71f6981119c","src/form_urlencoded.rs":"d8c35e92375cafcd7e12c4f0d5374bab62aa1f333629d55b007a9c3d5c3cb615","src/host.rs":"66a2c0c77a8add2da16bc690fbc82b130cf1367ac655fc36990a214e193a4d6c","src/lib.rs":"e09dcba401018169ee26764e1c2bccf0855a5d935707c2100fd8d8e77a1bbc91","src/origin.rs":"6e4821eb9600a32ef54d05c8e1a7937f6d9b4dd1e3bda7f36c7988f6a2bef78b","src/parser.rs":"76368cbe93308123c014a3502024cf97d97ca61dcfc7b6ecd710073867d6deca","src/path_segments.rs":"7bd3142eaa568863ef44e2255c181239141f9eeee337f889b9ffaaeab4ca669d","src/quirks.rs":"6cf1697bad363532cbcc60917a9b126560ac3ab3e1a77da0abcf4f2a40c8233a","src/slicing.rs":"4e539886b23945a92094625f3e531a4bff40daa44240b5d19ee8577478c4f7fe","tests/data.rs":"f2c1c6d1823e8d21aeeae31c786d7f4ef0d97352a896f8c5aeb03a41fedb9a48","tests/setters_tests.json":"08ddaa632ad19c81e83b904bfaa94bc971f26e2bdfcef27d2f93fd033ad57340","tests/unit.rs":"ead7185710ce06c8d68ea18700618477867ee355656eabcad26cfcfaaad361a0","tests/urltestdata.json":"1b0c7c727d8d7e79dfb0d0aa347ff05675ddb68bc4ead38f83fd8e89bc59cc32"},"package":"dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"}
-\ No newline at end of file
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/.travis.yml seamonkey-2.53.1/mozilla/third_party/rust/url/.travis.yml
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/.travis.yml 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/.travis.yml 1969-12-31 18:00:00.000000000 -0600
-@@ -1,9 +0,0 @@
--language: rust
--rust:
-- - nightly
-- - beta
-- - stable
-- - 1.17.0
--script: make test
--notifications:
-- webhooks: http://build.servo.org:54856/travis
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/Cargo.toml seamonkey-2.53.1/mozilla/third_party/rust/url/Cargo.toml
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/Cargo.toml 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/Cargo.toml 2020-02-29 21:15:43.799770565 -0600
-@@ -1,24 +1,31 @@
--[package]
-+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-+#
-+# When uploading crates to the registry Cargo will automatically
-+# "normalize" Cargo.toml files for maximal compatibility
-+# with all versions of Cargo and also rewrite `path` dependencies
-+# to registry (e.g. crates.io) dependencies
-+#
-+# If you believe there's an error in this file please file an
-+# issue against the rust-lang/cargo repository. If you're
-+# editing this file be aware that the upstream Cargo.toml
-+# will likely look very different (and much more reasonable)
-
-+[package]
- name = "url"
--# When updating version, also modify html_root_url in the lib.rs
--version = "1.5.1"
-+version = "1.7.2"
- authors = ["The rust-url developers"]
--
- description = "URL library for Rust, based on the WHATWG URL Standard"
- documentation = "https://docs.rs/url"
--repository = "https://github.com/servo/rust-url"
- readme = "README.md"
- keywords = ["url", "parser"]
- categories = ["parser-implementations", "web-programming", "encoding"]
- license = "MIT/Apache-2.0"
-+repository = "https://github.com/servo/rust-url"
-+[package.metadata.docs.rs]
-+features = ["query_encoding"]
-
--[badges]
--travis-ci = { repository = "servo/rust-url" }
--appveyor = { repository = "servo/rust-url" }
--
--[workspace]
--members = [".", "idna", "percent_encoding", "url_serde"]
-+[lib]
-+test = false
-
- [[test]]
- name = "unit"
-@@ -27,23 +34,50 @@
- name = "data"
- harness = false
-
--[lib]
--test = false
-+[[bench]]
-+name = "parse_url"
-+harness = false
-+[dependencies.encoding]
-+version = "0.2"
-+optional = true
-
--[dev-dependencies]
--rustc-test = "0.1"
--rustc-serialize = "0.3"
--serde_json = ">=0.6.1, <0.9"
-+[dependencies.heapsize]
-+version = ">=0.4.1, <0.5"
-+optional = true
-+
-+[dependencies.idna]
-+version = "0.1.0"
-+
-+[dependencies.matches]
-+version = "0.1"
-+
-+[dependencies.percent-encoding]
-+version = "1.0.0"
-+
-+[dependencies.rustc-serialize]
-+version = "0.3"
-+optional = true
-+
-+[dependencies.serde]
-+version = ">=0.6.1, <0.9"
-+optional = true
-+[dev-dependencies.bencher]
-+version = "0.1"
-+
-+[dev-dependencies.rustc-serialize]
-+version = "0.3"
-+
-+[dev-dependencies.rustc-test]
-+version = "0.3"
-+
-+[dev-dependencies.serde_json]
-+version = ">=0.6.1, <0.9"
-
- [features]
--query_encoding = ["encoding"]
- heap_size = ["heapsize"]
-+query_encoding = ["encoding"]
-+[badges.appveyor]
-+repository = "Manishearth/rust-url"
-
--[dependencies]
--encoding = {version = "0.2", optional = true}
--heapsize = {version = ">=0.1.1, <0.5", optional = true}
--idna = { version = "0.1.0", path = "./idna" }
--matches = "0.1"
--percent-encoding = { version = "1.0.0", path = "./percent_encoding" }
--rustc-serialize = {version = "0.3", optional = true}
--serde = {version = ">=0.6.1, <0.9", optional = true}
-+[badges.travis-ci]
-+repository = "servo/rust-url"
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/Makefile seamonkey-2.53.1/mozilla/third_party/rust/url/Makefile
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/Makefile 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/Makefile 1969-12-31 18:00:00.000000000 -0600
-@@ -1,6 +0,0 @@
--test:
-- cargo test --features "query_encoding serde rustc-serialize heapsize"
-- (cd idna && cargo test)
-- (cd url_serde && cargo test)
--
--.PHONY: test
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/benches/parse_url.rs seamonkey-2.53.1/mozilla/third_party/rust/url/benches/parse_url.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/benches/parse_url.rs 1969-12-31 18:00:00.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/benches/parse_url.rs 2020-02-29 21:15:43.801770565 -0600
-@@ -0,0 +1,18 @@
-+#[macro_use]
-+extern crate bencher;
-+
-+extern crate url;
-+
-+use bencher::{black_box, Bencher};
-+
-+use url::Url;
-+
-+fn short(bench: &mut Bencher) {
-+ let url = "https://example.com/bench";
-+
-+ bench.bytes = url.len() as u64;
-+ bench.iter(|| black_box(url).parse::<Url>().unwrap());
-+}
-+
-+benchmark_group!(benches, short);
-+benchmark_main!(benches);
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/rust-url-todo seamonkey-2.53.1/mozilla/third_party/rust/url/rust-url-todo
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/rust-url-todo 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/rust-url-todo 1969-12-31 18:00:00.000000000 -0600
-@@ -1,14 +0,0 @@
--* standalone path parsing?
--* Test setters
-- * Test trim C0/space
-- * Test remove tab & newline
--
--
--
--#[test]
--fn test_path_segments() {
-- let mut url = Url::parse("http://example.net").unwrap();
-- url.push_path_segment("foo").unwrap();
-- url.extend_path_segments(&["bar", "b/az"]).unwrap();
-- assert_eq!(url.as_str(), "http://example.net/foo");
--}
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/form_urlencoded.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/form_urlencoded.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/form_urlencoded.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/form_urlencoded.rs 2020-02-29 21:15:43.802770565 -0600
-@@ -16,6 +16,7 @@
- use encoding::EncodingOverride;
- use percent_encoding::{percent_encode_byte, percent_decode};
- use std::borrow::{Borrow, Cow};
-+use std::fmt;
- use std::str;
-
-
-@@ -216,6 +217,15 @@
- target: Option<T>,
- start_position: usize,
- encoding: EncodingOverride,
-+ custom_encoding: Option<SilentDebug<Box<FnMut(&str) -> Cow<[u8]>>>>,
-+}
-+
-+struct SilentDebug<T>(T);
-+
-+impl<T> fmt::Debug for SilentDebug<T> {
-+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-+ f.write_str("…")
-+ }
- }
-
- pub trait Target {
-@@ -247,8 +257,16 @@
- // * `Serializer` keeps its target in a private field
- // * Unlike in other `Target` impls, `UrlQuery::finished` does not return `Self`.
- impl<'a> Target for ::UrlQuery<'a> {
-- fn as_mut_string(&mut self) -> &mut String { &mut self.url.serialization }
-- fn finish(self) -> &'a mut ::Url { self.url }
-+ fn as_mut_string(&mut self) -> &mut String {
-+ &mut self.url.as_mut().unwrap().serialization
-+ }
-+
-+ fn finish(mut self) -> &'a mut ::Url {
-+ let url = self.url.take().unwrap();
-+ url.restore_already_parsed_fragment(self.fragment.take());
-+ url
-+ }
-+
- type Finished = &'a mut ::Url;
- }
-
-@@ -272,6 +290,7 @@
- target: Some(target),
- start_position: start_position,
- encoding: EncodingOverride::utf8(),
-+ custom_encoding: None,
- }
- }
-
-@@ -290,11 +309,20 @@
- self
- }
-
-+ /// Set the character encoding to be used for names and values before percent-encoding.
-+ pub fn custom_encoding_override<F>(&mut self, encode: F) -> &mut Self
-+ where F: FnMut(&str) -> Cow<[u8]> + 'static
-+ {
-+ self.custom_encoding = Some(SilentDebug(Box::new(encode)));
-+ self
-+ }
-+
- /// Serialize and append a name/value pair.
- ///
- /// Panics if called after `.finish()`.
- pub fn append_pair(&mut self, name: &str, value: &str) -> &mut Self {
-- append_pair(string(&mut self.target), self.start_position, self.encoding, name, value);
-+ append_pair(string(&mut self.target), self.start_position, self.encoding,
-+ &mut self.custom_encoding, name, value);
- self
- }
-
-@@ -311,7 +339,8 @@
- let string = string(&mut self.target);
- for pair in iter {
- let &(ref k, ref v) = pair.borrow();
-- append_pair(string, self.start_position, self.encoding, k.as_ref(), v.as_ref());
-+ append_pair(string, self.start_position, self.encoding,
-+ &mut self.custom_encoding, k.as_ref(), v.as_ref());
- }
- }
- self
-@@ -324,6 +353,8 @@
- /// Panics if called after `.finish()`.
- #[cfg(feature = "query_encoding")]
- pub fn append_charset(&mut self) -> &mut Self {
-+ assert!(self.custom_encoding.is_none(),
-+ "Cannot use both custom_encoding_override() and append_charset()");
- {
- let string = string(&mut self.target);
- append_separator_if_needed(string, self.start_position);
-@@ -361,9 +392,20 @@
- }
-
- fn append_pair(string: &mut String, start_position: usize, encoding: EncodingOverride,
-+ custom_encoding: &mut Option<SilentDebug<Box<FnMut(&str) -> Cow<[u8]>>>>,
- name: &str, value: &str) {
- append_separator_if_needed(string, start_position);
-- string.extend(byte_serialize(&encoding.encode(name.into())));
-+ append_encoded(name, string, encoding, custom_encoding);
- string.push('=');
-- string.extend(byte_serialize(&encoding.encode(value.into())));
-+ append_encoded(value, string, encoding, custom_encoding);
-+}
-+
-+fn append_encoded(s: &str, string: &mut String, encoding: EncodingOverride,
-+ custom_encoding: &mut Option<SilentDebug<Box<FnMut(&str) -> Cow<[u8]>>>>) {
-+ let bytes = if let Some(SilentDebug(ref mut custom)) = *custom_encoding {
-+ custom(s)
-+ } else {
-+ encoding.encode(s.into())
-+ };
-+ string.extend(byte_serialize(&bytes));
- }
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/host.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/host.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/host.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/host.rs 2020-02-29 21:15:07.663769022 -0600
-@@ -13,7 +13,7 @@
- use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6, ToSocketAddrs};
- use std::vec;
- use parser::{ParseResult, ParseError};
--use percent_encoding::percent_decode;
-+use percent_encoding::{percent_decode, utf8_percent_encode, SIMPLE_ENCODE_SET};
- use idna;
-
- #[derive(Copy, Clone, Debug, Eq, PartialEq)]
-@@ -73,7 +73,9 @@
- #[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
- pub enum Host<S=String> {
- /// A DNS domain name, as '.' dot-separated labels.
-- /// Non-ASCII labels are encoded in punycode per IDNA.
-+ /// Non-ASCII labels are encoded in punycode per IDNA if this is the host of
-+ /// a special URL, or percent encoded for non-special URLs. Hosts for
-+ /// non-special URLs are also called opaque hosts.
- Domain(S),
-
- /// An IPv4 address.
-@@ -137,7 +139,7 @@
- impl Host<String> {
- /// Parse a host: either an IPv6 address in [] square brackets, or a domain.
- ///
-- /// https://url.spec.whatwg.org/#host-parsing
-+ /// <https://url.spec.whatwg.org/#host-parsing>
- pub fn parse(input: &str) -> Result<Self, ParseError> {
- if input.starts_with('[') {
- if !input.ends_with(']') {
-@@ -158,6 +160,23 @@
- Ok(Host::Domain(domain.into()))
- }
- }
-+
-+ // <https://url.spec.whatwg.org/#concept-opaque-host-parser>
-+ pub fn parse_opaque(input: &str) -> Result<Self, ParseError> {
-+ if input.starts_with('[') {
-+ if !input.ends_with(']') {
-+ return Err(ParseError::InvalidIpv6Address)
-+ }
-+ return parse_ipv6addr(&input[1..input.len() - 1]).map(Host::Ipv6)
-+ }
-+ if input.find(|c| matches!(c,
-+ '\0' | '\t' | '\n' | '\r' | ' ' | '#' | '/' | ':' | '?' | '@' | '[' | '\\' | ']'
-+ )).is_some() {
-+ return Err(ParseError::InvalidDomainCharacter)
-+ }
-+ let s = utf8_percent_encode(input, SIMPLE_ENCODE_SET).to_string();
-+ Ok(Host::Domain(s))
-+ }
- }
-
- impl<S: AsRef<str>> fmt::Display for Host<S> {
-@@ -309,8 +328,8 @@
- }
- }
-
--/// https://url.spec.whatwg.org/#ipv4-number-parser
--fn parse_ipv4number(mut input: &str) -> Result<u32, ()> {
-+/// <https://url.spec.whatwg.org/#ipv4-number-parser>
-+fn parse_ipv4number(mut input: &str) -> Result<Option<u32>, ()> {
- let mut r = 10;
- if input.starts_with("0x") || input.starts_with("0X") {
- input = &input[2..];
-@@ -319,19 +338,35 @@
- input = &input[1..];
- r = 8;
- }
-+
-+ // At the moment we can't know the reason why from_str_radix fails
-+ // https://github.com/rust-lang/rust/issues/22639
-+ // So instead we check if the input looks like a real number and only return
-+ // an error when it's an overflow.
-+ let valid_number = match r {
-+ 8 => input.chars().all(|c| c >= '0' && c <='7'),
-+ 10 => input.chars().all(|c| c >= '0' && c <='9'),
-+ 16 => input.chars().all(|c| (c >= '0' && c <='9') || (c >='a' && c <= 'f') || (c >= 'A' && c <= 'F')),
-+ _ => false
-+ };
-+
-+ if !valid_number {
-+ return Ok(None);
-+ }
-+
- if input.is_empty() {
-- return Ok(0);
-+ return Ok(Some(0));
- }
- if input.starts_with('+') {
-- return Err(())
-+ return Ok(None);
- }
- match u32::from_str_radix(input, r) {
-- Ok(number) => Ok(number),
-+ Ok(number) => Ok(Some(number)),
- Err(_) => Err(()),
- }
- }
-
--/// https://url.spec.whatwg.org/#concept-ipv4-parser
-+/// <https://url.spec.whatwg.org/#concept-ipv4-parser>
- fn parse_ipv4addr(input: &str) -> ParseResult<Option<Ipv4Addr>> {
- if input.is_empty() {
- return Ok(None)
-@@ -344,15 +379,19 @@
- return Ok(None);
- }
- let mut numbers: Vec<u32> = Vec::new();
-+ let mut overflow = false;
- for part in parts {
- if part == "" {
- return Ok(None);
- }
-- if let Ok(n) = parse_ipv4number(part) {
-- numbers.push(n);
-- } else {
-- return Ok(None);
-- }
-+ match parse_ipv4number(part) {
-+ Ok(Some(n)) => numbers.push(n),
-+ Ok(None) => return Ok(None),
-+ Err(()) => overflow = true
-+ };
-+ }
-+ if overflow {
-+ return Err(ParseError::InvalidIpv4Address);
- }
- let mut ipv4 = numbers.pop().expect("a non-empty list of numbers");
- // Equivalent to: ipv4 >= 256 ** (4 − numbers.len())
-@@ -368,7 +407,7 @@
- Ok(Some(Ipv4Addr::from(ipv4)))
- }
-
--/// https://url.spec.whatwg.org/#concept-ipv6-parser
-+/// <https://url.spec.whatwg.org/#concept-ipv6-parser>
- fn parse_ipv6addr(input: &str) -> ParseResult<Ipv6Addr> {
- let input = input.as_bytes();
- let len = input.len();
-@@ -423,6 +462,9 @@
- return Err(ParseError::InvalidIpv6Address)
- }
- i = start;
-+ if piece_pointer > 6 {
-+ return Err(ParseError::InvalidIpv6Address)
-+ }
- is_ip_v4 = true;
- },
- b':' => {
-@@ -445,16 +487,24 @@
- if piece_pointer > 6 {
- return Err(ParseError::InvalidIpv6Address)
- }
-- let mut dots_seen = 0;
-+ let mut numbers_seen = 0;
- while i < len {
-- let mut value = None;
-+ if numbers_seen > 0 {
-+ if numbers_seen < 4 && (i < len && input[i] == b'.') {
-+ i += 1
-+ } else {
-+ return Err(ParseError::InvalidIpv6Address)
-+ }
-+ }
-+
-+ let mut ipv4_piece = None;
- while i < len {
- let digit = match input[i] {
- c @ b'0' ... b'9' => c - b'0',
- _ => break
- };
-- match value {
-- None => value = Some(digit as u16),
-+ match ipv4_piece {
-+ None => ipv4_piece = Some(digit as u16),
- Some(0) => return Err(ParseError::InvalidIpv6Address), // No leading zero
- Some(ref mut v) => {
- *v = *v * 10 + digit as u16;
-@@ -465,24 +515,28 @@
- }
- i += 1;
- }
-- if dots_seen < 3 && !(i < len && input[i] == b'.') {
-- return Err(ParseError::InvalidIpv6Address)
-- }
-- pieces[piece_pointer] = if let Some(v) = value {
-+
-+ pieces[piece_pointer] = if let Some(v) = ipv4_piece {
- pieces[piece_pointer] * 0x100 + v
- } else {
- return Err(ParseError::InvalidIpv6Address)
- };
-- if dots_seen == 1 || dots_seen == 3 {
-+ numbers_seen += 1;
-+
-+ if numbers_seen == 2 || numbers_seen == 4 {
- piece_pointer += 1;
- }
-- i += 1;
-- if dots_seen == 3 && i < len {
-- return Err(ParseError::InvalidIpv6Address)
-- }
-- dots_seen += 1;
-+ }
-+
-+ if numbers_seen != 4 {
-+ return Err(ParseError::InvalidIpv6Address)
- }
- }
-+
-+ if i < len {
-+ return Err(ParseError::InvalidIpv6Address)
-+ }
-+
- match compress_pointer {
- Some(compress_pointer) => {
- let mut swaps = piece_pointer - compress_pointer;
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/lib.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/lib.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/lib.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/lib.rs 2020-02-29 21:15:43.804770565 -0600
-@@ -104,7 +104,7 @@
- # run().unwrap();
- */
-
--#![doc(html_root_url = "https://docs.rs/url/1.5.1")]
-+#![doc(html_root_url = "https://docs.rs/url/1.7.0")]
-
- #[cfg(feature="rustc-serialize")] extern crate rustc_serialize;
- #[macro_use] extern crate matches;
-@@ -112,12 +112,13 @@
- #[cfg(feature="heapsize")] #[macro_use] extern crate heapsize;
-
- pub extern crate idna;
-+#[macro_use]
- pub extern crate percent_encoding;
-
- use encoding::EncodingOverride;
- #[cfg(feature = "heapsize")] use heapsize::HeapSizeOf;
- use host::HostInternal;
--use parser::{Parser, Context, SchemeType, to_u32};
-+use parser::{Parser, Context, SchemeType, to_u32, ViolationFn};
- use percent_encoding::{PATH_SEGMENT_ENCODE_SET, USERINFO_ENCODE_SET,
- percent_encode, percent_decode, utf8_percent_encode};
- use std::borrow::Borrow;
-@@ -135,7 +136,7 @@
- pub use origin::{Origin, OpaqueOrigin};
- pub use host::{Host, HostAndPort, SocketAddrs};
- pub use path_segments::PathSegmentsMut;
--pub use parser::ParseError;
-+pub use parser::{ParseError, SyntaxViolation};
- pub use slicing::Position;
-
- mod encoding;
-@@ -186,7 +187,7 @@
- pub struct ParseOptions<'a> {
- base_url: Option<&'a Url>,
- encoding_override: encoding::EncodingOverride,
-- log_syntax_violation: Option<&'a Fn(&'static str)>,
-+ violation_fn: ViolationFn<'a>,
- }
-
- impl<'a> ParseOptions<'a> {
-@@ -209,9 +210,47 @@
- self
- }
-
-- /// Call the provided function or closure on non-fatal parse errors.
-+ /// Call the provided function or closure on non-fatal parse errors, passing
-+ /// a static string description. This method is deprecated in favor of
-+ /// `syntax_violation_callback` and is implemented as an adaptor for the
-+ /// latter, passing the `SyntaxViolation` description. Only the last value
-+ /// passed to either method will be used by a parser.
-+ #[deprecated]
- pub fn log_syntax_violation(mut self, new: Option<&'a Fn(&'static str)>) -> Self {
-- self.log_syntax_violation = new;
-+ self.violation_fn = match new {
-+ Some(f) => ViolationFn::OldFn(f),
-+ None => ViolationFn::NoOp
-+ };
-+ self
-+ }
-+
-+ /// Call the provided function or closure for a non-fatal `SyntaxViolation`
-+ /// when it occurs during parsing. Note that since the provided function is
-+ /// `Fn`, the caller might need to utilize _interior mutability_, such as with
-+ /// a `RefCell`, to collect the violations.
-+ ///
-+ /// ## Example
-+ /// ```
-+ /// use std::cell::RefCell;
-+ /// use url::{Url, SyntaxViolation};
-+ /// # use url::ParseError;
-+ /// # fn run() -> Result<(), url::ParseError> {
-+ /// let violations = RefCell::new(Vec::new());
-+ /// let url = Url::options()
-+ /// .syntax_violation_callback(Some(&|v| violations.borrow_mut().push(v)))
-+ /// .parse("https:////example.com")?;
-+ /// assert_eq!(url.as_str(), "https://example.com/");
-+ /// assert_eq!(violations.into_inner(),
-+ /// vec!(SyntaxViolation::ExpectedDoubleSlash));
-+ /// # Ok(())
-+ /// # }
-+ /// # run().unwrap();
-+ /// ```
-+ pub fn syntax_violation_callback(mut self, new: Option<&'a Fn(SyntaxViolation)>) -> Self {
-+ self.violation_fn = match new {
-+ Some(f) => ViolationFn::NewFn(f),
-+ None => ViolationFn::NoOp
-+ };
- self
- }
-
-@@ -221,7 +260,7 @@
- serialization: String::with_capacity(input.len()),
- base_url: self.base_url,
- query_encoding_override: self.encoding_override,
-- log_syntax_violation: self.log_syntax_violation,
-+ violation_fn: self.violation_fn,
- context: Context::UrlParser,
- }.parse_url(input)
- }
-@@ -229,11 +268,12 @@
-
- impl<'a> Debug for ParseOptions<'a> {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
-- write!(f, "ParseOptions {{ base_url: {:?}, encoding_override: {:?}, log_syntax_violation: ", self.base_url, self.encoding_override)?;
-- match self.log_syntax_violation {
-- Some(_) => write!(f, "Some(Fn(&'static str)) }}"),
-- None => write!(f, "None }}")
-- }
-+ write!(f,
-+ "ParseOptions {{ base_url: {:?}, encoding_override: {:?}, \
-+ violation_fn: {:?} }}",
-+ self.base_url,
-+ self.encoding_override,
-+ self.violation_fn)
- }
- }
-
-@@ -252,6 +292,13 @@
- /// # }
- /// # run().unwrap();
- /// ```
-+ ///
-+ /// # Errors
-+ ///
-+ /// If the function can not parse an absolute URL from the given string,
-+ /// a [`ParseError`] variant will be returned.
-+ ///
-+ /// [`ParseError`]: enum.ParseError.html
- #[inline]
- pub fn parse(input: &str) -> Result<Url, ::ParseError> {
- Url::options().parse(input)
-@@ -274,6 +321,13 @@
- /// # }
- /// # run().unwrap();
- /// ```
-+ ///
-+ /// # Errors
-+ ///
-+ /// If the function can not parse an absolute URL from the given string,
-+ /// a [`ParseError`] variant will be returned.
-+ ///
-+ /// [`ParseError`]: enum.ParseError.html
- #[inline]
- pub fn parse_with_params<I, K, V>(input: &str, iter: I) -> Result<Url, ::ParseError>
- where I: IntoIterator,
-@@ -301,7 +355,7 @@
- /// ```rust
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let base = Url::parse("https://example.net/a/b.html")?;
- /// let url = base.join("c.png")?;
-@@ -314,6 +368,13 @@
- /// # }
- /// # run().unwrap();
- /// ```
-+ ///
-+ /// # Errors
-+ ///
-+ /// If the function can not parse an URL from the given string
-+ /// with this URL as the base URL, a [`ParseError`] variant will be returned.
-+ ///
-+ /// [`ParseError`]: enum.ParseError.html
- #[inline]
- pub fn join(&self, input: &str) -> Result<Url, ::ParseError> {
- Url::options().base_url(Some(self)).parse(input)
-@@ -342,7 +403,7 @@
- ParseOptions {
- base_url: None,
- encoding_override: EncodingOverride::utf8(),
-- log_syntax_violation: None,
-+ violation_fn: ViolationFn::NoOp,
- }
- }
-
-@@ -500,7 +561,7 @@
- Ok(())
- }
-
-- /// Return the origin of this URL (https://url.spec.whatwg.org/#origin)
-+ /// Return the origin of this URL (<https://url.spec.whatwg.org/#origin>)
- ///
- /// Note: this returns an opaque origin for `file:` URLs, which causes
- /// `url.origin() != url.origin()`.
-@@ -1156,11 +1217,11 @@
- /// assert_eq!(url.as_str(), "https://example.com/data.csv");
-
- /// url.set_fragment(Some("cell=4,1-6,2"));
-- /// assert_eq!(url.as_str(), "https://example.com/data.csv#cell=4,1-6,2");
-+ /// assert_eq!(url.as_str(), "https://example.com/data.csv#cell=4,1-6,2");
- /// assert_eq!(url.fragment(), Some("cell=4,1-6,2"));
- ///
- /// url.set_fragment(None);
-- /// assert_eq!(url.as_str(), "https://example.com/data.csv");
-+ /// assert_eq!(url.as_str(), "https://example.com/data.csv");
- /// assert!(url.fragment().is_none());
- /// # Ok(())
- /// # }
-@@ -1213,7 +1274,7 @@
- /// assert_eq!(url.as_str(), "https://example.com/products");
- ///
- /// url.set_query(Some("page=2"));
-- /// assert_eq!(url.as_str(), "https://example.com/products?page=2");
-+ /// assert_eq!(url.as_str(), "https://example.com/products?page=2");
- /// assert_eq!(url.query(), Some("page=2"));
- /// # Ok(())
- /// # }
-@@ -1283,7 +1344,7 @@
- self.serialization.push('?');
- }
-
-- let query = UrlQuery { url: self, fragment: fragment };
-+ let query = UrlQuery { url: Some(self), fragment: fragment };
- form_urlencoded::Serializer::for_suffix(query, query_start + "?".len())
- }
-
-@@ -1309,12 +1370,12 @@
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("https://example.com")?;
- /// url.set_path("api/comments");
-- /// assert_eq!(url.as_str(), "https://example.com/api/comments");
-+ /// assert_eq!(url.as_str(), "https://example.com/api/comments");
- /// assert_eq!(url.path(), "/api/comments");
- ///
- /// let mut url = Url::parse("https://example.com/api")?;
- /// url.set_path("data/report.csv");
-- /// assert_eq!(url.as_str(), "https://example.com/data/report.csv");
-+ /// assert_eq!(url.as_str(), "https://example.com/data/report.csv");
- /// assert_eq!(url.path(), "/data/report.csv");
- /// # Ok(())
- /// # }
-@@ -1406,7 +1467,8 @@
- /// # run().unwrap();
- /// ```
- pub fn set_port(&mut self, mut port: Option<u16>) -> Result<(), ()> {
-- if !self.has_host() || self.scheme() == "file" {
-+ // has_host implies !cannot_be_a_base
-+ if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" {
- return Err(())
- }
- if port.is_some() && port == parser::default_port(self.scheme()) {
-@@ -1448,9 +1510,6 @@
-
- /// Change this URL’s host.
- ///
-- /// If this URL is cannot-be-a-base or there is an error parsing the given `host`,
-- /// do nothing and return `Err`.
-- ///
- /// Removing the host (calling this with `None`)
- /// will also remove any username, password, and port number.
- ///
-@@ -1477,7 +1536,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("foo://example.net")?;
- /// let result = url.set_host(None);
-@@ -1493,7 +1552,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("https://example.net")?;
- /// let result = url.set_host(None);
-@@ -1509,7 +1568,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("mailto:rms@example.net")?;
- ///
-@@ -1524,6 +1583,13 @@
- /// # }
- /// # run().unwrap();
- /// ```
-+ ///
-+ /// # Errors
-+ ///
-+ /// If this URL is cannot-be-a-base or there is an error parsing the given `host`,
-+ /// a [`ParseError`] variant will be returned.
-+ ///
-+ /// [`ParseError`]: enum.ParseError.html
- pub fn set_host(&mut self, host: Option<&str>) -> Result<(), ParseError> {
- if self.cannot_be_a_base() {
- return Err(ParseError::SetHostOnCannotBeABaseUrl)
-@@ -1533,7 +1599,11 @@
- if host == "" && SchemeType::from(self.scheme()).is_special() {
- return Err(ParseError::EmptyHost);
- }
-- self.set_host_internal(Host::parse(host)?, None)
-+ if SchemeType::from(self.scheme()).is_special() {
-+ self.set_host_internal(Host::parse(host)?, None)
-+ } else {
-+ self.set_host_internal(Host::parse_opaque(host)?, None)
-+ }
- } else if self.has_host() {
- if SchemeType::from(self.scheme()).is_special() {
- return Err(ParseError::EmptyHost)
-@@ -1666,7 +1736,8 @@
- /// # run().unwrap();
- /// ```
- pub fn set_password(&mut self, password: Option<&str>) -> Result<(), ()> {
-- if !self.has_host() {
-+ // has_host implies !cannot_be_a_base
-+ if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" {
- return Err(())
- }
- if let Some(password) = password {
-@@ -1732,21 +1803,23 @@
- /// ```
- ///
- /// Setup username to user1
-+ ///
- /// ```rust
- /// use url::{Url, ParseError};
- ///
- /// # fn run() -> Result<(), ParseError> {
-- /// let mut url = Url::parse("ftp://:secre1@example.com")?;
-+ /// let mut url = Url::parse("ftp://:secre1@example.com/")?;
- /// let result = url.set_username("user1");
- /// assert!(result.is_ok());
- /// assert_eq!(url.username(), "user1");
-- /// assert_eq!(url.as_str(), "ftp://user1:secre1@example.com");
-+ /// assert_eq!(url.as_str(), "ftp://user1:secre1@example.com/");
- /// # Ok(())
- /// # }
- /// # run().unwrap();
- /// ```
- pub fn set_username(&mut self, username: &str) -> Result<(), ()> {
-- if !self.has_host() {
-+ // has_host implies !cannot_be_a_base
-+ if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" {
- return Err(())
- }
- let username_start = self.scheme_end + 3;
-@@ -1805,7 +1878,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("https://example.net")?;
- /// let result = url.set_scheme("foo");
-@@ -1822,7 +1895,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("https://example.net")?;
- /// let result = url.set_scheme("foõ");
-@@ -1838,7 +1911,7 @@
- /// ```
- /// use url::Url;
- /// # use url::ParseError;
-- ///
-+ ///
- /// # fn run() -> Result<(), ParseError> {
- /// let mut url = Url::parse("mailto:rms@example.net")?;
- /// let result = url.set_scheme("https");
-@@ -1887,7 +1960,7 @@
- /// ```
- /// # if cfg!(unix) {
- /// use url::Url;
-- ///
-+ ///
- /// # fn run() -> Result<(), ()> {
- /// let url = Url::from_file_path("/tmp/foo.txt")?;
- /// assert_eq!(url.as_str(), "file:///tmp/foo.txt");
-@@ -1902,6 +1975,7 @@
- /// # run().unwrap();
- /// # }
- /// ```
-+ #[cfg(any(unix, windows, target_os="redox"))]
- pub fn from_file_path<P: AsRef<Path>>(path: P) -> Result<Url, ()> {
- let mut serialization = "file://".to_owned();
- let host_start = serialization.len() as u32;
-@@ -1937,6 +2011,7 @@
- ///
- /// Note that `std::path` does not consider trailing slashes significant
- /// and usually does not include them (e.g. in `Path::parent()`).
-+ #[cfg(any(unix, windows, target_os="redox"))]
- pub fn from_directory_path<P: AsRef<Path>>(path: P) -> Result<Url, ()> {
- let mut url = Url::from_file_path(path)?;
- if !url.serialization.ends_with('/') {
-@@ -2018,6 +2093,7 @@
- /// (That is, if the percent-decoded path contains a NUL byte or,
- /// for a Windows path, is not UTF-8.)
- #[inline]
-+ #[cfg(any(unix, windows, target_os="redox"))]
- pub fn to_file_path(&self) -> Result<PathBuf, ()> {
- if let Some(segments) = self.path_segments() {
- let host = match self.host() {
-@@ -2264,6 +2340,7 @@
- Ok((host_end, host_internal))
- }
-
-+
- #[cfg(any(unix, target_os = "redox"))]
- fn file_url_segments_to_pathbuf(host: Option<&str>, segments: str::Split<char>) -> Result<PathBuf, ()> {
- use std::ffi::OsStr;
-@@ -2347,13 +2424,15 @@
- /// Implementation detail of `Url::query_pairs_mut`. Typically not used directly.
- #[derive(Debug)]
- pub struct UrlQuery<'a> {
-- url: &'a mut Url,
-+ url: Option<&'a mut Url>,
- fragment: Option<String>,
- }
-
- impl<'a> Drop for UrlQuery<'a> {
- fn drop(&mut self) {
-- self.url.restore_already_parsed_fragment(self.fragment.take())
-+ if let Some(url) = self.url.take() {
-+ url.restore_already_parsed_fragment(self.fragment.take())
-+ }
- }
- }
-
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/origin.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/origin.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/origin.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/origin.rs 2020-02-29 21:14:51.284768322 -0600
-@@ -49,7 +49,7 @@
- /// - If the scheme is anything else, the origin is opaque, meaning
- /// the URL does not have the same origin as any other URL.
- ///
--/// For more information see https://url.spec.whatwg.org/#origin
-+/// For more information see <https://url.spec.whatwg.org/#origin>
- #[derive(PartialEq, Eq, Hash, Clone, Debug)]
- pub enum Origin {
- /// A globally unique identifier
-@@ -86,7 +86,7 @@
- matches!(*self, Origin::Tuple(..))
- }
-
-- /// https://html.spec.whatwg.org/multipage/#ascii-serialisation-of-an-origin
-+ /// <https://html.spec.whatwg.org/multipage/#ascii-serialisation-of-an-origin>
- pub fn ascii_serialization(&self) -> String {
- match *self {
- Origin::Opaque(_) => "null".to_owned(),
-@@ -100,7 +100,7 @@
- }
- }
-
-- /// https://html.spec.whatwg.org/multipage/#unicode-serialisation-of-an-origin
-+ /// <https://html.spec.whatwg.org/multipage/#unicode-serialisation-of-an-origin>
- pub fn unicode_serialization(&self) -> String {
- match *self {
- Origin::Opaque(_) => "null".to_owned(),
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/parser.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/parser.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/parser.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/parser.rs 2020-02-29 21:15:43.806770565 -0600
-@@ -6,7 +6,9 @@
- // option. This file may not be copied, modified, or distributed
- // except according to those terms.
-
-+#[allow(unused_imports, deprecated)]
- use std::ascii::AsciiExt;
-+
- use std::error::Error;
- use std::fmt::{self, Formatter, Write};
- use std::str;
-@@ -20,6 +22,12 @@
- PATH_SEGMENT_ENCODE_SET
- };
-
-+define_encode_set! {
-+ // The backslash (\) character is treated as a path separator in special URLs
-+ // so it needs to be additionally escaped in that case.
-+ pub SPECIAL_PATH_SEGMENT_ENCODE_SET = [PATH_SEGMENT_ENCODE_SET] | {'\\'}
-+}
-+
- pub type ParseResult<T> = Result<T, ParseError>;
-
- macro_rules! simple_enum_error {
-@@ -70,6 +78,54 @@
- fn from(_: ::idna::uts46::Errors) -> ParseError { ParseError::IdnaError }
- }
-
-+macro_rules! syntax_violation_enum {
-+ ($($name: ident => $description: expr,)+) => {
-+ /// Non-fatal syntax violations that can occur during parsing.
-+ #[derive(PartialEq, Eq, Clone, Copy, Debug)]
-+ pub enum SyntaxViolation {
-+ $(
-+ $name,
-+ )+
-+ }
-+
-+ impl SyntaxViolation {
-+ pub fn description(&self) -> &'static str {
-+ match *self {
-+ $(
-+ SyntaxViolation::$name => $description,
-+ )+
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+syntax_violation_enum! {
-+ Backslash => "backslash",
-+ C0SpaceIgnored =>
-+ "leading or trailing control or space character are ignored in URLs",
-+ EmbeddedCredentials =>
-+ "embedding authentication information (username or password) \
-+ in an URL is not recommended",
-+ ExpectedDoubleSlash => "expected //",
-+ ExpectedFileDoubleSlash => "expected // after file:",
-+ FileWithHostAndWindowsDrive => "file: with host and Windows drive letter",
-+ NonUrlCodePoint => "non-URL code point",
-+ NullInFragment => "NULL characters are ignored in URL fragment identifiers",
-+ PercentDecode => "expected 2 hex digits after %",
-+ TabOrNewlineIgnored => "tabs or newlines are ignored in URLs",
-+ UnencodedAtSign => "unencoded @ sign in username or password",
-+}
-+
-+#[cfg(feature = "heapsize")]
-+known_heap_size!(0, SyntaxViolation);
-+
-+impl fmt::Display for SyntaxViolation {
-+ fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
-+ self.description().fmt(fmt)
-+ }
-+}
-+
- #[derive(Copy, Clone)]
- pub enum SchemeType {
- File,
-@@ -112,18 +168,17 @@
-
- impl<'i> Input<'i> {
- pub fn new(input: &'i str) -> Self {
-- Input::with_log(input, None)
-+ Input::with_log(input, ViolationFn::NoOp)
- }
-
-- pub fn with_log(original_input: &'i str, log_syntax_violation: Option<&Fn(&'static str)>)
-- -> Self {
-+ pub fn with_log(original_input: &'i str, vfn: ViolationFn) -> Self {
- let input = original_input.trim_matches(c0_control_or_space);
-- if let Some(log) = log_syntax_violation {
-+ if vfn.is_set() {
- if input.len() < original_input.len() {
-- log("leading or trailing control or space character are ignored in URLs")
-+ vfn.call(SyntaxViolation::C0SpaceIgnored)
- }
- if input.chars().any(|c| matches!(c, '\t' | '\n' | '\r')) {
-- log("tabs or newlines are ignored in URLs")
-+ vfn.call(SyntaxViolation::TabOrNewlineIgnored)
- }
- }
- Input { chars: input.chars() }
-@@ -216,11 +271,60 @@
- }
- }
-
-+/// Wrapper for syntax violation callback functions.
-+#[derive(Copy, Clone)]
-+pub enum ViolationFn<'a> {
-+ NewFn(&'a (Fn(SyntaxViolation) + 'a)),
-+ OldFn(&'a (Fn(&'static str) + 'a)),
-+ NoOp
-+}
-+
-+impl<'a> ViolationFn<'a> {
-+ /// Call with a violation.
-+ pub fn call(self, v: SyntaxViolation) {
-+ match self {
-+ ViolationFn::NewFn(f) => f(v),
-+ ViolationFn::OldFn(f) => f(v.description()),
-+ ViolationFn::NoOp => {}
-+ }
-+ }
-+
-+ /// Call with a violation, if provided test returns true. Avoids
-+ /// the test entirely if `NoOp`.
-+ pub fn call_if<F>(self, v: SyntaxViolation, test: F)
-+ where F: Fn() -> bool
-+ {
-+ match self {
-+ ViolationFn::NewFn(f) => if test() { f(v) },
-+ ViolationFn::OldFn(f) => if test() { f(v.description()) },
-+ ViolationFn::NoOp => {} // avoid test
-+ }
-+ }
-+
-+ /// True if not `NoOp`
-+ pub fn is_set(self) -> bool {
-+ match self {
-+ ViolationFn::NoOp => false,
-+ _ => true
-+ }
-+ }
-+}
-+
-+impl<'a> fmt::Debug for ViolationFn<'a> {
-+ fn fmt(&self, f: &mut Formatter) -> fmt::Result {
-+ match *self {
-+ ViolationFn::NewFn(_) => write!(f, "NewFn(Fn(SyntaxViolation))"),
-+ ViolationFn::OldFn(_) => write!(f, "OldFn(Fn(&'static str))"),
-+ ViolationFn::NoOp => write!(f, "NoOp")
-+ }
-+ }
-+}
-+
- pub struct Parser<'a> {
- pub serialization: String,
- pub base_url: Option<&'a Url>,
- pub query_encoding_override: EncodingOverride,
-- pub log_syntax_violation: Option<&'a Fn(&'static str)>,
-+ pub violation_fn: ViolationFn<'a>,
- pub context: Context,
- }
-
-@@ -237,29 +341,14 @@
- serialization: serialization,
- base_url: None,
- query_encoding_override: EncodingOverride::utf8(),
-- log_syntax_violation: None,
-+ violation_fn: ViolationFn::NoOp,
- context: Context::Setter,
- }
- }
-
-- fn syntax_violation(&self, reason: &'static str) {
-- if let Some(log) = self.log_syntax_violation {
-- log(reason)
-- }
-- }
--
-- fn syntax_violation_if<F: Fn() -> bool>(&self, reason: &'static str, test: F) {
-- // Skip test if not logging.
-- if let Some(log) = self.log_syntax_violation {
-- if test() {
-- log(reason)
-- }
-- }
-- }
--
- /// https://url.spec.whatwg.org/#concept-basic-url-parser
- pub fn parse_url(mut self, input: &str) -> ParseResult<Url> {
-- let input = Input::with_log(input, self.log_syntax_violation);
-+ let input = Input::with_log(input, self.violation_fn);
- if let Ok(remaining) = self.parse_scheme(input.clone()) {
- return self.parse_with_scheme(remaining)
- }
-@@ -310,12 +399,13 @@
- }
-
- fn parse_with_scheme(mut self, input: Input) -> ParseResult<Url> {
-+ use SyntaxViolation::{ExpectedFileDoubleSlash, ExpectedDoubleSlash};
- let scheme_end = to_u32(self.serialization.len())?;
- let scheme_type = SchemeType::from(&self.serialization);
- self.serialization.push(':');
- match scheme_type {
- SchemeType::File => {
-- self.syntax_violation_if("expected // after file:", || !input.starts_with("//"));
-+ self.violation_fn.call_if(ExpectedFileDoubleSlash, || !input.starts_with("//"));
- let base_file_url = self.base_url.and_then(|base| {
- if base.scheme() == "file" { Some(base) } else { None }
- });
-@@ -335,7 +425,7 @@
- }
- }
- // special authority slashes state
-- self.syntax_violation_if("expected //", || {
-+ self.violation_fn.call_if(ExpectedDoubleSlash, || {
- input.clone().take_while(|&c| matches!(c, '/' | '\\'))
- .collect::<String>() != "//"
- });
-@@ -371,6 +461,7 @@
- }
-
- fn parse_file(mut self, input: Input, mut base_file_url: Option<&Url>) -> ParseResult<Url> {
-+ use SyntaxViolation::Backslash;
- // file state
- debug_assert!(self.serialization.is_empty());
- let (first_char, input_after_first_char) = input.split_first();
-@@ -451,6 +542,7 @@
- let scheme_end = "file".len() as u32;
- let path_start = "file://".len() as u32;
- let fragment_start = "file:///".len() as u32;
-+ self.serialization.push('#');
- self.parse_fragment(input_after_first_char);
- Ok(Url {
- serialization: self.serialization,
-@@ -467,18 +559,18 @@
- }
- }
- Some('/') | Some('\\') => {
-- self.syntax_violation_if("backslash", || first_char == Some('\\'));
-+ self.violation_fn.call_if(Backslash, || first_char == Some('\\'));
- // file slash state
- let (next_char, input_after_next_char) = input_after_first_char.split_first();
-- self.syntax_violation_if("backslash", || next_char == Some('\\'));
-+ self.violation_fn.call_if(Backslash, || next_char == Some('\\'));
- if matches!(next_char, Some('/') | Some('\\')) {
- // file host state
- self.serialization.push_str("file://");
- let scheme_end = "file".len() as u32;
- let host_start = "file://".len() as u32;
-- let (path_start, host, remaining) =
-+ let (path_start, mut host, remaining) =
- self.parse_file_host(input_after_next_char)?;
-- let host_end = to_u32(self.serialization.len())?;
-+ let mut host_end = to_u32(self.serialization.len())?;
- let mut has_host = !matches!(host, HostInternal::None);
- let remaining = if path_start {
- self.parse_path_start(SchemeType::File, &mut has_host, remaining)
-@@ -487,7 +579,13 @@
- self.serialization.push('/');
- self.parse_path(SchemeType::File, &mut has_host, path_start, remaining)
- };
-- // FIXME: deal with has_host
-+ // For file URLs that have a host and whose path starts
-+ // with the windows drive letter we just remove the host.
-+ if !has_host {
-+ self.serialization.drain(host_start as usize..host_end as usize);
-+ host_end = host_start;
-+ host = HostInternal::None;
-+ }
- let (query_start, fragment_start) =
- self.parse_query_and_fragment(scheme_end, remaining)?;
- Ok(Url {
-@@ -616,7 +714,7 @@
- Some('/') | Some('\\') => {
- let (slashes_count, remaining) = input.count_matching(|c| matches!(c, '/' | '\\'));
- if slashes_count >= 2 {
-- self.syntax_violation_if("expected //", || {
-+ self.violation_fn.call_if(SyntaxViolation::ExpectedDoubleSlash, || {
- input.clone().take_while(|&c| matches!(c, '/' | '\\'))
- .collect::<String>() != "//"
- });
-@@ -680,11 +778,9 @@
- match c {
- '@' => {
- if last_at.is_some() {
-- self.syntax_violation("unencoded @ sign in username or password")
-+ self.violation_fn.call(SyntaxViolation::UnencodedAtSign)
- } else {
-- self.syntax_violation(
-- "embedding authentification information (username or password) \
-- in an URL is not recommended")
-+ self.violation_fn.call(SyntaxViolation::EmbeddedCredentials)
- }
- last_at = Some((char_count, remaining.clone()))
- },
-@@ -701,14 +797,23 @@
- };
-
- let mut username_end = None;
-+ let mut has_password = false;
-+ let mut has_username = false;
- while userinfo_char_count > 0 {
- let (c, utf8_c) = input.next_utf8().unwrap();
- userinfo_char_count -= 1;
- if c == ':' && username_end.is_none() {
- // Start parsing password
- username_end = Some(to_u32(self.serialization.len())?);
-- self.serialization.push(':');
-+ // We don't add a colon if the password is empty
-+ if userinfo_char_count > 0 {
-+ self.serialization.push(':');
-+ has_password = true;
-+ }
- } else {
-+ if !has_password {
-+ has_username = true;
-+ }
- self.check_url_code_point(c, &input);
- self.serialization.extend(utf8_percent_encode(utf8_c, USERINFO_ENCODE_SET));
- }
-@@ -717,7 +822,9 @@
- Some(i) => i,
- None => to_u32(self.serialization.len())?,
- };
-- self.serialization.push('@');
-+ if has_username || has_password {
-+ self.serialization.push('@');
-+ }
- Ok((username_end, remaining))
- }
-
-@@ -783,6 +890,10 @@
- if scheme_type.is_special() && host_str.is_empty() {
- return Err(ParseError::EmptyHost)
- }
-+ if !scheme_type.is_special() {
-+ let host = Host::parse_opaque(host_str)?;
-+ return Ok((host, input));
-+ }
- let host = Host::parse(host_str)?;
- Ok((host, input))
- }
-@@ -867,7 +978,7 @@
- match input.split_first() {
- (Some('/'), remaining) => input = remaining,
- (Some('\\'), remaining) => if scheme_type.is_special() {
-- self.syntax_violation("backslash");
-+ self.violation_fn.call(SyntaxViolation::Backslash);
- input = remaining
- },
- _ => {}
-@@ -895,7 +1006,7 @@
- },
- '\\' if self.context != Context::PathSegmentSetter &&
- scheme_type.is_special() => {
-- self.syntax_violation("backslash");
-+ self.violation_fn.call(SyntaxViolation::Backslash);
- ends_with_slash = true;
- break
- },
-@@ -905,18 +1016,14 @@
- },
- _ => {
- self.check_url_code_point(c, &input);
-- if c == '%' {
-- let after_percent_sign = input.clone();
-- if matches!(input.next(), Some('2')) &&
-- matches!(input.next(), Some('E') | Some('e')) {
-- self.serialization.push('.');
-- continue
-- }
-- input = after_percent_sign
-- }
- if self.context == Context::PathSegmentSetter {
-- self.serialization.extend(utf8_percent_encode(
-- utf8_c, PATH_SEGMENT_ENCODE_SET));
-+ if scheme_type.is_special() {
-+ self.serialization.extend(utf8_percent_encode(
-+ utf8_c, SPECIAL_PATH_SEGMENT_ENCODE_SET));
-+ } else {
-+ self.serialization.extend(utf8_percent_encode(
-+ utf8_c, PATH_SEGMENT_ENCODE_SET));
-+ }
- } else {
- self.serialization.extend(utf8_percent_encode(
- utf8_c, DEFAULT_ENCODE_SET));
-@@ -925,7 +1032,7 @@
- }
- }
- match &self.serialization[segment_start..] {
-- ".." => {
-+ ".." | "%2e%2e" | "%2e%2E" | "%2E%2e" | "%2E%2E" | "%2e." | "%2E." | ".%2e" | ".%2E" => {
- debug_assert!(self.serialization.as_bytes()[segment_start - 1] == b'/');
- self.serialization.truncate(segment_start - 1); // Truncate "/.."
- self.pop_path(scheme_type, path_start);
-@@ -933,7 +1040,7 @@
- self.serialization.push('/')
- }
- },
-- "." => {
-+ "." | "%2e" | "%2E" => {
- self.serialization.truncate(segment_start);
- },
- _ => {
-@@ -945,7 +1052,7 @@
- self.serialization.push(':');
- }
- if *has_host {
-- self.syntax_violation("file: with host and Windows drive letter");
-+ self.violation_fn.call(SyntaxViolation::FileWithHostAndWindowsDrive);
- *has_host = false; // FIXME account for this in callers
- }
- }
-@@ -1087,7 +1194,7 @@
- pub fn parse_fragment(&mut self, mut input: Input) {
- while let Some((c, utf8_c)) = input.next_utf8() {
- if c == '\0' {
-- self.syntax_violation("NULL characters are ignored in URL fragment identifiers")
-+ self.violation_fn.call(SyntaxViolation::NullInFragment)
- } else {
- self.check_url_code_point(c, &input);
- self.serialization.extend(utf8_percent_encode(utf8_c,
-@@ -1097,15 +1204,16 @@
- }
-
- fn check_url_code_point(&self, c: char, input: &Input) {
-- if let Some(log) = self.log_syntax_violation {
-+ let vfn = self.violation_fn;
-+ if vfn.is_set() {
- if c == '%' {
- let mut input = input.clone();
- if !matches!((input.next(), input.next()), (Some(a), Some(b))
- if is_ascii_hex_digit(a) && is_ascii_hex_digit(b)) {
-- log("expected 2 hex digits after %")
-+ vfn.call(SyntaxViolation::PercentDecode)
- }
- } else if !is_url_code_point(c) {
-- log("non-URL code point")
-+ vfn.call(SyntaxViolation::NonUrlCodePoint)
- }
- }
- }
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/quirks.rs seamonkey-2.53.1/mozilla/third_party/rust/url/src/quirks.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/src/quirks.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/src/quirks.rs 2020-02-29 21:15:07.670769022 -0600
-@@ -46,7 +46,7 @@
-
- /// Getter for https://url.spec.whatwg.org/#dom-url-origin
- pub fn origin(url: &Url) -> String {
-- url.origin().unicode_serialization()
-+ url.origin().ascii_serialization()
- }
-
- /// Getter for https://url.spec.whatwg.org/#dom-url-protocol
-@@ -152,7 +152,7 @@
- {
- // has_host implies !cannot_be_a_base
- let scheme = url.scheme();
-- if !url.has_host() || scheme == "file" {
-+ if !url.has_host() || url.host() == Some(Host::Domain("")) || scheme == "file" {
- return Err(())
- }
- result = Parser::parse_port(Input::new(new_port), || default_port(scheme), Context::Setter)
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/data.rs seamonkey-2.53.1/mozilla/third_party/rust/url/tests/data.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/data.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/tests/data.rs 2020-02-29 21:15:43.807770565 -0600
-@@ -9,7 +9,7 @@
- //! Data-driven tests
-
- extern crate rustc_serialize;
--extern crate test;
-+extern crate rustc_test as test;
- extern crate url;
-
- use rustc_serialize::json::{self, Json};
-@@ -29,6 +29,7 @@
- fn run_parsing(input: &str, base: &str, expected: Result<ExpectedAttributes, ()>) {
- let base = match Url::parse(&base) {
- Ok(base) => base,
-+ Err(_) if expected.is_err() => return,
- Err(message) => panic!("Error parsing base {:?}: {}", base, message)
- };
- let (url, expected) = match (base.join(&input), expected) {
-@@ -188,11 +189,7 @@
- {
- let mut add_one = |name: String, run: test::TestFn| {
- tests.push(test::TestDescAndFn {
-- desc: test::TestDesc {
-- name: test::DynTestName(name),
-- ignore: false,
-- should_panic: test::ShouldPanic::No,
-- },
-+ desc: test::TestDesc::new(test::DynTestName(name)),
- testfn: run,
- })
- };
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/setters_tests.json seamonkey-2.53.1/mozilla/third_party/rust/url/tests/setters_tests.json
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/setters_tests.json 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/tests/setters_tests.json 2020-02-29 21:15:07.674769022 -0600
-@@ -102,6 +102,31 @@
- }
- },
- {
-+ "comment": "Can’t switch from file URL with no host",
-+ "href": "file://localhost/",
-+ "new_value": "http",
-+ "expected": {
-+ "href": "file:///",
-+ "protocol": "file:"
-+ }
-+ },
-+ {
-+ "href": "file:///test",
-+ "new_value": "gopher",
-+ "expected": {
-+ "href": "file:///test",
-+ "protocol": "file:"
-+ }
-+ },
-+ {
-+ "href": "file:",
-+ "new_value": "wss",
-+ "expected": {
-+ "href": "file:///",
-+ "protocol": "file:"
-+ }
-+ },
-+ {
- "comment": "Spec deviation: from special scheme to not is not problematic. https://github.com/whatwg/url/issues/104",
- "href": "http://example.net",
- "new_value": "b",
-@@ -176,6 +201,14 @@
- }
- },
- {
-+ "href": "javascript:alert(1)",
-+ "new_value": "wario",
-+ "expected": {
-+ "href": "javascript:alert(1)",
-+ "username": ""
-+ }
-+ },
-+ {
- "href": "http://example.net",
- "new_value": "me",
- "expected": {
-@@ -224,6 +257,30 @@
- "href": "http://%c3%89t%C3%A9@example.net/",
- "username": "%c3%89t%C3%A9"
- }
-+ },
-+ {
-+ "href": "sc:///",
-+ "new_value": "x",
-+ "expected": {
-+ "href": "sc:///",
-+ "username": ""
-+ }
-+ },
-+ {
-+ "href": "file://test/",
-+ "new_value": "test",
-+ "expected": {
-+ "href": "file://test/",
-+ "username": ""
-+ }
-+ },
-+ {
-+ "href": "javascript://x/",
-+ "new_value": "wario",
-+ "expected": {
-+ "href": "javascript://wario@x/",
-+ "username": "wario"
-+ }
- }
- ],
- "password": [
-@@ -303,10 +360,106 @@
- "href": "http://:%c3%89t%C3%A9@example.net/",
- "password": "%c3%89t%C3%A9"
- }
-+ },
-+ {
-+ "href": "sc:///",
-+ "new_value": "x",
-+ "expected": {
-+ "href": "sc:///",
-+ "password": ""
-+ }
-+ },
-+ {
-+ "href": "file://test/",
-+ "new_value": "test",
-+ "expected": {
-+ "href": "file://test/",
-+ "password": ""
-+ }
-+ },
-+ {
-+ "href": "javascript://x/",
-+ "new_value": "bowser",
-+ "expected": {
-+ "href": "javascript://:bowser@x/",
-+ "password": "bowser"
-+ }
- }
- ],
- "host": [
- {
-+ "href": "sc://x/",
-+ "new_value": "\u0009",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "\u000A",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "\u000D",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "#",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "/",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "?",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "@",
-+ "expected": {
-+ "href": "sc://x/",
-+ "host": "x",
-+ "hostname": "x"
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "ß",
-+ "expected": {
-+ "href": "sc://%C3%9F/",
-+ "host": "%C3%9F",
-+ "hostname": "%C3%9F"
-+ }
-+ },
-+ {
- "comment": "Cannot-be-a-base means no host",
- "href": "mailto:me@example.net",
- "new_value": "example.com",
-@@ -384,15 +537,6 @@
- }
- },
- {
-- "comment": "Path-only URLs can gain a host",
-- "href": "a:/foo",
-- "new_value": "example.net",
-- "expected": {
-- "href": "a://example.net/foo",
-- "host": "example.net"
-- }
-- },
-- {
- "comment": "IPv4 address syntax is normalized",
- "href": "http://example.net",
- "new_value": "0x7F000001:8080",
-@@ -536,7 +680,7 @@
- }
- },
- {
-- "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain",
-+ "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
- "href": "view-source+http://example.net/path",
- "new_value": "example.com\\stuff",
- "expected": {
-@@ -600,10 +744,119 @@
- "hostname": "example.com",
- "port": ""
- }
-+ },
-+ {
-+ "comment": "Broken IPv6",
-+ "href": "http://example.net/",
-+ "new_value": "[google.com]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.3.4x]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.3.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
- }
- ],
- "hostname": [
- {
-+ "href": "sc://x/",
-+ "new_value": "\u0009",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "\u000A",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "\u000D",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "#",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "/",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "?",
-+ "expected": {
-+ "href": "sc:///",
-+ "host": "",
-+ "hostname": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "@",
-+ "expected": {
-+ "href": "sc://x/",
-+ "host": "x",
-+ "hostname": "x"
-+ }
-+ },
-+ {
- "comment": "Cannot-be-a-base means no host",
- "href": "mailto:me@example.net",
- "new_value": "example.com",
-@@ -659,15 +912,6 @@
- }
- },
- {
-- "comment": "Path-only URLs can gain a host",
-- "href": "a:/foo",
-- "new_value": "example.net",
-- "expected": {
-- "href": "a://example.net/foo",
-- "host": "example.net"
-- }
-- },
-- {
- "comment": "IPv4 address syntax is normalized",
- "href": "http://example.net:8080",
- "new_value": "0x7F000001",
-@@ -756,7 +1000,7 @@
- }
- },
- {
-- "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain",
-+ "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
- "href": "view-source+http://example.net/path",
- "new_value": "example.com\\stuff",
- "expected": {
-@@ -765,6 +1009,52 @@
- "hostname": "example.net",
- "port": ""
- }
-+ },
-+ {
-+ "comment": "Broken IPv6",
-+ "href": "http://example.net/",
-+ "new_value": "[google.com]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.3.4x]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.3.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.2.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
-+ },
-+ {
-+ "href": "http://example.net/",
-+ "new_value": "[::1.]",
-+ "expected": {
-+ "href": "http://example.net/",
-+ "host": "example.net",
-+ "hostname": "example.net"
-+ }
- }
- ],
- "port": [
-@@ -779,7 +1069,7 @@
- }
- },
- {
-- "comment": "Port number is removed if empty in the new value: https://github.com/whatwg/url/pull/113",
-+ "comment": "Port number is removed if empty is the new value",
- "href": "http://example.net:8080",
- "new_value": "",
- "expected": {
-@@ -920,6 +1210,65 @@
- "hostname": "example.net",
- "port": "8080"
- }
-+ },
-+ {
-+ "comment": "Port numbers are 16 bit integers, overflowing is an error",
-+ "href": "non-special://example.net:8080/path",
-+ "new_value": "65536",
-+ "expected": {
-+ "href": "non-special://example.net:8080/path",
-+ "host": "example.net:8080",
-+ "hostname": "example.net",
-+ "port": "8080"
-+ }
-+ },
-+ {
-+ "href": "file://test/",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "file://test/",
-+ "port": ""
-+ }
-+ },
-+ {
-+ "href": "file://localhost/",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "file:///",
-+ "port": ""
-+ }
-+ },
-+ {
-+ "href": "non-base:value",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "non-base:value",
-+ "port": ""
-+ }
-+ },
-+ {
-+ "href": "sc:///",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "sc:///",
-+ "port": ""
-+ }
-+ },
-+ {
-+ "href": "sc://x/",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "sc://x:12/",
-+ "port": "12"
-+ }
-+ },
-+ {
-+ "href": "javascript://x/",
-+ "new_value": "12",
-+ "expected": {
-+ "href": "javascript://x:12/",
-+ "port": "12"
-+ }
- }
- ],
- "pathname": [
-@@ -970,8 +1319,8 @@
- "href": "view-source+http://example.net/home?lang=fr#nav",
- "new_value": "\\a\\%2E\\b\\%2e.\\c",
- "expected": {
-- "href": "view-source+http://example.net/\\a\\.\\b\\..\\c?lang=fr#nav",
-- "pathname": "/\\a\\.\\b\\..\\c"
-+ "href": "view-source+http://example.net/\\a\\%2E\\b\\%2e.\\c?lang=fr#nav",
-+ "pathname": "/\\a\\%2E\\b\\%2e.\\c"
- }
- },
- {
-@@ -984,12 +1333,48 @@
- }
- },
- {
-- "comment": "Bytes already percent-encoded are left as-is, except %2E.",
-+ "comment": "Bytes already percent-encoded are left as-is, including %2E outside dotted segments.",
- "href": "http://example.net",
- "new_value": "%2e%2E%c3%89té",
- "expected": {
-- "href": "http://example.net/..%c3%89t%C3%A9",
-- "pathname": "/..%c3%89t%C3%A9"
-+ "href": "http://example.net/%2e%2E%c3%89t%C3%A9",
-+ "pathname": "/%2e%2E%c3%89t%C3%A9"
-+ }
-+ },
-+ {
-+ "comment": "? needs to be encoded",
-+ "href": "http://example.net",
-+ "new_value": "?",
-+ "expected": {
-+ "href": "http://example.net/%3F",
-+ "pathname": "/%3F"
-+ }
-+ },
-+ {
-+ "comment": "# needs to be encoded",
-+ "href": "http://example.net",
-+ "new_value": "#",
-+ "expected": {
-+ "href": "http://example.net/%23",
-+ "pathname": "/%23"
-+ }
-+ },
-+ {
-+ "comment": "? needs to be encoded, non-special scheme",
-+ "href": "sc://example.net",
-+ "new_value": "?",
-+ "expected": {
-+ "href": "sc://example.net/%3F",
-+ "pathname": "/%3F"
-+ }
-+ },
-+ {
-+ "comment": "# needs to be encoded, non-special scheme",
-+ "href": "sc://example.net",
-+ "new_value": "#",
-+ "expected": {
-+ "href": "sc://example.net/%23",
-+ "pathname": "/%23"
- }
- }
- ],
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/unit.rs seamonkey-2.53.1/mozilla/third_party/rust/url/tests/unit.rs
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/unit.rs 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/tests/unit.rs 2020-02-29 21:15:43.808770565 -0600
-@@ -11,7 +11,9 @@
- #[macro_use]
- extern crate url;
-
-+use std::ascii::AsciiExt;
- use std::borrow::Cow;
-+use std::cell::{Cell, RefCell};
- use std::net::{Ipv4Addr, Ipv6Addr};
- use std::path::{Path, PathBuf};
- use url::{Host, HostAndPort, Url, form_urlencoded};
-@@ -108,6 +110,17 @@
- }
-
- #[test]
-+fn path_backslash_fun() {
-+ let mut special_url = "http://foobar.com".parse::<Url>().unwrap();
-+ special_url.path_segments_mut().unwrap().push("foo\\bar");
-+ assert_eq!(special_url.as_str(), "http://foobar.com/foo%5Cbar");
-+
-+ let mut nonspecial_url = "thing://foobar.com".parse::<Url>().unwrap();
-+ nonspecial_url.path_segments_mut().unwrap().push("foo\\bar");
-+ assert_eq!(nonspecial_url.as_str(), "thing://foobar.com/foo\\bar");
-+}
-+
-+#[test]
- fn from_str() {
- assert!("http://testing.com/this".parse::<Url>().is_ok());
- }
-@@ -221,7 +234,7 @@
- ("http://example.com/", "http://example.com/"),
- ("http://addslash.com", "http://addslash.com/"),
- ("http://@emptyuser.com/", "http://emptyuser.com/"),
-- ("http://:@emptypass.com/", "http://:@emptypass.com/"),
-+ ("http://:@emptypass.com/", "http://emptypass.com/"),
- ("http://user@user.com/", "http://user@user.com/"),
- ("http://user:pass@userpass.com/", "http://user:pass@userpass.com/"),
- ("http://slashquery.com/path/?q=something", "http://slashquery.com/path/?q=something"),
-@@ -256,6 +269,15 @@
- }
-
- #[test]
-+fn form_urlencoded_custom_encoding_override() {
-+ let encoded = form_urlencoded::Serializer::new(String::new())
-+ .custom_encoding_override(|s| s.as_bytes().to_ascii_uppercase().into())
-+ .append_pair("foo", "bar")
-+ .finish();
-+ assert_eq!(encoded, "FOO=BAR");
-+}
-+
-+#[test]
- fn host_and_port_display() {
- assert_eq!(
- format!(
-@@ -286,22 +308,6 @@
- }
-
- #[test]
--/// https://github.com/servo/rust-url/issues/25
--fn issue_25() {
-- let filename = if cfg!(windows) { r"C:\run\pg.sock" } else { "/run/pg.sock" };
-- let mut url = Url::from_file_path(filename).unwrap();
-- url.check_invariants().unwrap();
-- url.set_scheme("postgres").unwrap();
-- url.check_invariants().unwrap();
-- url.set_host(Some("")).unwrap();
-- url.check_invariants().unwrap();
-- url.set_username("me").unwrap();
-- url.check_invariants().unwrap();
-- let expected = format!("postgres://me@/{}run/pg.sock", if cfg!(windows) { "C:/" } else { "" });
-- assert_eq!(url.as_str(), expected);
--}
--
--#[test]
- /// https://github.com/servo/rust-url/issues/61
- fn issue_61() {
- let mut url = Url::parse("http://mozilla.org").unwrap();
-@@ -372,6 +378,11 @@
- let mut url = Url::parse("foobar://example.net/hello").unwrap();
- url.set_host(None).unwrap();
- assert_eq!(url.as_str(), "foobar:/hello");
-+
-+ let mut url = Url::parse("foo://ș").unwrap();
-+ assert_eq!(url.as_str(), "foo://%C8%99/");
-+ url.set_host(Some("goșu.ro")).unwrap();
-+ assert_eq!(url.as_str(), "foo://go%C8%99u.ro/");
- }
-
- #[test]
-@@ -478,3 +489,68 @@
- let url = Url::from_file_path(Path::new(r"\\.\some\path\file.txt"));
- assert!(url.is_err());
- }
-+
-+// Test the now deprecated log_syntax_violation method for backward
-+// compatibility
-+#[test]
-+#[allow(deprecated)]
-+fn test_old_log_violation_option() {
-+ let violation = Cell::new(None);
-+ let url = Url::options()
-+ .log_syntax_violation(Some(&|s| violation.set(Some(s.to_owned()))))
-+ .parse("http:////mozilla.org:42").unwrap();
-+ assert_eq!(url.port(), Some(42));
-+
-+ let violation = violation.take();
-+ assert_eq!(violation, Some("expected //".to_string()));
-+}
-+
-+#[test]
-+fn test_syntax_violation_callback() {
-+ use url::SyntaxViolation::*;
-+ let violation = Cell::new(None);
-+ let url = Url::options()
-+ .syntax_violation_callback(Some(&|v| violation.set(Some(v))))
-+ .parse("http:////mozilla.org:42").unwrap();
-+ assert_eq!(url.port(), Some(42));
-+
-+ let v = violation.take().unwrap();
-+ assert_eq!(v, ExpectedDoubleSlash);
-+ assert_eq!(v.description(), "expected //");
-+}
-+
-+#[test]
-+fn test_syntax_violation_callback_lifetimes() {
-+ use url::SyntaxViolation::*;
-+ let violation = Cell::new(None);
-+ let vfn = |s| violation.set(Some(s));
-+
-+ let url = Url::options()
-+ .syntax_violation_callback(Some(&vfn))
-+ .parse("http:////mozilla.org:42").unwrap();
-+ assert_eq!(url.port(), Some(42));
-+ assert_eq!(violation.take(), Some(ExpectedDoubleSlash));
-+
-+ let url = Url::options()
-+ .syntax_violation_callback(Some(&vfn))
-+ .parse("http://mozilla.org\\path").unwrap();
-+ assert_eq!(url.path(), "/path");
-+ assert_eq!(violation.take(), Some(Backslash));
-+}
-+
-+#[test]
-+fn test_options_reuse() {
-+ use url::SyntaxViolation::*;
-+ let violations = RefCell::new(Vec::new());
-+ let vfn = |v| violations.borrow_mut().push(v);
-+
-+ let options = Url::options()
-+ .syntax_violation_callback(Some(&vfn));
-+ let url = options.parse("http:////mozilla.org").unwrap();
-+
-+ let options = options.base_url(Some(&url));
-+ let url = options.parse("/sub\\path").unwrap();
-+ assert_eq!(url.as_str(), "http://mozilla.org/sub/path");
-+ assert_eq!(*violations.borrow(),
-+ vec!(ExpectedDoubleSlash, Backslash));
-+}
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/urltestdata.json seamonkey-2.53.1/mozilla/third_party/rust/url/tests/urltestdata.json
---- seamonkey-2.53.1.orig/mozilla/third_party/rust/url/tests/urltestdata.json 2020-02-17 17:39:21.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/third_party/rust/url/tests/urltestdata.json 2020-02-29 21:15:07.679769022 -0600
-@@ -31,6 +31,66 @@
- "hash": "#c"
- },
- {
-+ "input": "https://test:@test",
-+ "base": "about:blank",
-+ "href": "https://test@test/",
-+ "origin": "https://test",
-+ "protocol": "https:",
-+ "username": "test",
-+ "password": "",
-+ "host": "test",
-+ "hostname": "test",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "https://:@test",
-+ "base": "about:blank",
-+ "href": "https://test/",
-+ "origin": "https://test",
-+ "protocol": "https:",
-+ "username": "",
-+ "password": "",
-+ "host": "test",
-+ "hostname": "test",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://test:@test/x",
-+ "base": "about:blank",
-+ "href": "non-special://test@test/x",
-+ "origin": "null",
-+ "protocol": "non-special:",
-+ "username": "test",
-+ "password": "",
-+ "host": "test",
-+ "hostname": "test",
-+ "port": "",
-+ "pathname": "/x",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://:@test/x",
-+ "base": "about:blank",
-+ "href": "non-special://test/x",
-+ "origin": "null",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "test",
-+ "hostname": "test",
-+ "port": "",
-+ "pathname": "/x",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
- "input": "http:foo.com",
- "base": "http://example.org/foo/bar",
- "href": "http://example.org/foo/foo.com",
-@@ -106,6 +166,20 @@
- "hash": "# e"
- },
- {
-+ "input": "lolscheme:x x#x x",
-+ "base": "about:blank",
-+ "href": "lolscheme:x x#x x",
-+ "protocol": "lolscheme:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "x x",
-+ "search": "",
-+ "hash": "#x x"
-+ },
-+ {
- "input": "http://f:/c",
- "base": "http://example.org/foo/bar",
- "href": "http://f/c",
-@@ -201,6 +275,11 @@
- "failure": true
- },
- {
-+ "input": "non-special://f:999999/c",
-+ "base": "http://example.org/foo/bar",
-+ "failure": true
-+ },
-+ {
- "input": "http://f: 21 / b ? d # e ",
- "base": "http://example.org/foo/bar",
- "failure": true
-@@ -960,6 +1039,26 @@
- "hash": ""
- },
- {
-+ "input": "file://example:1/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "file://example:test/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "file://example%/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "file://[example]/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
- "input": "ftps:/example.com/",
- "base": "http://example.org/foo/bar",
- "href": "ftps:/example.com/",
-@@ -1785,7 +1884,7 @@
- {
- "input": "http://example.com/foo/%2e%2",
- "base": "about:blank",
-- "href": "http://example.com/foo/.%2",
-+ "href": "http://example.com/foo/%2e%2",
- "origin": "http://example.com",
- "protocol": "http:",
- "username": "",
-@@ -1793,14 +1892,14 @@
- "host": "example.com",
- "hostname": "example.com",
- "port": "",
-- "pathname": "/foo/.%2",
-+ "pathname": "/foo/%2e%2",
- "search": "",
- "hash": ""
- },
- {
- "input": "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar",
- "base": "about:blank",
-- "href": "http://example.com/..bar",
-+ "href": "http://example.com/%2e.bar",
- "origin": "http://example.com",
- "protocol": "http:",
- "username": "",
-@@ -1808,7 +1907,7 @@
- "host": "example.com",
- "hostname": "example.com",
- "port": "",
-- "pathname": "/..bar",
-+ "pathname": "/%2e.bar",
- "search": "",
- "hash": ""
- },
-@@ -2189,11 +2288,6 @@
- "hash": "# %C2%BB"
- },
- {
-- "input": "http://[www.google.com]/",
-- "base": "about:blank",
-- "failure": true
-- },
-- {
- "input": "http://www.google.com",
- "base": "about:blank",
- "href": "http://www.google.com/",
-@@ -2226,7 +2320,7 @@
- {
- "input": "http://www/foo%2Ehtml",
- "base": "about:blank",
-- "href": "http://www/foo.html",
-+ "href": "http://www/foo%2Ehtml",
- "origin": "http://www",
- "protocol": "http:",
- "username": "",
-@@ -2234,7 +2328,7 @@
- "host": "www",
- "hostname": "www",
- "port": "",
-- "pathname": "/foo.html",
-+ "pathname": "/foo%2Ehtml",
- "search": "",
- "hash": ""
- },
-@@ -3096,7 +3190,7 @@
- {
- "input": "http:a:@www.example.com",
- "base": "about:blank",
-- "href": "http://a:@www.example.com/",
-+ "href": "http://a@www.example.com/",
- "origin": "http://www.example.com",
- "protocol": "http:",
- "username": "a",
-@@ -3111,7 +3205,7 @@
- {
- "input": "http:/a:@www.example.com",
- "base": "about:blank",
-- "href": "http://a:@www.example.com/",
-+ "href": "http://a@www.example.com/",
- "origin": "http://www.example.com",
- "protocol": "http:",
- "username": "a",
-@@ -3126,7 +3220,7 @@
- {
- "input": "http://a:@www.example.com",
- "base": "about:blank",
-- "href": "http://a:@www.example.com/",
-+ "href": "http://a@www.example.com/",
- "origin": "http://www.example.com",
- "protocol": "http:",
- "username": "a",
-@@ -3171,7 +3265,7 @@
- {
- "input": "http://:@www.example.com",
- "base": "about:blank",
-- "href": "http://:@www.example.com/",
-+ "href": "http://www.example.com/",
- "origin": "http://www.example.com",
- "protocol": "http:",
- "username": "",
-@@ -3465,6 +3559,22 @@
- "search": "",
- "hash": ""
- },
-+ "Leading and trailing C0 control or space",
-+ {
-+ "input": "\u0000\u001b\u0004\u0012 http://example.com/\u001f \u000d ",
-+ "base": "about:blank",
-+ "href": "http://example.com/",
-+ "origin": "http://example.com",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.com",
-+ "hostname": "example.com",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
- "Ideographic full stop (full-width period for Chinese, etc.) should be treated as a dot. U+3002 is mapped to U+002E (dot)",
- {
- "input": "http://www.foo。bar.com",
-@@ -3493,6 +3603,32 @@
- "base": "http://other.com/",
- "failure": true
- },
-+ "U+FFFD",
-+ {
-+ "input": "https://\ufffd",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://%EF%BF%BD",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://x/\ufffd?\ufffd#\ufffd",
-+ "base": "about:blank",
-+ "href": "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD",
-+ "origin": "https://x",
-+ "protocol": "https:",
-+ "username": "",
-+ "password": "",
-+ "host": "x",
-+ "hostname": "x",
-+ "port": "",
-+ "pathname": "/%EF%BF%BD",
-+ "search": "?%EF%BF%BD",
-+ "hash": "#%EF%BF%BD"
-+ },
- "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.",
- {
- "input": "http://Go.com",
-@@ -3536,7 +3672,7 @@
- "input": "http://你好你好",
- "base": "http://other.com/",
- "href": "http://xn--6qqa088eba/",
-- "origin": "http://你好你好",
-+ "origin": "http://xn--6qqa088eba",
- "protocol": "http:",
- "username": "",
- "password": "",
-@@ -3547,6 +3683,36 @@
- "search": "",
- "hash": ""
- },
-+ {
-+ "input": "https://faß.ExAmPlE/",
-+ "base": "about:blank",
-+ "href": "https://xn--fa-hia.example/",
-+ "origin": "https://xn--fa-hia.example",
-+ "protocol": "https:",
-+ "username": "",
-+ "password": "",
-+ "host": "xn--fa-hia.example",
-+ "hostname": "xn--fa-hia.example",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "sc://faß.ExAmPlE/",
-+ "base": "about:blank",
-+ "href": "sc://fa%C3%9F.ExAmPlE/",
-+ "origin": "null",
-+ "protocol": "sc:",
-+ "username": "",
-+ "password": "",
-+ "host": "fa%C3%9F.ExAmPlE",
-+ "hostname": "fa%C3%9F.ExAmPlE",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
- "Invalid escaped characters should fail and the percents should be escaped. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24191",
- {
- "input": "http://%zz%66%a.com",
-@@ -3600,18 +3766,23 @@
- "base": "http://other.com/",
- "failure": true
- },
-- "Invalid escaping should trigger the regular host error handling",
-+ "Invalid escaping in hosts causes failure",
- {
- "input": "http://%3g%78%63%30%2e%30%32%35%30%2E.01",
- "base": "http://other.com/",
- "failure": true
- },
-- "Something that isn't exactly an IP should get treated as a host and spaces escaped",
-+ "A space in a host causes failure",
- {
- "input": "http://192.168.0.1 hello",
- "base": "http://other.com/",
- "failure": true
- },
-+ {
-+ "input": "https://x x:12",
-+ "base": "about:blank",
-+ "failure": true
-+ },
- "Fullwidth and escaped UTF-8 fullwidth should still be treated as IP",
- {
- "input": "http://0Xc0.0250.01",
-@@ -3628,12 +3799,83 @@
- "search": "",
- "hash": ""
- },
-+ "Domains with empty labels",
-+ {
-+ "input": "http://./",
-+ "base": "about:blank",
-+ "href": "http://./",
-+ "origin": "http://.",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": ".",
-+ "hostname": ".",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://../",
-+ "base": "about:blank",
-+ "href": "http://../",
-+ "origin": "http://..",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "..",
-+ "hostname": "..",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://0..0x300/",
-+ "base": "about:blank",
-+ "href": "http://0..0x300/",
-+ "origin": "http://0..0x300",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "0..0x300",
-+ "hostname": "0..0x300",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
- "Broken IPv6",
- {
-+ "input": "http://[www.google.com]/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
- "input": "http://[google.com]",
- "base": "http://other.com/",
- "failure": true
- },
-+ {
-+ "input": "http://[::1.2.3.4x]",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://[::1.2.3.]",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://[::1.2.]",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://[::1.]",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
- "Misc Unicode",
- {
- "input": "http://foo:💩@example.com/bar",
-@@ -4176,22 +4418,91 @@
- "search": "",
- "hash": ""
- },
-- "# unknown schemes and non-ASCII domains",
-+ "# unknown schemes and their hosts",
- {
- "input": "sc://ñ.test/",
- "base": "about:blank",
-- "href": "sc://xn--ida.test/",
-+ "href": "sc://%C3%B1.test/",
- "origin": "null",
- "protocol": "sc:",
- "username": "",
- "password": "",
-- "host": "xn--ida.test",
-- "hostname": "xn--ida.test",
-+ "host": "%C3%B1.test",
-+ "hostname": "%C3%B1.test",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
-+ {
-+ "input": "sc://\u001F!\"$&'()*+,-.;<=>^_`{|}~/",
-+ "base": "about:blank",
-+ "href": "sc://%1F!\"$&'()*+,-.;<=>^_`{|}~/",
-+ "origin": "null",
-+ "protocol": "sc:",
-+ "username": "",
-+ "password": "",
-+ "host": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
-+ "hostname": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "sc://\u0000/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "sc:// /",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "sc://%/",
-+ "base": "about:blank",
-+ "href": "sc://%/",
-+ "protocol": "sc:",
-+ "username": "",
-+ "password": "",
-+ "host": "%",
-+ "hostname": "%",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "sc://[/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "sc://\\/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "sc://]/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "x",
-+ "base": "sc://ñ",
-+ "href": "sc://%C3%B1/x",
-+ "origin": "null",
-+ "protocol": "sc:",
-+ "username": "",
-+ "password": "",
-+ "host": "%C3%B1",
-+ "hostname": "%C3%B1",
-+ "port": "",
-+ "pathname": "/x",
-+ "search": "",
-+ "hash": ""
-+ },
- "# unknown schemes and backslashes",
- {
- "input": "sc:\\../",
-@@ -4224,6 +4535,88 @@
- "search": "",
- "hash": ""
- },
-+ "# unknown scheme with bogus percent-encoding",
-+ {
-+ "input": "wow:%NBD",
-+ "base": "about:blank",
-+ "href": "wow:%NBD",
-+ "origin": "null",
-+ "protocol": "wow:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "%NBD",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "wow:%1G",
-+ "base": "about:blank",
-+ "href": "wow:%1G",
-+ "origin": "null",
-+ "protocol": "wow:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "%1G",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# Hosts and percent-encoding",
-+ {
-+ "input": "ftp://example.com%80/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "ftp://example.com%A0/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://example.com%80/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://example.com%A0/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "ftp://%e2%98%83",
-+ "base": "about:blank",
-+ "href": "ftp://xn--n3h/",
-+ "origin": "ftp://xn--n3h",
-+ "protocol": "ftp:",
-+ "username": "",
-+ "password": "",
-+ "host": "xn--n3h",
-+ "hostname": "xn--n3h",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "https://%e2%98%83",
-+ "base": "about:blank",
-+ "href": "https://xn--n3h/",
-+ "origin": "https://xn--n3h",
-+ "protocol": "https:",
-+ "username": "",
-+ "password": "",
-+ "host": "xn--n3h",
-+ "hostname": "xn--n3h",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
- "# tests from jsdom/whatwg-url designed for code coverage",
- {
- "input": "http://127.0.0.1:10100/relative_import.html",
-@@ -4371,75 +4764,1385 @@
- "port": "",
- "pathname": "/baz",
- "search": "?qux",
-- "searchParams": "",
-+ "searchParams": "qux=",
- "hash": "#foo%08bar"
- },
-- "# IPv6 compression and serialization",
-+ "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)",
-+ {
-+ "input": "http://192.168.257",
-+ "base": "http://other.com/",
-+ "href": "http://192.168.1.1/",
-+ "origin": "http://192.168.1.1",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "192.168.1.1",
-+ "hostname": "192.168.1.1",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://192.168.257.com",
-+ "base": "http://other.com/",
-+ "href": "http://192.168.257.com/",
-+ "origin": "http://192.168.257.com",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "192.168.257.com",
-+ "hostname": "192.168.257.com",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://256",
-+ "base": "http://other.com/",
-+ "href": "http://0.0.1.0/",
-+ "origin": "http://0.0.1.0",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "0.0.1.0",
-+ "hostname": "0.0.1.0",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://256.com",
-+ "base": "http://other.com/",
-+ "href": "http://256.com/",
-+ "origin": "http://256.com",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "256.com",
-+ "hostname": "256.com",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://999999999",
-+ "base": "http://other.com/",
-+ "href": "http://59.154.201.255/",
-+ "origin": "http://59.154.201.255",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "59.154.201.255",
-+ "hostname": "59.154.201.255",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://999999999.com",
-+ "base": "http://other.com/",
-+ "href": "http://999999999.com/",
-+ "origin": "http://999999999.com",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "999999999.com",
-+ "hostname": "999999999.com",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://10000000000",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://10000000000.com",
-+ "base": "http://other.com/",
-+ "href": "http://10000000000.com/",
-+ "origin": "http://10000000000.com",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "10000000000.com",
-+ "hostname": "10000000000.com",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://4294967295",
-+ "base": "http://other.com/",
-+ "href": "http://255.255.255.255/",
-+ "origin": "http://255.255.255.255",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "255.255.255.255",
-+ "hostname": "255.255.255.255",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://4294967296",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://0xffffffff",
-+ "base": "http://other.com/",
-+ "href": "http://255.255.255.255/",
-+ "origin": "http://255.255.255.255",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "255.255.255.255",
-+ "hostname": "255.255.255.255",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://0xffffffff1",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://256.256.256.256",
-+ "base": "http://other.com/",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://256.256.256.256.256",
-+ "base": "http://other.com/",
-+ "href": "http://256.256.256.256.256/",
-+ "origin": "http://256.256.256.256.256",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "256.256.256.256.256",
-+ "hostname": "256.256.256.256.256",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "https://0x.0x.0",
-+ "base": "about:blank",
-+ "href": "https://0.0.0.0/",
-+ "origin": "https://0.0.0.0",
-+ "protocol": "https:",
-+ "username": "",
-+ "password": "",
-+ "host": "0.0.0.0",
-+ "hostname": "0.0.0.0",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "More IPv4 parsing (via https://github.com/jsdom/whatwg-url/issues/92)",
-+ {
-+ "input": "https://256.0.0.1/test",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ "# file URLs containing percent-encoded Windows drive letters (shouldn't work)",
-+ {
-+ "input": "file:///C%3A/",
-+ "base": "about:blank",
-+ "href": "file:///C%3A/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C%3A/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file:///C%7C/",
-+ "base": "about:blank",
-+ "href": "file:///C%7C/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C%7C/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
-+ {
-+ "input": "pix/submit.gif",
-+ "base": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html",
-+ "href": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "..",
-+ "base": "file:///C:/",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "..",
-+ "base": "file:///",
-+ "href": "file:///",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# More file URL tests by zcorpan and annevk",
-+ {
-+ "input": "/",
-+ "base": "file:///C:/a/b",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "//d:",
-+ "base": "file:///C:/a/b",
-+ "href": "file:///d:",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/d:",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "//d:/..",
-+ "base": "file:///C:/a/b",
-+ "href": "file:///d:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/d:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "..",
-+ "base": "file:///ab:/",
-+ "href": "file:///",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "..",
-+ "base": "file:///1:/",
-+ "href": "file:///",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?test",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?test",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file:",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?test",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?test",
-+ "hash": ""
-+ },
-+ {
-+ "input": "?x",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?x",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?x",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file:?x",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?x",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?x",
-+ "hash": ""
-+ },
-+ {
-+ "input": "#x",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?test#x",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?test",
-+ "hash": "#x"
-+ },
-+ {
-+ "input": "file:#x",
-+ "base": "file:///test?test#test",
-+ "href": "file:///test?test#x",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?test",
-+ "hash": "#x"
-+ },
-+ "# File URLs and many (back)slashes",
-+ {
-+ "input": "file:///localhost//cat",
-+ "base": "about:blank",
-+ "href": "file:///localhost//cat",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/localhost//cat",
-+ "search": "",
-+ "hash": ""
-+ },
- {
-- "input": "http://[fe80:cd00::1257:0:211e:729c]/",
-+ "input": "\\//pig",
-+ "base": "file://lion/",
-+ "href": "file:///pig",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/pig",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file://",
-+ "base": "file://ape/",
-+ "href": "file:///",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# Windows drive letter handling with the 'file:' base URL",
-+ {
-+ "input": "C|#",
-+ "base": "file://host/dir/file",
-+ "href": "file:///C:#",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C|?",
-+ "base": "file://host/dir/file",
-+ "href": "file:///C:?",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C|/",
-+ "base": "file://host/dir/file",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C|\n/",
-+ "base": "file://host/dir/file",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C|\\",
-+ "base": "file://host/dir/file",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C",
-+ "base": "file://host/dir/file",
-+ "href": "file://host/dir/C",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "host",
-+ "hostname": "host",
-+ "port": "",
-+ "pathname": "/dir/C",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "C|a",
-+ "base": "file://host/dir/file",
-+ "href": "file://host/dir/C|a",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "host",
-+ "hostname": "host",
-+ "port": "",
-+ "pathname": "/dir/C|a",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# Windows drive letter quirk in the file slash state",
-+ {
-+ "input": "/c:/foo/bar",
-+ "base": "file://host/path",
-+ "href": "file:///c:/foo/bar",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/c:/foo/bar",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# Windows drive letter quirk (no host)",
-+ {
-+ "input": "file:/C|/",
- "base": "about:blank",
-- "href": "http://[fe80:cd00::1257:0:211e:729c]/",
-- "origin": "http://[fe80:cd00::1257:0:211e:729c]",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file://C|/",
-+ "base": "about:blank",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# Windows drive letter quirk with not empty host",
-+ {
-+ "input": "file://example.net/C:/",
-+ "base": "about:blank",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file://1.2.3.4/C:/",
-+ "base": "about:blank",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file://[1::8]/C:/",
-+ "base": "about:blank",
-+ "href": "file:///C:/",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/C:/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# file URLs without base URL by Rimas Misevičius",
-+ {
-+ "input": "file:",
-+ "base": "about:blank",
-+ "href": "file:///",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file:?q=v",
-+ "base": "about:blank",
-+ "href": "file:///?q=v",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "?q=v",
-+ "hash": ""
-+ },
-+ {
-+ "input": "file:#frag",
-+ "base": "about:blank",
-+ "href": "file:///#frag",
-+ "protocol": "file:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": "#frag"
-+ },
-+ "# IPv6 tests",
-+ {
-+ "input": "http://[1:0::]",
-+ "base": "http://example.net/",
-+ "href": "http://[1::]/",
-+ "origin": "http://[1::]",
- "protocol": "http:",
- "username": "",
- "password": "",
-- "host": "[fe80:cd00::1257:0:211e:729c]",
-- "hostname": "[fe80:cd00::1257:0:211e:729c]",
-+ "host": "[1::]",
-+ "hostname": "[1::]",
- "port": "",
- "pathname": "/",
- "search": "",
-- "searchParams": "",
- "hash": ""
- },
-- "# IPv6 compression and serialization: Compress sequences of two or more zeroes",
- {
-- "input": "http://[fe80:cd00:0:0:1257:0:211e:729c]/",
-+ "input": "http://[0:1:2:3:4:5:6:7:8]",
-+ "base": "http://example.net/",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0::0::0]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:.0]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:0:]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:1:2:3:4:5:6:7.0.0.0.1]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:1.00.0.0.0]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:1.290.0.0.0]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "https://[0:1.23.23]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ "# Empty host",
-+ {
-+ "input": "http://?",
- "base": "about:blank",
-- "href": "http://[fe80:cd00::1257:0:211e:729c]/",
-- "origin": "http://[fe80:cd00::1257:0:211e:729c]",
-+ "failure": true
-+ },
-+ {
-+ "input": "http://#",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ "Port overflow (2^32 + 81)",
-+ {
-+ "input": "http://f:4294967377/c",
-+ "base": "http://example.org/",
-+ "failure": true
-+ },
-+ "Port overflow (2^64 + 81)",
-+ {
-+ "input": "http://f:18446744073709551697/c",
-+ "base": "http://example.org/",
-+ "failure": true
-+ },
-+ "Port overflow (2^128 + 81)",
-+ {
-+ "input": "http://f:340282366920938463463374607431768211537/c",
-+ "base": "http://example.org/",
-+ "failure": true
-+ },
-+ "# Non-special-URL path tests",
-+ {
-+ "input": "///",
-+ "base": "sc://x/",
-+ "href": "sc:///",
-+ "protocol": "sc:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "tftp://foobar.com/someconfig;mode=netascii",
-+ "base": "about:blank",
-+ "href": "tftp://foobar.com/someconfig;mode=netascii",
-+ "origin": "null",
-+ "protocol": "tftp:",
-+ "username": "",
-+ "password": "",
-+ "host": "foobar.com",
-+ "hostname": "foobar.com",
-+ "port": "",
-+ "pathname": "/someconfig;mode=netascii",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "telnet://user:pass@foobar.com:23/",
-+ "base": "about:blank",
-+ "href": "telnet://user:pass@foobar.com:23/",
-+ "origin": "null",
-+ "protocol": "telnet:",
-+ "username": "user",
-+ "password": "pass",
-+ "host": "foobar.com:23",
-+ "hostname": "foobar.com",
-+ "port": "23",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "ut2004://10.10.10.10:7777/Index.ut2",
-+ "base": "about:blank",
-+ "href": "ut2004://10.10.10.10:7777/Index.ut2",
-+ "origin": "null",
-+ "protocol": "ut2004:",
-+ "username": "",
-+ "password": "",
-+ "host": "10.10.10.10:7777",
-+ "hostname": "10.10.10.10",
-+ "port": "7777",
-+ "pathname": "/Index.ut2",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
-+ "base": "about:blank",
-+ "href": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
-+ "origin": "null",
-+ "protocol": "redis:",
-+ "username": "foo",
-+ "password": "bar",
-+ "host": "somehost:6379",
-+ "hostname": "somehost",
-+ "port": "6379",
-+ "pathname": "/0",
-+ "search": "?baz=bam&qux=baz",
-+ "hash": ""
-+ },
-+ {
-+ "input": "rsync://foo@host:911/sup",
-+ "base": "about:blank",
-+ "href": "rsync://foo@host:911/sup",
-+ "origin": "null",
-+ "protocol": "rsync:",
-+ "username": "foo",
-+ "password": "",
-+ "host": "host:911",
-+ "hostname": "host",
-+ "port": "911",
-+ "pathname": "/sup",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "git://github.com/foo/bar.git",
-+ "base": "about:blank",
-+ "href": "git://github.com/foo/bar.git",
-+ "origin": "null",
-+ "protocol": "git:",
-+ "username": "",
-+ "password": "",
-+ "host": "github.com",
-+ "hostname": "github.com",
-+ "port": "",
-+ "pathname": "/foo/bar.git",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "irc://myserver.com:6999/channel?passwd",
-+ "base": "about:blank",
-+ "href": "irc://myserver.com:6999/channel?passwd",
-+ "origin": "null",
-+ "protocol": "irc:",
-+ "username": "",
-+ "password": "",
-+ "host": "myserver.com:6999",
-+ "hostname": "myserver.com",
-+ "port": "6999",
-+ "pathname": "/channel",
-+ "search": "?passwd",
-+ "hash": ""
-+ },
-+ {
-+ "input": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
-+ "base": "about:blank",
-+ "href": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
-+ "origin": "null",
-+ "protocol": "dns:",
-+ "username": "",
-+ "password": "",
-+ "host": "fw.example.org:9999",
-+ "hostname": "fw.example.org",
-+ "port": "9999",
-+ "pathname": "/foo.bar.org",
-+ "search": "?type=TXT",
-+ "hash": ""
-+ },
-+ {
-+ "input": "ldap://localhost:389/ou=People,o=JNDITutorial",
-+ "base": "about:blank",
-+ "href": "ldap://localhost:389/ou=People,o=JNDITutorial",
-+ "origin": "null",
-+ "protocol": "ldap:",
-+ "username": "",
-+ "password": "",
-+ "host": "localhost:389",
-+ "hostname": "localhost",
-+ "port": "389",
-+ "pathname": "/ou=People,o=JNDITutorial",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "git+https://github.com/foo/bar",
-+ "base": "about:blank",
-+ "href": "git+https://github.com/foo/bar",
-+ "origin": "null",
-+ "protocol": "git+https:",
-+ "username": "",
-+ "password": "",
-+ "host": "github.com",
-+ "hostname": "github.com",
-+ "port": "",
-+ "pathname": "/foo/bar",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "urn:ietf:rfc:2648",
-+ "base": "about:blank",
-+ "href": "urn:ietf:rfc:2648",
-+ "origin": "null",
-+ "protocol": "urn:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "ietf:rfc:2648",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "tag:joe@example.org,2001:foo/bar",
-+ "base": "about:blank",
-+ "href": "tag:joe@example.org,2001:foo/bar",
-+ "origin": "null",
-+ "protocol": "tag:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "joe@example.org,2001:foo/bar",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# percent encoded hosts in non-special-URLs",
-+ {
-+ "input": "non-special://%E2%80%A0/",
-+ "base": "about:blank",
-+ "href": "non-special://%E2%80%A0/",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "%E2%80%A0",
-+ "hostname": "%E2%80%A0",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://H%4fSt/path",
-+ "base": "about:blank",
-+ "href": "non-special://H%4fSt/path",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "H%4fSt",
-+ "hostname": "H%4fSt",
-+ "port": "",
-+ "pathname": "/path",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "# IPv6 in non-special-URLs",
-+ {
-+ "input": "non-special://[1:2:0:0:5:0:0:0]/",
-+ "base": "about:blank",
-+ "href": "non-special://[1:2:0:0:5::]/",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "[1:2:0:0:5::]",
-+ "hostname": "[1:2:0:0:5::]",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://[1:2:0:0:0:0:0:3]/",
-+ "base": "about:blank",
-+ "href": "non-special://[1:2::3]/",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "[1:2::3]",
-+ "hostname": "[1:2::3]",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://[1:2::3]:80/",
-+ "base": "about:blank",
-+ "href": "non-special://[1:2::3]:80/",
-+ "protocol": "non-special:",
-+ "username": "",
-+ "password": "",
-+ "host": "[1:2::3]:80",
-+ "hostname": "[1:2::3]",
-+ "port": "80",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "non-special://[:80/",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ {
-+ "input": "blob:https://example.com:443/",
-+ "base": "about:blank",
-+ "href": "blob:https://example.com:443/",
-+ "protocol": "blob:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "https://example.com:443/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
-+ "base": "about:blank",
-+ "href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
-+ "protocol": "blob:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "d3958f5c-0777-0845-9dcf-2cb28783acaf",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "Invalid IPv4 radix digits",
-+ {
-+ "input": "http://0177.0.0.0189",
-+ "base": "about:blank",
-+ "href": "http://0177.0.0.0189/",
- "protocol": "http:",
- "username": "",
- "password": "",
-- "host": "[fe80:cd00::1257:0:211e:729c]",
-- "hostname": "[fe80:cd00::1257:0:211e:729c]",
-+ "host": "0177.0.0.0189",
-+ "hostname": "0177.0.0.0189",
- "port": "",
- "pathname": "/",
- "search": "",
-- "searchParams": "",
- "hash": ""
- },
-- "# IPv6 compression and serialization: Compress longest sequence of zeroes",
- {
-- "input": "http://[fe80:0:0:1257:0:0:0:cd00]/",
-+ "input": "http://0x7f.0.0.0x7g",
- "base": "about:blank",
-- "href": "http://[fe80:0:0:1257::cd00]/",
-- "origin": "http://[fe80:0:0:1257::cd00]",
-+ "href": "http://0x7f.0.0.0x7g/",
- "protocol": "http:",
- "username": "",
- "password": "",
-- "host": "[fe80:0:0:1257::cd00]",
-- "hostname": "[fe80:0:0:1257::cd00]",
-+ "host": "0x7f.0.0.0x7g",
-+ "hostname": "0x7f.0.0.0x7g",
- "port": "",
- "pathname": "/",
- "search": "",
-- "searchParams": "",
- "hash": ""
- },
-- "# IPv6 compression and serialization: Do not compress lone zeroes",
- {
-- "input": "http://[fe80:cd00:0:cde:1257:0:211e:729c]/",
-+ "input": "http://0X7F.0.0.0X7G",
- "base": "about:blank",
-- "href": "http://[fe80:cd00:0:cde:1257:0:211e:729c]/",
-- "origin": "http://[fe80:cd00:0:cde:1257:0:211e:729c]",
-+ "href": "http://0x7f.0.0.0x7g/",
- "protocol": "http:",
- "username": "",
- "password": "",
-- "host": "[fe80:cd00:0:cde:1257:0:211e:729c]",
-- "hostname": "[fe80:cd00:0:cde:1257:0:211e:729c]",
-+ "host": "0x7f.0.0.0x7g",
-+ "hostname": "0x7f.0.0.0x7g",
- "port": "",
- "pathname": "/",
- "search": "",
-- "searchParams": "",
- "hash": ""
-+ },
-+ "Invalid IPv4 portion of IPv6 address",
-+ {
-+ "input": "http://[::127.0.0.0.1]",
-+ "base": "about:blank",
-+ "failure": true
-+ },
-+ "Uncompressed IPv6 addresses with 0",
-+ {
-+ "input": "http://[0:1:0:1:0:1:0:1]",
-+ "base": "about:blank",
-+ "href": "http://[0:1:0:1:0:1:0:1]/",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "[0:1:0:1:0:1:0:1]",
-+ "hostname": "[0:1:0:1:0:1:0:1]",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://[1:0:1:0:1:0:1:0]",
-+ "base": "about:blank",
-+ "href": "http://[1:0:1:0:1:0:1:0]/",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "[1:0:1:0:1:0:1:0]",
-+ "hostname": "[1:0:1:0:1:0:1:0]",
-+ "port": "",
-+ "pathname": "/",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "Percent-encoded query and fragment",
-+ {
-+ "input": "http://example.org/test?\u0022",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%22",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%22",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?\u0023",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?#",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?\u003C",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%3C",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%3C",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?\u003E",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%3E",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%3E",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?\u2323",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%E2%8C%A3",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%E2%8C%A3",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?%23%23",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%23%23",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%23%23",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?%GH",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?%GH",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?%GH",
-+ "hash": ""
-+ },
-+ {
-+ "input": "http://example.org/test?a#%EF",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?a#%EF",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?a",
-+ "hash": "#%EF"
-+ },
-+ {
-+ "input": "http://example.org/test?a#%GH",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?a#%GH",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?a",
-+ "hash": "#%GH"
-+ },
-+ "Bad bases",
-+ {
-+ "input": "test-a.html",
-+ "base": "a",
-+ "failure": true
-+ },
-+ {
-+ "input": "test-a-slash.html",
-+ "base": "a/",
-+ "failure": true
-+ },
-+ {
-+ "input": "test-a-slash-slash.html",
-+ "base": "a//",
-+ "failure": true
-+ },
-+ {
-+ "input": "test-a-colon.html",
-+ "base": "a:",
-+ "failure": true
-+ },
-+ {
-+ "input": "test-a-colon-slash.html",
-+ "base": "a:/",
-+ "href": "a:/test-a-colon-slash.html",
-+ "protocol": "a:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test-a-colon-slash.html",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "test-a-colon-slash-slash.html",
-+ "base": "a://",
-+ "href": "a:///test-a-colon-slash-slash.html",
-+ "protocol": "a:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test-a-colon-slash-slash.html",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "test-a-colon-b.html",
-+ "base": "a:b",
-+ "failure": true
-+ },
-+ {
-+ "input": "test-a-colon-slash-b.html",
-+ "base": "a:/b",
-+ "href": "a:/test-a-colon-slash-b.html",
-+ "protocol": "a:",
-+ "username": "",
-+ "password": "",
-+ "host": "",
-+ "hostname": "",
-+ "port": "",
-+ "pathname": "/test-a-colon-slash-b.html",
-+ "search": "",
-+ "hash": ""
-+ },
-+ {
-+ "input": "test-a-colon-slash-slash-b.html",
-+ "base": "a://b",
-+ "href": "a://b/test-a-colon-slash-slash-b.html",
-+ "protocol": "a:",
-+ "username": "",
-+ "password": "",
-+ "host": "b",
-+ "hostname": "b",
-+ "port": "",
-+ "pathname": "/test-a-colon-slash-slash-b.html",
-+ "search": "",
-+ "hash": ""
-+ },
-+ "Null code point in fragment",
-+ {
-+ "input": "http://example.org/test?a#b\u0000c",
-+ "base": "about:blank",
-+ "href": "http://example.org/test?a#bc",
-+ "protocol": "http:",
-+ "username": "",
-+ "password": "",
-+ "host": "example.org",
-+ "hostname": "example.org",
-+ "port": "",
-+ "pathname": "/test",
-+ "search": "?a",
-+ "hash": "#bc"
- }
- ]
-diff -u -r --new-file seamonkey-2.53.1.orig/mozilla/toolkit/library/rust/Cargo.lock seamonkey-2.53.1/mozilla/toolkit/library/rust/Cargo.lock
---- seamonkey-2.53.1.orig/mozilla/toolkit/library/rust/Cargo.lock 2020-02-17 17:39:43.000000000 -0600
-+++ seamonkey-2.53.1/mozilla/toolkit/library/rust/Cargo.lock 2020-02-29 21:16:23.120772244 -0600
-@@ -808,7 +808,7 @@
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "nserror 0.1.0",
- "nsstring 0.1.0",
-- "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
-
- [[package]]
-@@ -1154,7 +1154,7 @@
-
- [[package]]
- name = "url"
--version = "1.5.1"
-+version = "1.7.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- dependencies = [
- "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1383,7 +1383,7 @@
- "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f"
- "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
- "checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91"
--"checksum url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"
-+"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
- "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
- "checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c"
- "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"